基于Python强大的模式匹配工具

在自然语言处理界,模式匹配可以说是最常用的技术。甚至可以说,将nlp技术作为真实生产力的项目都少不了 模式匹配 。
什么是模式匹配呢?在计算机科学中,往往是检查给定的序列或字符串中是否有符合某种模式的片段。比如说:“啊,你的ak-47打得真准”,如果我们将 “啊,你的 _____ 打得真准 ” 作为一种模式,则会将ak-47匹配出来。
实现模式匹配往往都是用正则表达式,但是如果你想识别特别复杂的模式,编写正则表达式就会变得非常非常麻烦。而pampy这个项目能解决你不少的烦恼。https://github.com/santinic/pampy
下面是一个使用例子:
1.准备
开始之前,你要确保python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细python安装指南 进行安装。
**(可选1) **如果你用python的目的是数据分析,可以直接安装anaconda:python数据分析与挖掘好帮手—anaconda,它内置了python和pip.
**(可选2) **此外,推荐大家用vscode编辑器,它有许多的优点:python 编程的最好搭档—vscode 详细指南。
请选择以下任一种方式输入命令安装依赖 :
windows 环境 打开 cmd (开始-运行-cmd)。macos 环境 打开 terminal (command+空格输入terminal)。如果你用的是 vscode编辑器 或 pycharm,可以直接使用界面下方的terminal.pip install pampy看到 successfully installed pampy-0.3.0 则说明安装成功。
2.使用
特性1:head 和 tail
head和tail能代表某个模式的前面部分或后面部分。
比如将特定模式后的元素都变成元组:
from pampy import match, head, tail, _x = [-1, -2, -3, 0, 1, 2, 3]print(match(x, [-1, tail], lambda t: [-1, tuple(t)]))# = > [-1, (-2, -3, 0, 1, 2, 3)]将特定模式前的元素设为集合,后面的元素设为元组:
from pampy import match, head, tail, _x = [-1, -2, -3, 0, 1, 2, 3]print(match(x, [head, _, _, 0, tail], lambda h, a, b, t: (set([h, a, b]), tuple(t))))# = > ({-3, -1, -2}, (1, 2, 3))特性2:甚至能匹配字典中的键
在你不知道哪个键下有某个值的时候,这招非常好用:
from pampy import match, head, tail, _my_dict = { 'global_setting': [1, 3, 3], 'user_setting': { 'face': ['beautiful', 'ugly'], 'mind': ['smart', 'stupid'] }}result = match(my_dict, { _: {'face': _}}, lambda key, son_value: (key, son_value))print(result)# = > ('user_setting', ['beautiful', 'ugly'])特性3: 搭配正则
不仅如此,它还能搭配正则一起使用哦:
import refrom pampy import match, head, tail, _def what_is(pet): return match( pet, re.compile('(w+),(w)w+鳕鱼$'), lambda mygod, you: you + 像鳕鱼 )print(what_is('我的天,你长得真像鳕鱼'))# = > '你像鳕鱼'

猫,量子力学,和手机人像摄影之变
中兴微电子成立新公司对于半导体产业的影响?
产业低谷是必经之路 VR冬去春来前景仍然光明_VR,VR应用
实现CCDP系统功能的双极化双工设计方法
机器人记者正在崛起
基于Python强大的模式匹配工具
AMD怒发三款专业级显卡正面对杀NVIDIA
什么水货相机
朗科U盘系列推荐:这三款产品外观时尚小巧 性能各有亮点
小屏机“已死”?传iPhone 12 mini停产,小屏手机还有戏吗
大众结束与Aurora自动驾驶汽车项目或携手福特
微芯CEO评论七个热点话题
卡萨帝2022年增长趋势分析:升级14家,投建2个!
DC-DC AP5193降压恒流IC LED电动摩托车灯内置2.5A 车灯应用
微透镜阵列成像原理 微结构阵列透镜类型及优势
两款直流电源转换电路图解析
博赛新一代智能物联网科教平台项目成果评价会议在济南成功举办
英飞凌最新安全器件SLC38与TrustSEC的操作系统BIO-SLCOS相结合,为先进的智能卡应用提供安全、开放的平台
电池革命推动汽车革命
基于I2C的嵌入式Linux多点触摸屏幕驱动系统设计