检查文本是否包含词汇表中的任何单词?

时间:2018-02-22 10:50:49

标签: string python-3.x

如果给出一个可迭代的单词(数十万个单词),那么是否存在一个有效的现有库,用于检查可迭代中的任何单词是否包含在字符串中?

我可以轻松制作一个非常长的正则表达式模式,或者将所有单词组合在一起,然后尝试将该正则表达式与我的字符串进行匹配。主要是想知道我可以使用哪些更清洁的东西,从那以后我不需要担心逃避出现在单词中的任何可能的特殊字符。

换句话说,就像:

words = ['foo', 'bar', 'baz']
finder = WordFinder(words)
finder.find('sdfs s dfs df sdfsdfsdfoo sdf sdf') # True
finder.find('sdfasdfasdfa barasdfs') # True
finder.find('sdfsadsfs f sd fsa f df asdf sd fs') # False

我已经基于正则表达式编写了这样的类,所以希望我可以删除该代码。

1 个答案:

答案 0 :(得分:0)

也许Aho-Corasick符合您的要求?

这是维基页面:https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm

实现它的Python模块:https://pypi.python.org/pypi/pyahocorasick

相关问题