我有大量的人名(例如“john smith”)。我想按名字查找其中的人。但是,某些查询会拼写错误(例如“jon smth”、“johnsm ith”)。是否有任何带有 Python 绑定的拼写更正库可以为我找到拼写更正的匹配项?
我知道 Whoosh 和 Python-aspell。Whoosh 的拼写更正对我来说不太有效,因为它将正确拼写的集合写入磁盘而不是将其存储在内存中。这使得查找对我的应用程序来说太慢了。由于代码的结构方式,更改此行为似乎并非易事。同样,Whoosh 不会对不同的字符编辑进行不同的加权,即使“y”更容易与“i”(“jim kazinsky”->“jim kazinski”)混淆,而不是“z” .
Aspell 不能很好地处理人名,因为名称通常包含空格——Aspell 认为单词是更正的基本单位。另外,据我了解,Aspell 使用 n-gram 拼写校正模型,而不是字符编辑距离模型。虽然 n-gram 模型对字典单词有意义,但它不适用于名称:人们“bob ruzatoxg”和“joe ruzatoxg”有很多稀有的三元组,因为他们有相同的稀有姓氏. 但他们显然是不同的人。
我还应该提到,我不能只将每个查询与集合中的所有条目进行比较——这太慢了。一些索引需要预先建立。
谢谢!