人名拼写更正(Python)

2024-10-02 08:15:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我收集了大量人名(如“约翰·史密斯”)。我想在里面按名字查人。但是,有些查询会拼写错误(例如“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”有很多共同点,因为他们有相同的稀有姓氏。但他们显然是不同的人。在

我还应该指出,我不能只是将每个查询与集合中的所有条目进行比较,这样做太慢了。有些索引需要事先建立。在

谢谢!在


Tags: 模型编辑名字单词磁盘gramaspelljon
1条回答
网友
1楼 · 发布于 2024-10-02 08:15:56

听起来好像(这里没有双关语),您需要某种形式的Metaphone algorithm,它已经在Python中实现,可以在Pypi:http://pypi.python.org/pypi/Metaphone/0.4上使用。在

还有其他算法,比如Levenshtein和{a4}(还没有找到可靠的Python实现)-您可能需要使用其中一个以上的方法来计算某种形式的度量(甚至可能对每个结果赋予不同的权重),从而得出可能更正的结果列表。在

相关问题 更多 >

    热门问题