2011-04-05 36 views
2

我开始在这里编写程序来检查用户输入的字是否正确,那么程序将有能力从点对点字母/ s的字母/ s。能够通过这一点将字母移到那一点,只是为了纠正依赖于.txt文件中单词列表的单词。从文件中检查输入的字符串包含允许的字

例如输入:

"tihs is nto a corerct sentnece" (this is not a correct sentence) 

如果用户输入了错误的字/秒,程序将扫描的文本文件,然后找到最正确的近的字来纠正错误输入的单词,然后该程序必须纠正的能力并输出如下正确的句子:

"this is not a correct sentence" from (tihs is nto a corerct sentnece) 

根据.txt文件扫描每个不正确的单词/ s。

我的问题是,我将如何开始编码这个东西?谢谢...

+4

一个地方开始是[Levenshtein距离](http://en.wikipedia.org/wiki/Levenshtein_distance)。 – 2011-04-05 01:49:20

+0

@ Mark Elliot:哇,非常酷! – mre 2011-04-05 02:37:07

+0

感谢Mark Elliot,这非常有帮助。 – 2011-04-05 02:51:44

回答

2

首先,你显然需要找到拼写错误的单词。接下来,您应该确定一种为可能正确的单词选择值的方法。即“folor”可能是混乱的字母的“floor”,或者是“f”的“color”,而不是“c”等等。在这种情况下,两个单词都非常接近:两个混合字母和一个字符替换键盘上靠近它的另一个字符。您必须根据您认为的更常见的错误来分配每个值。一般来说,您可以将每个字的值设置为优先队列,然后从那里拉出。 但是,如果唯一的情况是所描述的情况(交换字母),那么就样本量而言,它会稍微简单一些,但您仍然必须为每个单词指定一个值。

注:nto也可以固定吨。如果你想摆脱这种可能性,你也必须检查语法。

+0

感谢您的回复。你已经帮了我很多... – 2011-04-05 02:57:44

3

"How to write a spelling corrector"由彼得·诺维格:

的工业强度的法术校正像谷歌的的全部细节会比启发较为混乱,但我想,在飞机上飞行家,在不到一个页面的代码,我可以写一个玩具拼写校正器,以至少每秒10个字的处理速度达到80或90%的准确度。

Peter Norvig是一位非常有才华的计算机科学家,也是一位出色的解说员,所以我强烈推荐他的博客。

+0

谢谢麦克塞缪尔,我会仔细研究并仔细阅读上面的建议(“如何写一个拼写纠正器”)。非常感谢答复。这会帮助我很多。 – 2011-04-05 02:58:38

+0

你能解释java中的Python 2.5代码吗?我对Python的代码不太熟悉。谢谢... – 2011-04-05 03:08:55

相关问题