我正在尝试进行拼写检查。我的代码的工作原理是,它能够检测何时出现拼写错误,我通过使用包含大量单词的文本文件来比较用户输入的正确/不正确拼写来做到这一点。问题是,我正在尝试实现一种方法,以提出有关拼写错误的建议,而不仅仅是说明拼写错误。
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;
}
}
总体上,我对它可以检测到错误的拼写感到满意,但是当拼写不正确时,有一种方法可以为用户输入提供建议。先感谢您。
答案 0 :(得分:0)
您可以使用字符串距离度量(如编辑距离或levenshtein距离)来查找字典中哪些单词最接近输入单词。这是拼写推荐器的一种非常基本的形式,但仍然是您的任务的重要补充。
例如,如果输入的单词是“ gat”,则最接近的单词可以是“ mat”,“ cat”等。您可以选择最多显示n条建议。您将轻松找到多种资源来帮助您实现这些算法。
参考: