日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

spaCy V3.0 基于规则匹配(2)----高效的短语匹配器和依存句法匹配器

發(fā)布時(shí)間:2024/1/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spaCy V3.0 基于规则匹配(2)----高效的短语匹配器和依存句法匹配器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 短語(yǔ)匹配器(PhraseMatcher)

1.1 基本用法

對(duì)于需要匹配大型術(shù)語(yǔ)列表的情況,可以通過(guò)PhraseMatcher和創(chuàng)建Doc對(duì)象來(lái)代替詞符匹配模式(token patterns),可以獲得總體上更高的效率。Doc模式可以包含單個(gè)或多個(gè)詞符。

import spacy from spacy.matcher import PhraseMatchernlp = spacy.load("zh_core_web_sm") matcher = PhraseMatcher(nlp.vocab) terms = ['失速區(qū)','喘振區(qū)','油膜破壞','電機(jī)漏磁']# 注意:只有使用 nlp.make_doc 才能加速patterns = [nlp.make_doc(text) for text in terms] matcher.add("TerminologyList", patterns)doc = nlp("軸承絕緣擊穿,電機(jī)漏磁電流通過(guò)軸承造成油膜破壞。二次風(fēng)系統(tǒng)擋板誤關(guān),引起系統(tǒng)阻力增大,造成風(fēng)壓與進(jìn)入的風(fēng)量不匹配,使風(fēng)機(jī)進(jìn)入喘振區(qū)。") matches = matcher(doc) for match_id, start, end in matches:span = doc[start:end]print(span.text)

注意:patterns 是一個(gè)Doc列表。

創(chuàng)建patterns,每個(gè)短語(yǔ)都必須使用nlp對(duì)象進(jìn)行處理。如果加載了預(yù)訓(xùn)練模型,則在循環(huán)或列表中執(zhí)行此操作很容易變得低效和費(fèi)時(shí)。如果您只需要分詞和詞法屬性,那么可以運(yùn)行nlp.make_doc,它只使用了分詞器(tokenizer)。當(dāng)然還可以使用nlp.tokenizer.pipe方法,將文本作為流進(jìn)行處理,以得到進(jìn)一步的速度提升。

錯(cuò)誤用法:

  • patterns = [nlp(term) for term in LOTS_OF_TERMS]

正確用法:

  • patterns = [nlp.make_doc(term) for term in LOTS_OF_TERMS]
  • patterns = list(nlp.tokenizer.pipe(LOTS_OF_TERMS))

1.2 匹配其他Token屬性

默認(rèn)情況下,PhraseMatcher將逐字匹配Token的文本,Token.text. 但通過(guò)在初始化時(shí)設(shè)置attr參數(shù),可以更改匹配器(PhraseMatcher)在將短語(yǔ)模式(patterns)與文檔進(jìn)行比較時(shí)使用的Token屬性。

注意:在前面的例子中,生成patterns列表用的是nlp.make_doc,它只使用了分詞器(tokenizer)。對(duì)于本節(jié)需要匹配其他Token屬性的情況,就要根據(jù)需要加入相應(yīng)的組件。你可以直接使用nlp或通過(guò) nlp.select_pipes()選擇性的禁用某些組件。

比如:根據(jù)形狀匹配數(shù)字Token(如IP地址)。使用Token的Shape屬性將不必?fù)?dān)心這些字符串如何分詞,并且能夠根據(jù)幾個(gè)示例找到Tokens及其組合。下面我們將匹配形狀ddd.d.d.d和ddd.ddd.d.d:

matcher = PhraseMatcher(nlp.vocab, attr="SHAPE") matcher.add("IP", [nlp("127.0.0.1"), nlp("127.127.0.0")])doc = nlp("通常路由器有像'192.168.1.1'或'192.168.2.1'這樣的IP地址。") for match_id, start, end in matcher(doc):print("Matched based on token shape:", doc[start:end])

當(dāng)然從理論上講,此方法對(duì)POS等屬性也同樣適用。例如,基于詞性標(biāo)簽(tag)匹配的模式nlp(“我喜歡花”)將返回“我愛(ài)狗”的匹配。還可以匹配像IS_PUNCT這樣的布爾屬性,以匹配具有與模式相同的標(biāo)點(diǎn)符號(hào)和非標(biāo)點(diǎn)符號(hào)序列的短語(yǔ)。但是這么做很容易讓人迷惑,且與編寫(xiě)一個(gè)或兩個(gè)Token模式相比也沒(méi)有太大的優(yōu)勢(shì)。

2 依存句法匹配器

DependencyMatcher使用Semgrex操作符匹配依存句法分析中的模式。它需要一個(gè)包含依存句法解析器的模型,比如DependencParser。DependencMatcher模式?jīng)]有定義Matcher patterns中相鄰Token的列表,而是匹配依存關(guān)系分析中的Roken并指定它們之間的關(guān)系。

依存句法匹配器的patterns由字典列表組成,每個(gè)字典描述要匹配的Token及其與patterns中現(xiàn)有Token的關(guān)系。除了第一個(gè)字典(它僅使用RIGHT_ID和RIGHT_ATTRS定義anchor token)之外,每個(gè)pattern 都應(yīng)該具有以下4個(gè)鍵:

鍵名說(shuō)明
LEFT_ID關(guān)系符左邊的節(jié)點(diǎn)名稱(chēng),該節(jié)點(diǎn)此前要出現(xiàn)在patters字典列表
str
REL_OP表明左右兩節(jié)點(diǎn)關(guān)系的操作符
str
RIGHT_ID關(guān)系符右側(cè)節(jié)點(diǎn)名稱(chēng)(該名稱(chēng)不能重復(fù))
str
RIGHT_ATTRS要匹配的關(guān)系符右側(cè)節(jié)點(diǎn)的屬性,其格式與Token Matcher中的patters相同
Dict[str, Any]

添加到patterns中的每個(gè)附加Token,都通過(guò)關(guān)系操作符REL_OP鏈接到現(xiàn)有名稱(chēng)為L(zhǎng)EFT_ID的Token。新Token被命名為RIGHT_ID并由具有RIGHT_ATTRS描述的屬性。

重要提示:由于用LEFT_ID和RIGHT_ID來(lái)作為識(shí)別Token的唯一名稱(chēng),patters字典列表中的順序就非常重要。所有作為L(zhǎng)EFT_ID出現(xiàn)的節(jié)點(diǎn),必須在前面的字典中作為RIGHT_ID被定義過(guò)!!!!

依存句法匹配器可用的操作符

符號(hào)說(shuō)明
A < BA是B的直接子節(jié)點(diǎn)
A > BA是B的直接頭節(jié)點(diǎn)
A << BA能夠通過(guò)多個(gè)子節(jié)點(diǎn)到頭節(jié)點(diǎn)關(guān)系跳轉(zhuǎn)路徑到達(dá)B
A >> BA能夠通過(guò)多個(gè)頭節(jié)點(diǎn)到子節(jié)點(diǎn)關(guān)系跳轉(zhuǎn)路徑到達(dá)B
A . BA是B的位置左鄰節(jié)點(diǎn), 即:A.i == B.i - 1 (A、B在同一依存解析樹(shù)中,i是其Doc中的位置索引。 下同)
A .* BA是B的位置前序節(jié)點(diǎn), 即:A.i < B.i
A ; BA是B的位置右鄰節(jié)點(diǎn), 即:A.i == B.i + 1
A ;* BA是B的位置后序節(jié)點(diǎn), 即:A.i > B.i
A $+ BB是A的右鄰?fù)?jí)節(jié)點(diǎn), 即:A.head == B.head and A.i == B.i - 1
A $- BB是A的左鄰?fù)?jí)節(jié)點(diǎn), 即:A.head == B.head and A.i == B.i + 1
A $++ BB是A的位置后序同級(jí)節(jié)點(diǎn), 即:A.head == B.head and A.i < B.i
A $-- BB是A的位置前序同級(jí)節(jié)點(diǎn), 即:A.head == B.head and A.i > B.i
  • 依存句法匹配器的patterns

如果要從以下句子中找出“造成”什么后果:

1 “軸承絕緣擊穿,電機(jī)漏磁電流通過(guò)軸承造成油膜破壞。”
2 “冷渣器內(nèi)部冷卻水管泄漏造成灰渣板結(jié)。”

我們要找到以下關(guān)系:

  • 造成的直接賓語(yǔ)(dobj)
  • 直接賓語(yǔ)(dobj)的復(fù)合名詞修飾或形容詞修飾(也可以沒(méi)有修飾)
nlp = spacy.load("zh_core_web_sm") matcher = DependencyMatcher(nlp.vocab) pattern = [{"RIGHT_ID": "anchor_word", # 唯一名稱(chēng)"RIGHT_ATTRS": {"ORTH": "造成"} # "造成"的token pattern},{"LEFT_ID": "anchor_word","REL_OP": ">","RIGHT_ID": "w_object","RIGHT_ATTRS": {"DEP": "dobj"}},{"LEFT_ID": "w_object","REL_OP": ">","RIGHT_ID": "object_modifier","RIGHT_ATTRS": {"DEP": {"IN":["compound:nn","amod"], "OP":"?"}}} ] matcher.add("FOUNDED", [pattern]) doc = nlp("冷渣器內(nèi)部冷卻水管泄漏造成灰渣板結(jié)。軸承絕緣擊穿,電機(jī)漏磁電流通過(guò)軸承造成油膜破壞。") matches = matcher(doc) print(matches) # 每一個(gè)token_id對(duì)應(yīng)一個(gè)pattern字典 for match_id, token_ids in matches:for i in range(len(token_ids)):print(pattern[i]["RIGHT_ID"] + ":", doc[token_ids[i]].text)

運(yùn)行結(jié)果:

[(4851363122962674176, [5, 7, 6]), (4851363122962674176, [19, 21, 20])] anchor_word: 造成 w_object: 板結(jié) object_modifier: 灰渣 anchor_word: 造成 w_object: 破壞 object_modifier: 油膜

提高匹配速度的重要提示:
當(dāng)token patterns能夠潛在匹配句子中的許多token,或者當(dāng)關(guān)系運(yùn)算符在依存關(guān)系解析中的路徑較長(zhǎng)時(shí)(如<<、>>、*以及;*關(guān)系運(yùn)算符),匹配速度可能會(huì)比較慢。

為了提高匹配速度,操作符盡可能具體。例如,盡量使用 > 而不是 >> ,使用包含語(yǔ)義標(biāo)簽和其他Token屬性,而不是像 {} 匹配句子中任何Token。

總結(jié)

以上是生活随笔為你收集整理的spaCy V3.0 基于规则匹配(2)----高效的短语匹配器和依存句法匹配器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美中文在线观看 | 亚洲av无码国产精品麻豆天美 | 日本三级不卡 | 日本做受 | 亚洲天堂久 | 免费黄色美女网站 | 免费在线观看黄色av | 国产在线专区 | 成人精品一区日本无码网 | 日p免费视频 | 天堂在线免费观看视频 | 成人福利在线播放 | 国产成人a亚洲精v品无码 | 亚洲综合色自拍一区 | 成人亚洲天堂 | 日韩精品亚洲精品 | 日本黄色三级网站 | 亚洲一卡一卡 | 波多野结衣中文字幕一区二区三区 | 国产精品夜色一区二区三区 | 麻豆传媒在线看 | 日韩欧美国产成人精品免费 | 国产午夜福利一区 | 天天插综合 | 精品成人无码一区二区三区 | 色婷婷激情 | 天天插天天爱 | 成年人免费高清视频 | 超碰成人在线观看 | 一级黄片毛片 | 国产h视频在线 | 精品无码av一区二区三区不卡 | 九草av| 欧美日韩国产三级 | 国产精品国产三级国产在线观看 | 欧美日韩色综合 | 亚洲精品一区 | 成人激情小说网站 | 一起操在线观看 | 日韩精品免费一区二区 | 神秘马戏团在线观看免费高清中文 | 在线亚洲人成电影网站色www | 日产精品久久久一区二区 | 欧美福利一区二区 | 亚洲性猛交 | 亚洲男人在线天堂 | 直接看av的网站 | 特级毛片在线播放 | 顶级嫩模啪啪呻吟不断好爽 | xxx国产精品 | 伊人久久久久久久久久久久久 | 在线观看av大片 | 亚洲成人一区二区 | 中文字幕一区二区三区在线观看 | 国产日韩欧美自拍 | 在线成人亚洲 | 欧美成人国产 | 瑟瑟视频在线看 | 国产无遮挡免费 | 成人影| av免费观看网 | 久久久久久久久久一区二区 | 日韩av手机在线免费观看 | av在线不卡播放 | 精品国产乱码一区二 | 成年人性生活视频 | 国际av在线 | 午夜av导航 | 亚洲免费精品视频 | 麻豆av网站 | 伊人影院在线观看 | 欧美日本国产在线 | 一区二区韩国 | 黄色免费在线观看网站 | a级片在线免费观看 | 四虎av影视 | 神马午夜我不卡 | 日韩电影一区二区 | 国产精品果冻传媒潘 | 亚洲欧美日本一区二区三区 | 日韩av在线一区 | 人人爱操 | 日本免费色视频 | 欧美日韩免费一区 | 成人深夜福利 | 国产精品入口夜色视频大尺度 | 日本少妇xxxxx | 亚洲人成无码www久久久 | 天天干天天色综合 | 全黄一级片 | 嫩草视频在线免费观看 | 毛片在线免费观看网站 | 国产精品视频123 | 青青草中文字幕 | 国产性猛交xxxⅹ交酡全过程 | 免费a网址| 九九久久免费视频 | 黄瓜视频色版 | 色哟哟黄色|