Ahocorasick搜索树返回索引越界

时间:2013-11-16 17:51:37

标签: python string string-matching aho-corasick

我在这里使用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)

以前有人面对这种情况吗?为什么会这样?

1 个答案:

答案 0 :(得分:3)

我遇到了完全相同的问题。它应该是模块的缺陷。毕竟,它自2005年以来一直没有被修改过。我使用https://code.google.com/p/esmre/代替。它找到了工作。试试吧!