作者姓名的近似字符串匹配-模块和策略

Mis*_*ion 5 python difflib python-2.7

我创建了一个小程序,用于检查作者数据库中是否存在作者。我尚未找到解决此问题的任何特定模块,因此我正在使用用于近似字符串匹配的模块从头开始编写它。

该数据库包含大约6000名作者,并且格式很差(许多错字,变化形式和标题,例如“ Dr.”等)。查询作者列表通常在500-1000之间(并且我有很多这样的列表),因此速度非常重要。

我的一般策略是尽可能地修剪和过滤数据库,并寻找完全匹配的内容。如果找不到匹配项,我继续进行近似字符串匹配。

我目前正在使用内置的功能,difflib.get_close_matches它完全可以实现我想要的功能,但是它非常慢(几分钟)。因此,我正在寻找其他选择:

  • 什么是最快的模块,它可以返回数据库中给出查询字符串的某个阈值以上的最好3个匹配项?
  • 比较两个字符串最快的模块是什么?

我发现的唯一一个模糊模糊,比difflib还要慢。

jim*_*imf 0

Python 的自然语言工具包(nltk)可能有一些额外的资源你可以尝试 -这个谷歌小组线程似乎是一个很好的开始。只是一个想法。