我在这里使用python包ahocorasick(https://hkn.eecs.berkeley.edu/~dyoo/python/ahocorasick/)进行文本匹配:
import ahocorasick
states = {
'AK': 'Alaska',
'AL': 'Alabama',
'AR': 'Arkansas',
'AS': 'American Samoa',
'AZ': 'Arizona',
'CA': 'California',
'CO': 'Colorado',
'CT': 'Connecticut'
}
def LoadKeywords(keywords):
#Keyword should be a list
tree = ahocorasick.KeywordTree()
for k in keywords:
tree.add(k)
tree.make()
return tree
keywordLong = states.values();
keywordLongTree = LoadKeywords(keywordLong);
然后我尝试做搜索
keywordLongTree.search("Alabama")
它返回
(0, 7)
哪个好,合法,但是当我做的时候
keywordLongTree.search("I don't know why this happen")
它应该返回一个NONE对象,但它返回:
(145331, 145335)
以前有人面对这种情况吗?为什么会这样?
答案 0 :(得分:3)
我遇到了完全相同的问题。它应该是模块的缺陷。毕竟,它自2005年以来一直没有被修改过。我使用https://code.google.com/p/esmre/代替。它找到了工作。试试吧!