Package org.languagetool.rules.spelling
Class SpellingCheckRule
java.lang.Object
org.languagetool.rules.Rule
org.languagetool.rules.spelling.SpellingCheckRule
- Direct Known Subclasses:
HunspellRule
,MorfologikSpellerRule
,SymSpellRule
An abstract rule for spellchecking rules.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List
<RuleWithLanguage> private List
<DisambiguationPatternRule> private boolean
private boolean
private static final String
private static final String
private static final String
protected int
protected final Language
protected @Nullable LanguageModel
static final String
The stringLanguageTool
.static final String
The stringLanguageTooler
.private static final String
private static final String
private static final String
private static final String
private static final Comparator
<String> private final UserConfig
protected final CachingWordListLoader
-
Constructor Summary
ConstructorsConstructorDescriptionSpellingCheckRule
(ResourceBundle messages, Language language, UserConfig userConfig) SpellingCheckRule
(ResourceBundle messages, Language language, UserConfig userConfig, List<Language> altLanguages) SpellingCheckRule
(ResourceBundle messages, Language language, UserConfig userConfig, List<Language> altLanguages, @Nullable LanguageModel languageModel) -
Method Summary
Modifier and TypeMethodDescriptionprotected Language
void
acceptPhrases
(List<String> phrases) Accept (case-sensitively, unless at the start of a sentence) the given phrases even though they are not in the built-in dictionary.void
addIgnoreTokens
(List<String> tokens) Add the given words to the list of words to be ignored during spell check.protected void
addIgnoreWords
(String line) protected void
addProhibitedWords
(List<String> words) protected static void
addSuggestionsToRuleMatch
(String word, List<String> userCandidates, List<String> candidates, @Nullable SuggestionsOrderer orderer, RuleMatch match) protected RuleMatch
createWrongSplitMatch
(AnalyzedSentence sentence, List<RuleMatch> ruleMatchesSoFar, int pos, String coveredWord, String suggestion1, String suggestion2, int prevPos) expandLine
(String line) Expand suffixes in a line.protected void
filterDupes
(List<String> words) filterSuggestions
(List<String> suggestions, AnalyzedSentence sentence, int i) Remove prohibited words from suggestions.Get the name of the prohibit file, which lists words not to be accepted, even when the spell checker would accept them.Get the name of additional spelling file, which lists words to be accepted and used for suggestions, even when the spell checker would not accept them.getAdditionalSuggestions
(List<String> suggestions, String word) Get additional suggestions added after other suggestions (note the rule may choose to re-order the suggestions anyway).getAdditionalTopSuggestions
(List<String> suggestions, String word) Get additional suggestions added before other suggestions (note the rule may choose to re-order the suggestions anyway).protected List
<RuleWithLanguage> getAlternativeLangSpellingRules
(List<Language> alternativeLanguages) Overwrite this to avoid false alarms by ignoring these patterns - note that yourRule.match(AnalyzedSentence)
method needs to callRule.getSentenceWithImmunization(org.languagetool.AnalyzedSentence)
for this to be used and you need to checkAnalyzedTokenReadings.isImmunized()
abstract String
A short description of the error this rule can detect, usually in the language of the text that is checked.abstract String
getId()
A string used to identify the rule in e.g.protected String
Get the name of the ignore file, which lists words to be accepted, even when the spell checker would not accept them.Get the name of the spelling file for a language variant (e.g., en-US or de-AT), which lists words to be accepted and used for suggestions, even when the spell checker would not accept them.protected String
Get the name of the prohibit file, which lists words not to be accepted, even when the spell checker would accept them.Get the name of the spelling file, which lists words to be accepted and used for suggestions, even when the spell checker would not accept them.private List
<PatternToken> getTokensForSentenceStart
(String[] parts) protected boolean
ignoreToken
(AnalyzedTokenReadings[] tokens, int idx) Returns true iff the token at the given position should be ignored by the spell checker.protected boolean
ignoreWord
(String word) Returns true iff the word should be ignored by the spell checker.protected boolean
ignoreWord
(List<String> words, int idx) Returns true iff the word at the given position should be ignored by the spell checker.protected void
init()
boolean
Whether this is a spelling rule that uses a dictionary.protected boolean
private boolean
isIgnoredNoCase
(String word) abstract boolean
isMisspelled
(String word) protected boolean
isProhibited
(String word) Whether the word is prohibited, i.e.private boolean
isProperNoun
(String wordWithoutS) protected boolean
abstract RuleMatch[]
match
(AnalyzedSentence sentence) Check whether the given sentence matches this error rule, i.e.reorderSuggestions
(List<String> suggestions, String word) void
setConsiderIgnoreWords
(boolean considerIgnoreWords) Set whether the list of words to be explicitly ignored (set withaddIgnoreTokens(List)
) is considered at all.void
setConvertsCase
(boolean convertsCase) Used to determine whether the dictionary will use case conversions for spell checking.protected int
startsWithIgnoredWord
(String word, boolean caseSensitive) Checks whether aword
starts with an ignored word.private void
Methods inherited from class org.languagetool.rules.Rule
addExamplePair, estimateContextForSureMatch, getCategory, getConfigureText, getCorrectExamples, getDefaultValue, getErrorTriggeringExamples, getIncorrectExamples, getLocQualityIssueType, getMaxConfigurableValue, getMinConfigurableValue, getSentenceWithImmunization, getUrl, hasConfigurableValue, isDefaultOff, isDefaultTempOff, isOfficeDefaultOff, isOfficeDefaultOn, makeAntiPatterns, setCategory, setCorrectExamples, setDefaultOff, setDefaultOn, setDefaultTempOff, setErrorTriggeringExamples, setIncorrectExamples, setLocQualityIssueType, setOfficeDefaultOff, setOfficeDefaultOn, setUrl, supportsLanguage, toRuleMatchArray, useInOffice
-
Field Details
-
LANGUAGETOOL
The stringLanguageTool
.- Since:
- 2.3
- See Also:
-
LANGUAGETOOLER
The stringLanguageTooler
.- Since:
- 4.4
- See Also:
-
language
-
languageModel
- Since:
- 4.5 For rules from @see Language.getRelevantLanguageModelCapableRules Optional, allows e.g. better suggestions when set
-
wordListLoader
-
SPELLING_IGNORE_FILE
- See Also:
-
SPELLING_FILE
- See Also:
-
CUSTOM_SPELLING_FILE
- See Also:
-
GLOBAL_SPELLING_FILE
- See Also:
-
SPELLING_PROHIBIT_FILE
- See Also:
-
CUSTOM_SPELLING_PROHIBIT_FILE
- See Also:
-
SPELLING_FILE_VARIANT
-
STRING_LENGTH_COMPARATOR
-
userConfig
-
wordsToBeIgnored
-
wordsToBeProhibited
-
altRules
-
wordsToBeIgnoredDictionary
-
wordsToBeIgnoredDictionaryIgnoreCase
-
antiPatterns
-
considerIgnoreWords
private boolean considerIgnoreWords -
convertsCase
private boolean convertsCase -
ignoreWordsWithLength
protected int ignoreWordsWithLength
-
-
Constructor Details
-
SpellingCheckRule
-
SpellingCheckRule
public SpellingCheckRule(ResourceBundle messages, Language language, UserConfig userConfig, List<Language> altLanguages) - Since:
- 4.4
-
SpellingCheckRule
@Experimental public SpellingCheckRule(ResourceBundle messages, Language language, UserConfig userConfig, List<Language> altLanguages, @Nullable @Nullable LanguageModel languageModel) - Since:
- 4.5
-
-
Method Details
-
addSuggestionsToRuleMatch
protected static void addSuggestionsToRuleMatch(String word, List<String> userCandidates, List<String> candidates, @Nullable @Nullable SuggestionsOrderer orderer, RuleMatch match) - Parameters:
word
- misspelled word that suggestions should be generated foruserCandidates
- candidates from personal dictionarycandidates
- candidates from default dictionaryorderer
- model to rank suggestions / extract features, or nullmatch
- rule match to add suggestions to
-
createWrongSplitMatch
-
getId
Description copied from class:Rule
A string used to identify the rule in e.g. configuration files. This string is supposed to be unique and to stay the same in all upcoming versions of LanguageTool. It's supposed to contain only the charactersA-Z
and the underscore. -
getDescription
Description copied from class:Rule
A short description of the error this rule can detect, usually in the language of the text that is checked.- Specified by:
getDescription
in classRule
-
match
Description copied from class:Rule
Check whether the given sentence matches this error rule, i.e. whether it contains the error detected by this rule. Note that the order in which this method is called is not always guaranteed, i.e. the sentence order in the text may be different than the order in which you get the sentences (this may be the case when LanguageTool is used as a LibreOffice/OpenOffice add-on, for example).- Specified by:
match
in classRule
- Parameters:
sentence
- a pre-analyzed sentence- Returns:
- an array of
RuleMatch
objects - Throws:
IOException
-
isMisspelled
- Throws:
IOException
- Since:
- 4.8
-
isDictionaryBasedSpellingRule
public boolean isDictionaryBasedSpellingRule()Description copied from class:Rule
Whether this is a spelling rule that uses a dictionary. Rules that returntrue
here are basically rules that work like a simple hunspell-like spellchecker: they check words without considering the words' context.- Overrides:
isDictionaryBasedSpellingRule
in classRule
-
addIgnoreTokens
Add the given words to the list of words to be ignored during spell check. You might want to useacceptPhrases(List)
instead, as only that can also deal with phrases. -
updateIgnoredWordDictionary
private void updateIgnoredWordDictionary() -
setConsiderIgnoreWords
public void setConsiderIgnoreWords(boolean considerIgnoreWords) Set whether the list of words to be explicitly ignored (set withaddIgnoreTokens(List)
) is considered at all. -
getAdditionalTopSuggestions
protected List<String> getAdditionalTopSuggestions(List<String> suggestions, String word) throws IOException Get additional suggestions added before other suggestions (note the rule may choose to re-order the suggestions anyway). Only add suggestions here that you know are spelled correctly, they will not be checked again before being shown to the user.- Throws:
IOException
-
getAdditionalSuggestions
Get additional suggestions added after other suggestions (note the rule may choose to re-order the suggestions anyway). -
ignoreToken
Returns true iff the token at the given position should be ignored by the spell checker.- Throws:
IOException
-
ignoreWord
Returns true iff the word should be ignored by the spell checker. If possible, useignoreToken(AnalyzedTokenReadings[], int)
instead.- Throws:
IOException
-
isIgnoredNoCase
-
ignoreWord
Returns true iff the word at the given position should be ignored by the spell checker. If possible, useignoreToken(AnalyzedTokenReadings[], int)
instead.- Throws:
IOException
- Since:
- 2.6
-
setConvertsCase
public void setConvertsCase(boolean convertsCase) Used to determine whether the dictionary will use case conversions for spell checking.- Parameters:
convertsCase
- if true, then conversions are used.- Since:
- 2.5
-
isUrl
-
isEMail
-
filterDupes
-
init
- Throws:
IOException
-
getIgnoreFileName
Get the name of the ignore file, which lists words to be accepted, even when the spell checker would not accept them. Unlike withgetSpellingFileName()
the words in this file will not be used for creating suggestions for misspelled words.- Since:
- 2.7
-
getSpellingFileName
Get the name of the spelling file, which lists words to be accepted and used for suggestions, even when the spell checker would not accept them.- Since:
- 2.9, public since 3.5
-
getAdditionalSpellingFileNames
Get the name of additional spelling file, which lists words to be accepted and used for suggestions, even when the spell checker would not accept them.- Since:
- 4.8
-
getLanguageVariantSpellingFileName
Get the name of the spelling file for a language variant (e.g., en-US or de-AT), which lists words to be accepted and used for suggestions, even when the spell checker would not accept them.- Since:
- 4.3
-
getProhibitFileName
Get the name of the prohibit file, which lists words not to be accepted, even when the spell checker would accept them.- Since:
- 2.8
-
getAdditionalProhibitFileNames
Get the name of the prohibit file, which lists words not to be accepted, even when the spell checker would accept them.- Since:
- 2.8
-
isProhibited
Whether the word is prohibited, i.e. whether it should be marked as a spelling error even if the spell checker would accept it. (This is useful to improve our spell checker without waiting for the upstream checker to be updated.)- Since:
- 2.8
-
filterSuggestions
protected List<String> filterSuggestions(List<String> suggestions, AnalyzedSentence sentence, int i) Remove prohibited words from suggestions.- Since:
- 2.8
-
isProperNoun
-
addIgnoreWords
- Parameters:
line
- the line as read fromspelling.txt
.- Since:
- 2.9, signature modified in 3.9
-
addProhibitedWords
- Parameters:
words
- list of words to be prohibited.- Since:
- 4.2
-
expandLine
Expand suffixes in a line. By default, the line is not expanded. Implementations might e.g. turnbicycle/S
into[bicycle, bicycles]
.- Since:
- 3.0
-
getAlternativeLangSpellingRules
protected List<RuleWithLanguage> getAlternativeLangSpellingRules(List<Language> alternativeLanguages) -
acceptedInAlternativeLanguage
- Throws:
IOException
-
acceptPhrases
Accept (case-sensitively, unless at the start of a sentence) the given phrases even though they are not in the built-in dictionary. Use this to avoid false alarms on e.g. names and technical terms. UnlikeaddIgnoreTokens(List)
this can deal with phrases. A way to call this is like this:rule.acceptPhrases(Arrays.asList("duodenal atresia"))
This way, checking would not create an error for "duodenal atresia", but it would still create and error for "duodenal" or "atresia" if they appear on their own.- Since:
- 3.3
-
getTokensForSentenceStart
-
getAntiPatterns
Description copied from class:Rule
Overwrite this to avoid false alarms by ignoring these patterns - note that yourRule.match(AnalyzedSentence)
method needs to callRule.getSentenceWithImmunization(org.languagetool.AnalyzedSentence)
for this to be used and you need to checkAnalyzedTokenReadings.isImmunized()
- Overrides:
getAntiPatterns
in classRule
-
startsWithIgnoredWord
Checks whether aword
starts with an ignored word. Note that a minimumword
-length of 4 characters is expected. (This is for better performance. Moreover, such short words are most likely contained in the dictionary.)- Parameters:
word
- - entire wordcaseSensitive
- - determines whether the check is case-sensitive- Returns:
- length of the ignored word (i.e., return value is 0, if the word does not start with an ignored word). If there are several matches from the set of ignored words, the length of the longest matching word is returned.
- Since:
- 3.5
-
reorderSuggestions
-