如何有效地找到一组术语和一组句子之间的所有模糊匹配



我有一个句子列表(例如:"这是一个例句")和术语表(例如:"句子","例句"),并且需要找到所有与某个Levenshtein比率截断的句子匹配的术语。

我怎样才能做得足够快?拆分句子,使用FTS来查找出现在术语中的单词,并按比例过滤术语,这些都是有效的,但速度很慢。现在我正在使用sphinxsearch + python-Levelshtein,有更好的工具吗?

反向搜索:FTS匹配句子中的词会更快吗?

如果速度是一个真正的问题,如果您的术语表不会经常更新,与您想要进行的搜索次数相比,您可以查看Levenshtein Automaton之类的东西。我不知道有什么python库支持它,但是如果你真的需要的话,你可以自己实现它。要找到所有可能的路径需要一些动态规划。

如果您只是需要完成它,只需循环遍历术语表并针对字符串中的每个单词测试每个术语表。这应该能在多项式时间内得到答案。如果您使用的是多核处理器,那么并行执行可能会获得一些加速。

最新更新