欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ahocorasick 的使用中出现的问题和简单使用

程序员文章站 2022-07-10 20:22:32
...

优点

ahocorasick可以用来实现字符串匹配,如利用已有的文档创建一棵树,想知道用户输入的一句话与这个树上的数据的交集,可以用它来快速实现,优点是可以有效减轻cpu消耗。

使用中出现的问题

如果使用pycharm,可以直接使用在setting中的project interpreter中的“+”添加。
在使用这个方法时,直接搜索 ahocorasick,如果你是用的是python3.7,会发现找不到pyahocorasick,只有现显示 r-ahocorasicktrie,换成python3.6就可以找到了 pyahocorasick,ahocorasick-python,ahocorasick。直接点击安装ahocorasick,会报错找不到该模块。索性点击剩下两个都安装。运行程序时,报错找不到属性Automaton,卸载ahocorasick-python即可。
总结就是使用python3.6安装pyahocorasick。

简单使用

# pip install pyahocorasick  # 注意python版本
import ahocorasick  # 注意去掉 pyahocorasick 前的 py

# 往actree中添加数据
actree = ahocorasick.Automaton()
for index, word in enumerate(wordlist):
	actree.add_word(word, (index, word))  
actree.make_automaton()

# 使用actree来查询目标语句中出现在actree中的关键词
for i in actree.iter(target_str):
    wd = i[1][1]  # i的形式为(index,(index,word))
    target_wds.append(wd)

# 附加功能:可能出现一个词分成几个部分,把这个部分过滤掉
stop_wds = []
for wd1 in target_wds:
    for wd2 in target_wds:
        if wd1 in wd2 and wd1 != wd2:
            stop_wds.append(wd1)
final_wds = [i for i in target_wds if i not in stop_wds]