我收集了大量人名(如“约翰·史密斯”)。我想在里面按名字查人。但是,有些查询会拼写错误(例如“jon smth”,“johnsmith”)。是否有任何带有Python绑定的拼写更正库可以为我找到拼写更正匹配项?在
我知道Whoosh和Python-aspell。Whoosh的拼写更正对我来说不太管用,因为它将正确拼写的集合写入磁盘,而不是存储在内存中。这使得查找对于我的应用程序来说太慢了。改变这种行为似乎并不容易,因为代码是如何结构化的。此外,Whoosh对不同角色编辑的权重不同,即使“y”比“z”更容易与“i”(“jim kazinsky”->;“jim kazinski”)混淆。在
Aspell不能很好地处理人名,因为人名通常包含空格——Aspell认为单词是更正的基本单位。另外,据我所知,Aspell使用n-gram拼写更正模型,而不是字符编辑距离模型。虽然n-gram模型对于字典单词来说是有意义的,但是对于名字来说却不太好用:人们“bob ruzatoxg”和“joe ruzatoxg”有很多共同点,因为他们有相同的稀有姓氏。但他们显然是不同的人。在
我还应该指出,我不能只是将每个查询与集合中的所有条目进行比较,这样做太慢了。有些索引需要事先建立。在
谢谢!在
听起来好像(这里没有双关语),您需要某种形式的Metaphone algorithm,它已经在Python中实现,可以在Pypi:http://pypi.python.org/pypi/Metaphone/0.4上使用。在
还有其他算法,比如Levenshtein和{a4}(还没有找到可靠的Python实现)-您可能需要使用其中一个以上的方法来计算某种形式的度量(甚至可能对每个结果赋予不同的权重),从而得出可能更正的结果列表。在
相关问题 更多 >
编程相关推荐