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

news/2024/4/20 23:50:49/

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.ppmy.cn/news/52050.html

相关文章

Linux设备驱动开发详解

Linux 内核系列文章 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 文章目录 Linux 内核系列文章前言一、pandas是什么?二、使用步骤1、引入库2、Linux3、C4、Java5、Spring6、Qt7、Android8、Docker9、Web10、Windows11、Py…

【MATLAB数据处理实用案例详解(13)】——利用Elman网络实现上证股市开盘价预测

目录 一、问题描述二、Elman网络预测上证股市开盘价原理三、算法步骤3.1 加载数据3.2 构造样本集3.3 划分训练集和测试集3.4 创建Elman神经网络3.5 网络训练3.6 测试 四、结果展示 一、问题描述 选择2005年6月30日至2006年12月1日的上证开盘价进行预测分析。数据保存在elm_sto…

110页智慧农业解决方案(农业信息化解决方案)(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 第一部分 智慧农业概述 智慧农业以农业资源为基础、市场为导向、效益为中心、产业化为抓手,面向农业管理部门、农技推广部门、农业企业、农业园区和基地、农业专…

4月19日驱动开发

点亮3个led灯和蜂鸣器和风扇 #ifndef __HEAD_H_ #define __HEAD_H_ typedef struct { unsigned int moder; unsigned int otyper; unsigned int ospeedr; unsigned int pupdr; unsigned int idr; unsigned int odr; }gpio_t; #define PHY_LED1 0x50006000 #define PHY_LED2…

Android 自动亮度

config_autoBrightnessLcdBacklightValues config_autoBrightnessLevels 自动背光开关 <bool name="config_automatic_brightness_available">true</bool><integer name="config_autoBrightnessBrighteningLightDebounce">2000</inte…

反射-Class类分析

反射相关的主要类 java.lang.Class&#xff1a;代表一个类&#xff0c;Class对象表示某个类加载后在堆中的对象java.lang.reflect.Method&#xff1a;代表类的方法&#xff0c;Method对象表示某个类的方法java.lang.reflect.Field&#xff1a;代表类的成员变量&#xff0c;Fie…

深度学习 - 45.MMOE Gate 简单实现 By Keras

目录 一.引言 二.MMoE 模型分析 三.MMoE 逻辑实现 • Input • Expert Output • Gate Output • Weighted Sum • Sigmoid Output • 完整代码 四.总结 一.引言 上一篇文章介绍了 MMoE 借鉴 MoE 的思路&#xff0c;为每一类输出构建一个 Gate 并最终加权多个 Exper…

alibaba arthas的新人上手教程

背景 Arthas 是Alibaba开源的Java诊断工具。 github开源地址&#xff1a;GitHub - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas 上手教程 1.下载arthas&#xff0c;并测试运行demo curl -O https://arthas.aliyun.com/arthas-boot.j…

Docker的三种网络模式

Docker的三种网络模式 Docker支持三种网络模式&#xff1a;Host模式、Bridge模式和None模式。它们各自适用于不同的场景和需求&#xff1a; Host模式&#xff1a;将容器加入到主机的网络栈中&#xff0c;使容器直接使用主机的网络接口和IP地址。Host模式适用于需要容器与主机…

GLPT团队程序设计天梯赛 2023正式赛

2023.4.22 13&#xff1a;30-16&#xff1a;30 162分 团队1556分 L1-1 最好的文档 5 15990/21484(74.43%) 在一行中输出 Good code is its own best documentation.。 #include<bits/stdc.h> using namespace std; signed main(){cout<<"Good code is its …

国考省考行测:词句理解,词的对象指代,就近原则,主语一致法,语意语境分析上下文找出指代含义

国考省考行测&#xff1a;词句理解&#xff0c;词的对象指代&#xff0c;就近原则&#xff0c;主语一致法&#xff0c;语意语境分析上下文找出指代含义 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国…

接口测试入门必会知识总结(学习笔记)

目录 什么是接口&#xff1f; 内部接口 外部接口 接口的本质 什么是接口测试&#xff1f; 反向测试 为什么说接口测试如此重要&#xff1f; 越接近底层的 Bug&#xff0c;影响用户范围越广 目前流行的测试模型 接口测试的优越性 不同协议形式的测试 接口测试工作场景…

6个好用的企业管理软件推荐

企业管理软件的范围很广&#xff0c;财务、人力、客户关系管理、ERP、客户体验管理等等。国内来看&#xff0c;有些企业管理软件产品能覆盖企业数字化所有部分&#xff0c;在每个领域&#xff0c;也有很突出的头部厂商&#xff0c;产品功能和服务都大幅领先于竞对&#xff0c;我…

大数据题目测试(一)

目录 一、环境要求 二、提交结果要求 三、数据描述 四、功能要求 1.数据准备 2.使用 Spark&#xff0c;加载 HDFS 文件系统 meituan_waimai_meishi.csv 文件&#xff0c;并分别使用 RDD和 Spark SQL 完成以下分析&#xff08;不用考虑数据去重&#xff09;。 (1)配置环境…

[k8s] 八股文

最近在基于k8s做集群管理系统&#xff0c;心里有一些问题&#xff0c;在这里记录一下。 k8s中的服务发现&#xff1f; 这一点项目中有用到。任务模块通过gprc调用用户模块的服务时&#xff0c;使用了svc-user-v0.shuwd:8002&#xff0c;k8s是怎么将该流量转发到对应的pod上的…

CI Plus简介

CI Plus简介 CI Plus是数字电视机顶盒(STB)和电视(TV)中常用的一种条件接入机制。它通过智能卡(smart card)对接收机进行认证和授权,使其能接收加密的付费电视节目信号。 CI Plus由法国的数字电视行业协会DVB开发,已成为数字电视 Conditional Access 的标准机制,广泛应用于欧洲…

oracle常用函数

1、查看表结构&#xff1a; DESC employee; 2、删除表&#xff1a; drop table myemp; 3、修改表&#xff1a; RENAME employee TO myemp; 4、增加列 ALTER TABLE myemp ADD(hiredate DATE DEFAULT SYSDATE); 5、删除列 ALTER TABLE myemp DROP(hiredate); 6、修改列 ALTE…

ChatGPT能用来写小说吗-gpt可以续写小说吗

怎么用ChatGPT写网文 ChatGPT是一个语言生成模型&#xff0c;可以用于生成各种文本&#xff0c;包括网文。下面是一些写网文的建议。 确定你的主题和情节。在开始写作之前&#xff0c;你需要确保你有一个明确的主题和情节&#xff0c;这可以帮助你更好地组织你的故事&#xff0…

【具体到每一步】uniapp打包app生成apk包

先配置 云打包 关于证书 备注 弹出来这么个东西是加入你这个应用要发布到商店&#xff0c;需要签署的一些东西&#xff0c;先不用管了 然后等等 这个时间有点长 [HBuilder] 02:28:29.892 打包成功后会自动返回下载链接。 [HBuilder] 02:28:29.892 打包过程查询请点菜单发行-查…

Java内存模型详解

Java内存模型 Java内存模型(Java Memory Model)是Java虚拟机规范定义的&#xff0c;用于屏蔽因不同程序/硬件/操作系统上内存访问的差异&#xff0c;确保程序运行与设计一致&#xff0c;Java内存模型定义了Java虚拟机在计算机内存中的工作方式&#xff0c;确定了在共享内存系统…