1. 程式人生 > >自然語言處理4 -- 句法分析

自然語言處理4 -- 句法分析

1 概述

句法分析也是自然語言處理中的基礎性工作,它分析句子的句法結構(主謂賓結構)和詞彙間的依存關係(並列,從屬等)。通過句法分析,可以為語義分析,情感傾向,觀點抽取等NLP應用場景打下堅實的基礎。

隨著深度學習在NLP中的使用,特別是本身攜帶句法關係的LSTM模型的應用,句法分析已經變得不是那麼必要了。但是,在句法結構十分複雜的長語句,以及標註樣本較少的情況下,句法分析依然可以發揮出很大的作用。因此研究句法分析依然是很有必要的。

2 句法分析分類

句法分析分為兩類,一類是分析句子的主謂賓 定狀補的句法結構。另一類是分析詞彙間的依存關係,如並列 從屬 比較 遞進等。下面詳細講解。

2.1 句法結構分析

句法結構分析,識別句子的主謂賓 定狀補,並分析各成分之間的關係。如下圖

image.png | left | 747x149

句子的核心HED為謂語“提出”,主語SBV為“李克強”,賓語VOB為“支援上海積極探索新機制”。這樣我們就明確了句子的主幹結構。再來看細節,對於主語“李克強”,其修飾定語ATT為“國務院總理”。對於謂語“提出”,其修飾狀語ADV為“調研上海外高橋時”(這個狀語內部還可以結構細分)。

通過句法結構分析,我們就能夠分析出語句的主幹,以及各成分間關係。對於複雜語句,僅僅通過詞性分析,不能得到正確的語句成分關係。比如動詞謂語“提出”的主語,我們就可以知道是“李克強”,而不是離“提出”更近的同樣是名詞的“外高橋”了。

句法結構分析的標註如下

image.png | left | 747x528

2.2 語義依存關係分析

語義依存關係分析,識別詞彙間的從屬 並列 遞進等關係,可以獲得較深層的語義資訊。如以下三個不同的表達方式,表達了同一個語義資訊。可見語義依存關係不受句法結構的影響。

image.png | left | 747x240

語義依存關係偏向於介詞等非實詞的在語句中的作用,而句法結構分析則更偏向於名詞 動詞 形容詞等實詞。如張三 -> 吃的關係為施加關係Agt,蘋果->吃的關係為受事關係Pat。依存關係標註比較多,就不一一列舉了。

3 句法分析工具

句法分析演算法比較複雜,我們就不展開了。可以參考文章連結。介紹下幾個句法分析工具。

4 深度學習和句法分析

基於深度學習的RNN和LSTM序列模型,本身可以攜帶很多句法結構和依存關係等深層資訊。同時,句法分析樹結構也可以和深度學習結合起來。利用句法分析樹可以構建LSTM網路(tree-lstm), 從而對語句進行文字摘要,情感分析。那是否基於句法分析樹的LSTM(tree-lstm)就一定比單純的雙向LSTM(bi-lstm)效果好嗎?

研究表明,很多情況下,單純的bi-lstm,比基於句法分析樹的tree-lstm效果更好

image.png | left | 747x267

這主要是因為當前句法分析準確度不高,只有90%左右。如果是句子成分關係很複雜,則準確率更低。因此給lstm網路帶來了很大的噪聲,從而導致了tree-lstm模型準確度的降低。但是tree-lstm可以使用較少的標註語料,而且在句子結構複雜的長語句上,表現更好。因此當語料較少且句子結構很複雜時,可以考慮使用tree-lstm。相關文章可以參考 哈工大車萬翔:自然語言處理中的深度學習模型是否依賴於樹結構?連結

5 總結

句法分析是自然語言處理中的基礎性工作,在文字分析 觀點抽取 情感分析等場景下可以廣泛應用。句法分析當前難度還很高,準確率也有待提升。受制於句法分析準確率問題,基於句法結構樹的LSTM深度學習網路的準確率還有待進一步提升。總之,句法分析,任重而道遠。