NLP 中的依賴解析【舉例說明】
已發表: 2021-03-10自然語言處理是一個跨學科概念,它利用計算語言學和人工智能的基礎知識來理解人類語言如何與技術交互。
NLP 需要深入理解各種術語和概念,才能將它們切實地應用於現實世界的場景。 其中一些基本概念包括詞性 (POS) 標記、統計語言建模、句法、語義和情感分析、規範化、標記化、依賴解析和選區解析等。
在本文中,我們將研究 Dependency Parsing 的基礎知識,以了解它是如何在 NLP 中實現的。
目錄
依賴解析
依存分析(DP)是指檢查一個句子的單詞之間的依存關係來分析它的語法結構。 在此基礎上,一個句子被分成幾個部分。 該機制基於句子的每個語言單元之間存在直接聯繫的概念。 這些鏈接稱為依賴關係。
讓我們以“我更喜歡早上飛往丹佛的航班”為例。
下圖解釋了句子的依賴結構:
資源
句子的每個語言單元或單詞之間的關係,使用類型化依存結構中的有向弧來表示。 如圖所示,“prefer”樹的根構成了上述句子的頭部。
任何兩個單詞之間的關係都由依賴標籤標記。 例如,“飛行”一詞修飾了名詞“丹佛”的意思。 因此,您可以注意到航班 -> 丹佛的依賴關係,其中航班是頭部,丹佛是孩子或被撫養人。 它由表示名義修飾符的nmod表示。
這形成了每兩個單詞之間的依賴關係,其中一個充當頭部,另一個充當依賴。 目前, Universal Dependency V2分類法由 37 個通用句法關係組成,如下表所示:
依賴標籤 | 描述 |
acl | 名詞的從句修飾語(名詞性從句) |
acl:relcl | 相對從句修飾語 |
進階 | 狀語從句修飾語 |
進階模式 | 狀語 |
進階模式:emph | 強調詞,加強詞 |
進階模式:lmod | 處所狀語修飾語 |
amod | 形容詞修飾語 |
應用程序 | 並列修飾語 |
輔助 | 輔助的 |
輔助:通過 | 被動輔助 |
案子 | 案例標記 |
抄送 | 並列連詞 |
抄送:preconj | 前置連詞 |
ccomp | 從句補語 |
clf | 分類器 |
化合物 | 化合物 |
化合物:lvc | 輕動詞結構 |
複合:prt | 短語動詞助詞 |
複合:redup | 重複的化合物 |
複合:svc | 連續動詞複合詞 |
組合 | 合取 |
警察 | 係詞 |
主題 | 分句主語 |
csubj:通過 | 分句被動主語 |
部門 | 未指定的依賴 |
檢測 | 決定者 |
確定:numgov | 支配名詞格的代詞量詞 |
det:nummod | 與名詞格一致的代詞量詞 |
確定:可能 | 所有格限定詞 |
話語 | 語篇成分 |
脫臼 | 錯位元素 |
解釋 | 髒話 |
解釋:帝國 | 非人稱咒罵 |
解釋:通過 | 反身代詞用於反身被動 |
解釋:光伏 | 帶有固有反身動詞的反身附著體 |
固定的 | 固定多詞表達 |
平坦的 | 平面多詞表達 |
平:國外 | 外來詞 |
平面:名稱 | 名字 |
搭配 | 搭配 |
對象 | 間接賓語 |
列表 | 列表 |
標記 | 標記 |
模組 | 名義修飾語 |
nmod:可能 | 所有格名義修飾語 |
nmod:tmod | 時間修飾語 |
關注 | 名義主語 |
主題:通過 | 被動名詞性主語 |
數模 | 數字修飾符 |
數字:政府 | 控制名詞大小寫的數字修飾語 |
對象 | 目的 |
對象 | 斜名義 |
對象:代理 | 代理改性劑 |
對象:參數 | 間接論證 |
對象:lmod | 方位修飾語 |
對象:tmod | 時間修飾語 |
孤兒 | 孤兒 |
並列性 | 並列性 |
點點 | 標點 |
賠償 | 壓倒性的不流利 |
根 | 根 |
呼 | 呼 |
xcomp | 開放從句補語 |
使用 NLTK 進行依賴解析
依賴解析可以使用自然語言工具包 (NLTK) 包來執行,該包是人類語言的統計自然語言處理 (NLP) 中使用的庫和代碼的集合。
我們可以通過以下方法之一使用 NLTK 來實現依賴解析:
- 概率、投射依賴解析器:這些解析器使用從手工解析的句子中收集的人類語言知識來預測新句子。 眾所周知,他們會犯錯誤並使用一組有限的訓練數據。
- 斯坦福解析器:這是一個在 Java 上實現的自然語言解析器。 您需要Stanford CoreNLP 解析器來執行依賴解析。 解析器包括多種語言,包括英語、中文、德語和阿拉伯語。
以下是如何使用解析器:
從 nltk.parse.stanford 導入 StanfordDependencyParser
path_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser.jar'
path_models_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser-3.4.1-models.jar'
dep_parser = StanfordDependencyParser(
path_to_jar = path_jar,path_to_models_jar = path_models_jar
)
result = dep_parser.raw_parse('我在睡夢中射殺了一頭大象')
依賴 = result.next()
列表(依賴。triples())
上述程序的輸出如下:
[
((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')),
((u'shot', u'VBD'), u'dobj', (u'elephant', u'NN')),
((u'elephant', u'NN'), u'det', (u'an', u'DT')),
((u'shot', u'VBD'), u'prep', (u'in', u'IN')),
((u'in', u'IN'), u'pobj', (u'sleep', u'NN')),
((u'sleep', u'NN'), u'poss', (u'my', u'PRP$'))
]
選區解析
選區解析基於上下文無關語法。 這裡,分析樹包括分成子短語的句子,每個子短語屬於一個語法類別。 句子中的每個語言單元或單詞都充當終端節點,該節點具有其父節點和詞性標記。
例如,短語“a cat”和“a box under the bed”是名詞短語,而“write a letter”和“drive a car”是動詞短語。
讓我們考慮一個例句“我穿著睡衣射殺了一頭大象”。 這是選區分析樹的圖形表示:
資源
左邊的解析樹表示拍攝穿著睡衣的大象,右邊的解析樹表示拍攝對象穿著睡衣拍攝大象。
整個句子被分成幾個子階段,直到我們剩下終結詞。 VP 表示動詞短語,NP 表示名詞短語。
依賴解析與選區解析
選區解析也可以使用斯坦福解析器來實現。 它本質上根據選區解析器解析給定的句子,然後將選區解析樹轉換為依賴樹。
如果您的目標是將句子分成子短語,則應實施選區解析。 但是,如果你想探索一個句子中單詞之間的依賴關係,你應該使用依賴解析。
結帳: NLP 項目的想法和主題
結論
如果您覺得這篇文章有幫助,您應該查看 upGrad 為期 6 個月的機器學習和 NLP PG 認證,該認證提供來自 Flipkart、Gramener 和 Zee5 行業專家的個性化指導。
該計劃專為希望在數據科學和機器學習領域立足的工程師、軟件/IT、數據和其他專業人士而設計。 這份來自 IIIT BBangalorethe 的研究生認證擁有 58% 的平均加薪,這就是您在頂級公司中擔任數據分析師、數據科學家、ML 工程師和 NLP 工程師高級職位所需要的一切。 今天只需 Rs 就可以坐下。 每月 3,034 個!
NLP 中的依賴解析有什麼用?
在自然語言處理中,依賴解析是一種用於識別句子中單詞之間語義關係的技術。 依賴解析器用於將句子中的單詞映射到語義角色,從而識別單詞之間的句法關係。 依賴解析是一種在表面結構級別對自然語言文本進行句法分析的眾所周知的方法。 在該方法中,通過分析單詞之間的句法依賴關係並識別每個單詞的句法類別,從單詞標記的線性序列中恢復句子的句法結構。
依賴解析的應用有哪些?
以下是使用依賴解析的幾個應用領域的列表。 依賴解析的主要用途之一是語義角色標記 (SRL) 和信息提取,它們是自然語言處理的組成部分。 依賴解析也用於 NLP 任務之外的句法分塊和選區解析。 依賴解析與短語結構解析有著根本的不同,後者將句子中的單詞映射到相應的短語標記或樹結構。
句法解析和依賴解析之間的基本區別是什麼?
語法解析器和依賴解析器的區別在於,依賴解析器構建解析樹,語法解析器構建語法樹。 句法解析涉及使用預定義的規則來定義語法和依賴解析器,另一方面,它可以理解各種短語,也可以處理模棱兩可的輸入。 依賴解析器可用於短語識別、分塊、依賴分析、分塊和解析。