2

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

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

这个相关问题有一些有趣的答案,包括使用Aho-Corasick 算法。有许多语言的库,包括Python。但是,它似乎不支持模糊搜索(即容忍拼写错误)。

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

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

有任何想法吗?

4

1 回答 1

1

Elasticsearch 支持模糊匹配:请参阅此处的文档。

于 2016-11-16T22:52:33.327 回答