Class SymSpellRule


  • @Experimental
    public class SymSpellRule
    extends SpellingCheckRule
    spell checking using SymSpell algorithm, implementation from https://github.com/Lundez/JavaSymSpell in org.languagetool.rules.spelling.symspell.implementation potential faster alternative to Morfologik, especially in generating suggestions
    • Field Detail

      • spellerCache

        private static final com.google.common.cache.LoadingCache<Language,​SymSpell> spellerCache
      • ignoredWordsCache

        private static final com.google.common.cache.LoadingCache<Language,​java.util.Set<java.lang.String>> ignoredWordsCache
      • prohibitedWordsCache

        private static final com.google.common.cache.LoadingCache<Language,​java.util.Set<java.lang.String>> prohibitedWordsCache
      • defaultDictSpeller

        protected final SymSpell defaultDictSpeller
      • userDictSpeller

        protected final SymSpell userDictSpeller
      • editDistance

        private int editDistance
    • Constructor Detail

      • SymSpellRule

        public SymSpellRule​(java.util.ResourceBundle messages,
                            Language language,
                            UserConfig userConfig)
      • SymSpellRule

        public SymSpellRule​(java.util.ResourceBundle messages,
                            Language language,
                            UserConfig userConfig,
                            java.util.List<Language> altLanguages)
      • SymSpellRule

        public SymSpellRule​(java.util.ResourceBundle messages,
                            Language language,
                            UserConfig userConfig,
                            java.util.List<Language> altLanguages,
                            @Nullable
                            @Nullable LanguageModel languageModel)
    • Method Detail

      • getWordList

        @NotNull
        private static @NotNull java.util.Set<java.lang.String> getWordList​(Language lang,
                                                                            java.lang.String file)
      • getSpellingDictBaseDir

        protected static java.lang.String getSpellingDictBaseDir​(Language lang)
      • forEachLineInResources

        private static void forEachLineInResources​(java.util.List<java.lang.String> resources,
                                                   java.util.function.Consumer<java.lang.String> function)
      • initUserDictSpeller

        @Nullable
        protected static @Nullable SymSpell initUserDictSpeller​(UserConfig config)
        Parameters:
        config -
        Returns:
        Spell checker using users personal dictionary, or null if no custom speller is needed
      • initDefaultDictSpeller

        protected static SymSpell initDefaultDictSpeller​(Language lang)
      • initParameters

        private void initParameters()
      • getId

        public java.lang.String 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 characters A-Z and the underscore.
        Specified by:
        getId in class SpellingCheckRule
      • getDescription

        public java.lang.String 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 class SpellingCheckRule
      • match

        public RuleMatch[] match​(AnalyzedSentence sentence)
                          throws java.io.IOException
        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 class SpellingCheckRule
        Parameters:
        sentence - a pre-analyzed sentence
        Returns:
        an array of RuleMatch objects
        Throws:
        java.io.IOException
      • filterCandidates

        @NotNull
        private @NotNull java.util.List<java.lang.String> filterCandidates​(java.util.List<java.lang.String> candidates)
      • getSpellerMatches

        @NotNull
        private @NotNull java.util.List<java.lang.String> getSpellerMatches​(java.lang.String word,
                                                                            SymSpell speller)
      • main

        public static void main​(java.lang.String[] args)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException