句子的依存結構表達了詞與詞之間的依賴關係,這種關係稱依存關係。它是一種二元的非對稱關係(binary asymmetric relation),從依存關係的支配者head指向從屬者dependent。
依存句法分析旨在將輸入的句子轉化成依存分析樹(或圖),依存樹中自上而下任意父子結點之間用依存關係連線。在自然語言處理中,依存句法分析屬於句法層次的任務,它一般需要詞法層次的詞性標註(pos)的結果作為輔助資訊。
有趣的是,詞性標註這個任務又需要分詞結果作為輔助資訊,可通過分詞和詞性標註聯合任務來規避分詞帶來錯誤傳播,當然這是題外話。以ltp為例,依存句法分析中的依存關係包括:
關係型別
標籤描述
樣例主謂關係
sbvsubject-verb
我送她一束花 (我
動賓關係
vob直接賓語,verb-object
我送她一束花 (送 --> 花)
間賓關係
iob間接賓語,indirect-object
我送她一束花 (送 --> 她)
前置賓語
fob前置賓語,fronting-object
他什麼書都讀 (書
兼語dbl
double
他請我吃飯 (請 --> 我)
定中關係
attattribute
紅蘋果 (紅
狀中結構
advadverbial
非常美麗 (非常
動補結構
cmpcomplement
做完了作業 (做 --> 完)
並列關係
coocoordinate
大山和大海 (大山 --> 大海)
介賓關係
pobpreposition-object
在**區內 (在 --> 內)
左附加關係
ladleft adjunct
大山和大海 (和
右附加關係
radright adjunct
孩子們 (孩子 --> 們)
獨立結構
isindependent structure
兩個單句在結構上彼此獨立
標點wp
punctuation
。核心關係
hedhead
指整個句子的核心
實際上,也不必嚴格遵守這個**,最終還是得按照語料的來,畢竟tag都是標註規範說了算。以「他叫湯姆去拿外衣。」為例,得到如下的依存句法分析結果:
一般句子的核心都是謂詞。依存句法分析可以幫助理解文字語義,並且具有可解釋性。
將依存句法分析的分析過程看成狀態機的狀態轉移過程。給定乙個初始狀態(init state)和乙個終止狀態(terminate state),狀態機從初始狀態出發,在每個時刻都貪心地選擇乙個轉移方式,從而實現狀態的轉移。到達終止狀態後,可根據整個過程中的轉移序列可以還原出依存分析樹。
用三元組(\(\sigma\), \(\beta\), a)表示狀態,其中\(\sigma\)是乙個棧(root位於棧底),\(\beta\)是快取(buffer),a表示解析的結果。對於句子\(s=(w_1, w_2, ..., w_n)\),起始狀態為([root], [\(w_0\)
\(w_1\)
\(w_2\) ... \(w_n\)], \(\emptyset\)),終止狀態為([root], , a)
每個時刻的轉移方式有三種,shift、left_arc和right_arc。
以「he has good control.」為例,整個轉移過程為:
最終可根據a得到如下解析樹:
於是每個時刻如何選擇轉移方式成為方法的關鍵。考慮到狀態機在每個時刻的轉移方式有\(2*n_l+1\)種[2]
,其中\(n_l\)是依存關係的數量。而狀態機在每個時刻都只貪心地做出選擇,所以簡單構建乙個分類器即可實現整個系統。當然,在解碼過程中也可以換成beam search。
a fast and accurate dependency parser using neural networks中使用的是dnn模型,從stack和buffer中抽取出一些詞,然後將這些詞的詞嵌入、pos標籤嵌入、依存關係標籤嵌入作為輸入,輸出則是**狀態轉移的方式。考慮到2023年的模型拿到現在肯定不中用,無論是網路結構還是優化器,都過時了,所以這裡不打算介紹了。
度量包括兩種,uas(unlabeled attachment scores)和las(labeled attachment scores),其中las可參考conll 2017 shared task: multilingual parsing from raw text to universal dependencies.
相比於傳統的語義理解,如今大資料+大算力直接訓練端到端的模型成為主流,語義依存分析漸漸變得不再那麼重要了。
a fast and accurate dependency parser using neural networks. danqi chen, christopher d. manning. emnlp 2014. ↩︎
left-arc和right-arc各有\(n_l\)個轉移方式,再加shift就是\(2*n_l+1\)了。 ↩︎
句法分析 依存句法分析
句法分析是自然語言處理中的關鍵技術之一,其基本任務是確定句子的句法結構或者句子中詞彙之間的依存關係。主要包括兩方面的內容,一是確定語言的語法體系,即對語言中合法的句子的語法結構給與形式化的定義 另一方面是句法分析技術,即根據給定的語法體系,自動推導出句子的句法結構,分析句子所包含的句法單位和這些句法...
白話NLP 依存句法分析
在依存句法分析中,句子中詞與詞之間存在一種二元不等價關係 主從關係。在句子中,如果乙個詞修飾另乙個詞,則稱修飾詞為從屬詞 dependent 被修飾詞成為支配詞 head 兩者之間的語法關係就是依存關係 dependency relation 如句子 小目標 中的形容詞 小 與名次 夢想 之間的關係...
使用opennlp進行依存句法分析
本文主要研究下如何使用opennlp進行依存句法分析 opennlp主要使用parser來進行依存句法分析,其模型為parsermodel test public void testparsertool throws ioexception catch ioexception ex 複製 這裡使用e...