Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Soundex给出了太多的建议_Java_Algorithm_Soundex - Fatal编程技术网

Java Soundex给出了太多的建议

Java Soundex给出了太多的建议,java,algorithm,soundex,Java,Algorithm,Soundex,所以我正在用Java编写一个小的拼写检查程序。该计划必须: 检查单词是否在“dictionary.txt”文件中(包含88000多个单词) 如果该单词不在该词典中,请使用编辑距离/Soundex算法获取一些建议 提示用户-询问他们是否愿意用其中一个建议替换该单词 我发现的问题是,对于一个单词,我的Soundex实现可以返回20多个建议,这些建议我都放在ArrayList中了 现在,当提示用户时,我意识到在每个拼写错误上选择20个不同的单词是不友好的,我想稍微改进一下结果。但是我被难倒了。我不知道

所以我正在用Java编写一个小的拼写检查程序。该计划必须:

  • 检查单词是否在“dictionary.txt”文件中(包含88000多个单词)
  • 如果该单词不在该词典中,请使用编辑距离/Soundex算法获取一些建议
  • 提示用户-询问他们是否愿意用其中一个建议替换该单词
  • 我发现的问题是,对于一个单词,我的Soundex实现可以返回20多个建议,这些建议我都放在ArrayList中了

    现在,当提示用户时,我意识到在每个拼写错误上选择20个不同的单词是不友好的,我想稍微改进一下结果。但是我被难倒了。我不知道如何避免使用某些单词,例如,如果用户输入“dawg”是因为他们不知道如何拼写dog,那么他们可以从80条建议中进行选择

    我考虑在我的ArrayList中循环并显示如下建议:

  • 挖掘
  • 挖掘
  • 达格
  • 并让用户输入1、2或3。然而,当建议的数量变得相当高时,对用户来说就成了一项相当艰巨的任务

    这是我使用的当前算法,它不是原始算法,但声称比原始算法工作得更好:


    由于这更像是一个逻辑问题,而不是一个编程问题,如果这不属于这里,请给我指出正确的位置。

    您如何将单词的Soundex表示法与词典进行比较?你确定你正确地实现了“改进的”算法,并且它实际上比原来的更好吗?另外,您的第2步是“使用编辑距离/Soundex算法”。此时您是否使用Soundex以外的任何东西?我也在使用Levenshteins(在不同的步骤中),尽管我目前正在尝试修复它的实现中似乎有一个小错误。我所做的是循环浏览字典,并将当前单词的Soundex与字典中当前单词的Soundex进行比较。现在,虽然用Levenshteins解决这个问题对我来说更为重要,所以我稍后会回到Soundex优化,感谢您在此期间提出的任何建议。不,我可以诚实地说,在实施“改进”算法时,我跳过了一个细节,最终结果与原始算法相同。我现在就解决这个问题。你如何将单词的Soundex表示法与字典进行比较?你确定你正确地实现了“改进的”算法,并且它实际上比原来的更好吗?另外,您的第2步是“使用编辑距离/Soundex算法”。此时您是否使用Soundex以外的任何东西?我也在使用Levenshteins(在不同的步骤中),尽管我目前正在尝试修复它的实现中似乎有一个小错误。我所做的是循环浏览字典,并将当前单词的Soundex与字典中当前单词的Soundex进行比较。现在,虽然用Levenshteins解决这个问题对我来说更为重要,所以我稍后会回到Soundex优化,感谢您在此期间提出的任何建议。不,我可以诚实地说,在实施“改进”算法时,我跳过了一个细节,最终结果与原始算法相同。我现在就把它修好。