更新拼写检查器中的正确拼写

时间:2019-02-08 09:08:19

标签: java spell-checking

我正在尝试进行拼写检查。我的代码的工作原理是,它能够检测何时出现拼写错误,我通过使用包含大量单词的文本文件来比较用户输入的正确/不正确拼写来做到这一点。问题是,我正在尝试实现一种方法,以提出有关拼写错误的建议,而不仅仅是说明拼写错误。

public class SpellChecker2 {

    public static void main(String[] args) throws FileNotFoundException {

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a String"); 
        String userWord = input.nextLine();

        final String theDictionary = "dictionary.txt";
        String[] words = dictionary(theDictionary);
        boolean correctSpelling = checking(words, userWord);

        if (!correctSpelling) {
            System.out.println("Incorrect spelling");
        }
        else {
            System.out.println("The spelling is correct");
        }
    }

    public static String[] dictionary(String filename) throws FileNotFoundException {
        final String fileName = "dictionary.txt";
        int dictionaryLength = 0, i = 0;

        try (Scanner dictionary = new Scanner(new File(fileName))) {
            while (dictionary.hasNextLine()) {
                ++dictionaryLength;
                dictionary.nextLine();
            }
        }
        String[] theWords = new String[dictionaryLength];
        try (Scanner dictionary = new Scanner(new File(fileName))) {
            while (dictionary.hasNextLine()) {
                theWords[i] = dictionary.nextLine();
                i++;
            }
        }
        return theWords;
    }

    public static boolean checking(String[] dictionary, String userWord) {
        for ( int i =0; i < dictionary.length; i++) {
            if (userWord.equals(dictionary[i])) {
                return true;
            }
        }
        return false;
    }
}

总体上,我对它可以检测到错误的拼写感到满意,但是当拼写不正确时,有一种方法可以为用户输入提供建议。先感谢您。

1 个答案:

答案 0 :(得分:0)

您可以使用字符串距离度量(如编辑距离或levenshtein距离)来查找字典中哪些单词最接近输入单词。这是拼写推荐器的一种非常基本的形式,但仍然是您的任务的重要补充。

例如,如果输入的单词是“ gat”,则最接近的单词可以是“ mat”,“ cat”等。您可以选择最多显示n条建议。您将轻松找到多种资源来帮助您实现这些算法。

参考:

https://en.wikipedia.org/wiki/Edit_distance

https://en.wikipedia.org/wiki/Levenshtein_distance