【问题标题】:How can I efficiently find all people mentioned in some text, while tolerating spelling mistakes?如何在容忍拼写错误的同时有效地找到某些文本中提到的所有人?
【发布时间】:2023-04-07 08:48:01
【问题描述】:

我有一个数百万名人的名字列表(来自 Wikidata),我需要创建一个系统来有效地找到在相当短的文本中提到的所有人:它可以只是一个词(例如,“爱因斯坦” ) 到几页文本(例如维基百科页面)。

我需要系统能够容忍拼写错误(例如 Mikael Jackson 而不是 Michael Jackson)和短格式(例如 M. Jackson)。如果有歧义,它应该返回所有可能的人(例如,“George Bush”应该返回父亲和儿子,可能还有其他同音词)。

这个related question 有一些有趣的答案,包括使用Aho-Corasick algorithm。有多种语言的库,包括in Python。但是,它似乎不支持模糊搜索(即容忍拼写错误)。

我想我可以扩展词汇表以包含每个名称的所有可能拼写,但这会使词汇表太大,所以我宁愿尽可能避免这种情况(此外,我可能希望将此解决方案扩展到更多只有一个人)。

我快速浏览了Lucene/ElasticSearch,但它似乎不支持这个用例(除非我错过了)。

有什么想法吗?

【问题讨论】:

    标签: elasticsearch lucene full-text-search aho-corasick


    【解决方案1】:

    Elasticsearch 支持模糊匹配:请参阅文档 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      相关资源
      最近更新 更多