在自然語(yǔ)言處理界,模式匹配可以說(shuō)是最常用的技術(shù)。甚至可以說(shuō),將NLP技術(shù)作為真實(shí)生產(chǎn)力的項(xiàng)目都少不了 模式匹配 。
什么是模式匹配呢?在計(jì)算機(jī)科學(xué)中,往往是檢查給定的序列或字符串中是否有符合某種模式的片段。比如說(shuō):“啊,你的AK-47打得真準(zhǔn)”,如果我們將 “啊,你的 _____ 打得真準(zhǔn) ” 作為一種模式,則會(huì)將AK-47匹配出來(lái)。
實(shí)現(xiàn)模式匹配往往都是用正則表達(dá)式,但是如果你想識(shí)別特別復(fù)雜的模式,編寫正則表達(dá)式就會(huì)變得非常非常麻煩。而Pampy這個(gè)項(xiàng)目能解決你不少的煩惱。https://github.com/santinic/pampy
下面是一個(gè)使用例子:
1.安裝
趕緊讓我們來(lái)試一下,安裝Pampy前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒有,請(qǐng)?jiān)L問這篇文章:超詳細(xì)Python安裝指南。
打開Cmd(開始—運(yùn)行—CMD)或Terminal(command+空格輸入Terminal). 輸入以下命令安裝Pampy:
pip install pampy
看到 Successfully installed pampy-0.3.0 則說(shuō)明安裝成功。
2.使用
HEAD和TAIL能代表某個(gè)模式的前面部分或后面部分。
比如將特定模式后的元素都變成元組:
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)]
將特定模式前的元素設(shè)為集合,后面的元素設(shè)為元組:
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: 甚至能匹配字典中的鍵
在你不知道哪個(gè)鍵下有某個(gè)值的時(shí)候,這招非常好用:
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 re
from pampy import match, HEAD, TAIL, _
def what_is(pet):
return match(
pet, re.compile('(\\w+),(\\w)\\w+鱈魚$'), lambda mygod, you: you + "像鱈魚"
)
print(what_is('我的天,你長(zhǎng)得真像鱈魚'))
# => '你像鱈魚'
如果你喜歡今天的Python 教程,請(qǐng)持續(xù)關(guān)注Python實(shí)用寶典,如果對(duì)你有幫助,麻煩在下面點(diǎn)一個(gè)贊/在看,有任何問題都可以在下方留言,我們會(huì)耐心解答的!
-
模式匹配
+關(guān)注
關(guān)注
0文章
9瀏覽量
5869 -
自然語(yǔ)言處理
+關(guān)注
關(guān)注
1文章
620瀏覽量
13651 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22113
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
C#模式匹配入門指南
Python 強(qiáng)大的模式匹配工具—Pampy
入侵檢測(cè)系統(tǒng)中模式匹配算法的研究
模式匹配算法的深入研究
多模式匹配算法的性能分析
基于多模式匹配的狀態(tài)檢測(cè)技術(shù)
![基于多<b class='flag-5'>模式</b><b class='flag-5'>匹配</b>的狀態(tài)檢測(cè)技術(shù)](https://file.elecfans.com/web2/M00/48/FF/pYYBAGKhtDKAcF9PAAAPPDuKGKI480.jpg)
BM模式匹配算法的研究和改進(jìn)
![BM<b class='flag-5'>模式</b><b class='flag-5'>匹配</b>算法的研究和改進(jìn)](https://file.elecfans.com/web2/M00/49/68/pYYBAGKhtEyANeDYAAASBM2crQw903.jpg)
基于信息元的模式匹配方法
Python強(qiáng)大的模式匹配工具—Pampy的使用
Python強(qiáng)大的模式匹配工具Pampy
C#模式匹配完全指南
什么是模式匹配
![什么是<b class='flag-5'>模式</b><b class='flag-5'>匹配</b>](https://file.elecfans.com/web2/M00/94/23/pYYBAGP4UpmAWWSUAACN7Q4TOS0613.jpg)
基于Python強(qiáng)大的模式匹配工具
![基于Python<b class='flag-5'>強(qiáng)大</b>的<b class='flag-5'>模式</b><b class='flag-5'>匹配</b><b class='flag-5'>工具</b>](https://file.elecfans.com/web2/M00/94/23/pYYBAGP4UpmAWWSUAACN7Q4TOS0613.jpg)
基于FPGA的模式匹配系統(tǒng)設(shè)計(jì)
![基于FPGA的<b class='flag-5'>模式</b><b class='flag-5'>匹配</b>系統(tǒng)設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論