句法解析是 NLP 中的一種關鍵技術,可以幫助分析句子的成分結構,以及單詞之間的依存關係。句法分析樹主要分兩大類:constituent tree 短語結構樹,dependency tree 依存結構樹。本文主要簡單介紹一下短語結構樹和依存結構樹的概念。
1.短語結構樹
NLP 句法結構解析主要分為兩類:constituent tree 短語結構樹和 dependency tree 依存結構樹。
短語結構樹不斷地將句子的成分 (包括短語和句子) 按照規則組成新的短語,從而得到句子的結構。例如 "我的貓喜歡吃貓糧",首先可以得到短語 [我的貓] 和 [吃貓糧],然後又可以得到短語 [喜歡[吃貓糧]]。形成的短語結構樹如下:

可以看到短語結構樹的每一個葉子節點都是原始句子中的單詞,而每個非葉子節點都是用於標記短語結構的。其中 NP 表示名詞短語,單詞 "我的" 和 "貓" 組成了名詞短語 "我的貓";VP 表示動詞短語,"吃貓糧" 就是一個動詞短語。
可以通過 Stanford Parser 解析句子得到短語結構樹,一般解析出來的表示如下。
(ROOT
(S
(NP (PRP$ 我的) (NN 貓))
(VP (VBZ 喜歡)
(S
(VP (VBG 吃)
(NP (NN 貓糧)))))
(. .)))
2.依存結構樹
依存結構樹和短語結構樹不同,依存樹主要用於表達句子中單詞之間的相互依存關係。通常可以表示成 (單詞1,關係,單詞2) 三元組,單詞2依賴於單詞1,例如主謂賓結構等。還是剛剛的句子 "我的貓喜歡吃貓糧",對應的依存結構樹如下:

依存圖中子節點依存於父節點,例如 "我的" 依存於 "貓",nmod,dobj,nsubj 等表示單詞之間的依存關係。
通過 Stanford Parser 解析句子得到依存結構樹通常像下面的形式。
nmod(貓-2, 我的-1)
nsubj(喜歡-3, 貓-2)
root(ROOT-0, 喜歡-3)
xcomp(喜歡-3, 吃-4)
dobj(吃-4, 貓糧-5)
上面括號中的第二個詞依賴於第一個詞,他們的依賴關係寫在括號之前,單詞之後的數字表示單詞在句子中的位置。