我有一个句子列表(例如“这是一个例句”)和术语表(例如“句子”,“例句”),需要找到与句子匹配的所有术语。一些Levenshtein比率。
我怎么能够足够快地完成它?拆分句子,使用FTS查找按术语出现的单词并按比例过滤术语,但速度相当慢。现在我正在使用sphinxsearch + python-Levelshtein,有更好的工具吗?
反向搜索:句子中的FTS匹配条件会更快吗?
答案 0 :(得分:0)
如果速度是一个真正的问题,并且如果您的术语词汇表不会经常更新,那么与您想要执行的搜索次数相比,您可以查看类似Levenshtein Automaton的内容。我不知道有任何支持它的python库,但如果你真的需要它,你可以自己实现它。要找到所有可能的路径,需要进行一些动态编程。
如果您只是需要完成它,只需循环遍历词汇表并针对字符串中的每个单词测试每个词。这应该给你一个多项式时间的答案。如果您使用的是多核处理器,则可以通过in parallel进行一些加速。