python第三方库AC自动机pyahocorasick的使用
2022/4/27 1:16:39
本文主要是介绍python第三方库AC自动机pyahocorasick的使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
pyahocorasick是一个快速且内存效率高的库,用于精确或近似多模式字符串搜索,这意味着您可以在某些输入文本中一次找到多个关键字符串出现。
字符串“索引”可以提前构建并保存到磁盘以便稍后重新发送。
pyahocorasick是用 C 语言实现的,并在 Python 3.6 及更高版本上进行了测试。它适用于 Linux、maOS 和 Windows。
该模块是用 C 编写的。您需要安装 C 编译器来编译本机 CPython 扩展。
安装:
pip install pyahocorasick
然后创建一个自动机:
>>> import ahocorasick >>> A = ahocorasick.Automaton()
该项模块可以用作trie,或ac自动机。
1、做为trie树的用法:
您可以将 Automaton 类用作 trie。
将一些字符串键及其关联值添加到此 trie。在这里,我们将(插入索引,原始字符串)的元组作为值关联到我们添加到 trie 的每个键字符串:
1.1 构建trie树
>>> for idx, key in enumerate('he her hers she'.split()): ... A.add_word(key, (idx, key))
1.2 trie树查询
检查 trie 中是否存在某些字符串:
>>> 'he' in A True >>> 'HER' in A False
2、下面主要介绍ac自动机的用法
创建自动机
A.make_automaton()
2.1 Automaton 类具有以下主要的 Aho-Corasick 方法:
-
make_automaton()
完成并创建 Aho-Corasick 自动机。 -
iter(string, [start, [end]])
使用提供的输入执行 Aho-Corasick 搜索过程string。为在字符串中找到的键返回元组 (end_index, value) 的迭代器。 -
iter_long(string, [start, [end]])
返回搜索最长、非重叠匹配的迭代器(AutomatonSearchIterLong 类的对象)。
2.2 直接看代码
#ac自动机 import ahocorasick as ah aca= ah.Automaton() with open('userdict.txt','r',encoding='utf-8')as f2: #加载文件 keywords = [a.strip() for a in f2.readlines()] #加载关键词 #利用 add_word方法 将关键词加入自动机! # 该方法必须包含2个参数,第一个参数是检索词,第二个参数可以任意。 # 此处第二个参数为tuple,作为检索后的返回值,类似(39, '工程总承包') 。第40个词,词为工程总承包。可以自定义。 for x in range(len(keywords)): aca.add_word(keywords[x],(x,keywords[x])) # 创建 Aho-Corasick 自动机 aca.make_automaton() with open('jianjie.txt','r',encoding='utf-8')as f: #打开要检索文档 jianjie=f.read() #读取正文(如果太多,可以分断加载,分段检索) # 开始查找 # 该方法 匹配最长的字符串 for item in aca.iter_long(jianjie): print(item) print('-'*20) # 开始查找 # 该方法 匹配所有字符串 for item in aca.iter(jianjie): print(item)
运行结果
(110, (39, '工程总承包')) (285, (313, '印刷用CTP板基')) -------------------- (110, (39, '工程总承包')) (283, (315, 'CTP')) (285, (313, '印刷用CTP板基'))
3、官网地址
https://pyahocorasick.readthedocs.io/en/latest/#aho-corasick-methods
这篇关于python第三方库AC自动机pyahocorasick的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南
- 2024-10-30Python编程入门指南
- 2024-10-30Python量化交易学习:新手入门指南
- 2024-10-30Python股票自动化交易实战入门教程
- 2024-10-29Python股票自动化交易教程:新手入门指南