当前位置: 首页 > news >正文

(一)pyahocorasick和marisa_trie,字符串快速查找的python包,自然语言处理,命名实体识别可用的高效包...

Pyahocorasick

Pyahocorasick是一个基于AC自动机算法的字符串匹配工具。它可以用于快速查找多个短字符串在一个长字符串中的所有出现位置。Pyahocorasick可以在构建状态机时使用多线程,从而大大加快构建速度。

安装Pyahocorasick

Pyahocorasick可以使用pip命令进行安装:

pip install pyahocorasick

使用Pyahocorasick

以下是使用Pyahocorasick进行字符串匹配的示例代码:

import ahocorasick# 构建模式匹配自动机
patterns = ['he', 'she', 'his', 'hers']
automaton = ahocorasick.Automaton()
for pattern in patterns:automaton.add_word(pattern, pattern)
automaton.make_automaton()# 在文本中查找匹配
text = 'ushershewashis'
matches = []
for end_index, matched_pattern in automaton.iter(text):start_index = end_index - len(matched_pattern) + 1matches.append((matched_pattern, start_index, end_index))
print(matches)

  输出:

[('she', 1, 3), ('he', 2, 3), ('hers', 2, 5), ('she', 5, 7), ('he', 6, 7), ('his', 11, 13)]

Marisa_trie

Marisa_trie是一个高效的Trie树实现,可以用于存储和查找大量字符串。它能够压缩存储空间,并提供快速的前缀匹配和近似匹配功能。Marisa_trie还支持多种不同的序列化格式,可以在不同的程序和平台之间共享。

安装Marisa_trie

Marisa_trie可以使用pip命令进行安装:

pip install marisa-trie

使用Marisa_trie

以下是使用Marisa_trie进行字符串匹配的示例代码:

import marisa_trie# 构建trie
short_strings = ['hello', 'world', 'python','py']
trie = marisa_trie.Trie(short_strings)# 匹配长字符串
long_string = 'this is a hello world example using python hello'results = []
for i in range(len(long_string)):matches = trie.prefixes(long_string[i:])# 输出匹配结果if matches:for matche in matches:results.append((matche,i,i+len(matche)))print(results)

结果:

[('hello', 10, 15), ('world', 16, 21), ('py', 36, 38), ('python', 36, 42), ('hello', 43, 48)]

在以上示例代码中,我们首先构建了一个包含多个短字符串的Trie树。然后我们遍历文本中的所有前缀,并在Trie树中查找匹配的前缀。一旦找到匹配的前缀,我们可以计算匹配的起始和结束位置,并将它们添加到匹配列表中。

http://www.lryc.cn/news/62283.html

相关文章:

  • 基于Java+SpringBoot+vue+element驾校管理系统设计和实现
  • Unity中值类型和引用类型及使用时的注意事项
  • PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电
  • AI 这是要杀疯啦!
  • 【精品示例】超实用Python爬虫入门实例——做一个优质舔狗
  • TCP流量控制与拥塞控制
  • Java_异常
  • 自动化工具 接口自动化测试引擎
  • 十三、详解Kubernetes的存储管理器
  • java版 工程管理系统源码之提高工程项目管理软件的效率
  • VMware 安装 MS-DOS7.10 并配置网络
  • 嵌入式51单片机04-矩阵按键系列
  • 某安全对抗行走APP逆向分析
  • 数据库基础篇 《11.数据处理之增删改》
  • IDEA插件-MavenHapler
  • getaddrinfo调用crash 的debug过程
  • 【Sql】sql语句练习随记
  • IDEA社区版搭建Tomcat服务器并创建web项目
  • C++ [STL-简介]
  • 牛客前端编程语言错题2
  • 【C语言】基础语法3:控制流程结构
  • MySQL安全性:防止攻击和保护数据
  • R语言结构方程模型(SEM)
  • 软件or硬件?硬件的前途到底在哪里?
  • 同学在外包干了两年的点点点,24岁人就快废了
  • 基于Java springboot 疫情在线网课管理系统
  • Unity Camera -- (3)控制相机能看到的东西
  • 《基于深度迁移学习的可穿戴睡眠阶段分类》阅读笔记
  • java版工程管理系统源码企业工程项目管理系统简介
  • 机器学习算法 决策树