句法分析是自然語言處理(NLP)中的關(guān)鍵技術(shù)之一唧领,其基本任務(wù)是確定句子的句法結(jié)構(gòu)或者句子中詞匯之間的依存關(guān)系登馒。主要包括兩方面的內(nèi)容:一是確定語言的語法體系,即對語言中合法句子的語法結(jié)構(gòu)給予形式化的定義;另一方面是句法分析技術(shù)碟嘴,即根據(jù)給定的語法體系的圆,自動推導(dǎo)出句子的句法結(jié)構(gòu)鼓拧,分析句子所包含的句法單位和這些句法單位之間的關(guān)系。
句法分析被用在很多場景中越妈,比如搜索引擎用戶日志分析和關(guān)鍵詞識別季俩,比如信息抽取、自動問答梅掠、機(jī)器翻譯等其他自然語言處理相關(guān)的任務(wù)酌住。
語法體系
句法分析需要遵循某一語法體系,根據(jù)該體系的語法確定語法樹的表示形式阎抒,我們看下面這個句子:
西門子將努力參與中國的三峽工程建設(shè)酪我。
用可視化的工具 Stanford Parser 來看看句法分析的整個過程:
短語結(jié)構(gòu)樹由終節(jié)點(diǎn)、非終結(jié)點(diǎn)以及短語標(biāo)記三部分組成挠蛉。句子分裂的語法規(guī)則為若干終結(jié)點(diǎn)構(gòu)成一個短語祭示,作為非終結(jié)點(diǎn)參與下一次規(guī)約,直至結(jié)束谴古。如下圖:
句法分析技術(shù)
依存句法分析
依存句法
依存句法(Dependency Parsing质涛, DP)通過分析語言單位內(nèi)成分之間的依存關(guān)系揭示其句法結(jié)構(gòu)。
直觀來講掰担,依存句法的目的在于分析識別句子中的“主謂賓”汇陆、“定狀補(bǔ)”這些語法成分,并分析各成分之間的關(guān)系带饱。
依存句法的結(jié)構(gòu)沒有非終結(jié)點(diǎn)毡代,詞與詞之間直接發(fā)生依存關(guān)系阅羹,構(gòu)成一個依存對,其中一個是核心詞教寂,也叫支配詞捏鱼,另一個叫修飾詞,也叫從屬詞酪耕。
依存關(guān)系用一個有向弧表示导梆,叫做依存弧。依存弧的方向?yàn)橛蓮膶僭~指向支配詞迂烁,當(dāng)然反過來也是可以的看尼,按個人習(xí)慣統(tǒng)一表示即可。
例如盟步,下面這個句子:
國務(wù)院總理李克強(qiáng)調(diào)研上海外高橋時提出藏斩,支持上海積極探索新機(jī)制。
依存句法的分析結(jié)果見下(利用哈工大 LTP):
從分析結(jié)果中我們可以看到却盘,句子的核心謂詞為“提出”狰域,主語是“李克強(qiáng)”,提出的賓語是“支持上汗日ǎ……”北专,“調(diào)研……時”是“提出”的(時間) 狀語,“李克強(qiáng)”的修飾語是“國務(wù)院總理”旬陡,“支持”的賓語是“探索新機(jī)制”拓颓。
有了上面的依存句法分析結(jié)果,我們就可以比較容易的看到描孟,“提出者”是“李克強(qiáng)”驶睦,而不是“上海”或“外高橋”匿醒,即使它們都是名詞场航,而且距離“提出”更近。
依存關(guān)系
依存句法通過分析語言單位內(nèi)成分之前的依存關(guān)系解釋其句法結(jié)構(gòu)廉羔,主張句子中核心動詞是支配其他成分的中心成分溉痢。而它本身卻不受其他任何成分的支配,所有受支配成分都以某種關(guān)系從屬于支配者憋他。
在20世紀(jì)70年代孩饼,Robinson 提出依存句法中關(guān)于依存關(guān)系的四條公理,在處理中文信息的研究中竹挡,中國學(xué)者提出了依存關(guān)系的第五條公理镀娶,分別如下:
- 一個句子中只有一個成分是獨(dú)立的;
- 句子的其他成分都從屬于某一成分揪罕;
- 任何一個成分都不能依存于兩個或兩個以上的成分梯码;
- 如果成分 A 直接從屬成分 B宝泵,而成分 C 在句子中位于 A 和 B 之間,那么轩娶,成分 C 或者從屬于 A儿奶,或者從屬于 B,或者從屬于 A 和 B 之間的某一成分鳄抒;
- 中心成分左右兩邊的其他成分相互不發(fā)生關(guān)系廓握。
句子成分之間相互支配與被支配、依存與被依存的現(xiàn)象嘁酿,普遍存在于漢語的詞匯(合成語)、短語男应、單句闹司、段落、篇章等能夠獨(dú)立運(yùn)用和表達(dá)的語言之中沐飘,這一特點(diǎn)體現(xiàn)了依存關(guān)系的普遍性游桩。依存句法分析可以反映出句子各成分之間的語義修飾關(guān)系,它可以獲得長距離的搭配信息耐朴,并與句子成分的物理位置無關(guān)借卧。
依存句法分析標(biāo)注關(guān)系(共14種)及含義如下表所示:
語義依存分析
語義依存分析(Semantic Dependency Parsing, SDP)筛峭,分析句子各個語言單位之間的語義關(guān)聯(lián)铐刘,并將語義關(guān)聯(lián)以依存結(jié)構(gòu)呈現(xiàn)。使用語義依存刻畫句子語義影晓,好處在于不需要去抽象詞匯本身镰吵,而是通過詞匯所承受的語義框架來描述該詞匯,而論元的數(shù)目相對詞匯來說數(shù)量總是少了很多挂签。
語義依存分析目標(biāo)是跨越句子表層句法結(jié)構(gòu)的束縛疤祭,直接獲取深層的語義信息。例如以下三個句子饵婆,用不同的表達(dá)方式表達(dá)了同一個語義信息勺馆,即張三實(shí)施了一個吃的動作,吃的動作是對蘋果實(shí)施的侨核。
語義依存分析不受句法結(jié)構(gòu)的影響草穆,將具有直接語義關(guān)聯(lián)的語言單元直接連接依存弧并標(biāo)記上相應(yīng)的語義關(guān)系。這也是語義依存分析與依存句法分析的重要區(qū)別芹关。
語義依存關(guān)系分為三類续挟,分別是主要語義角色,每一種語義角色對應(yīng)存在一個嵌套關(guān)系和反關(guān)系侥衬;事件關(guān)系诗祸,描述兩個事件間的關(guān)系跑芳;語義依附標(biāo)記,標(biāo)記說話者語氣等依附性信息直颅。
Pyhanlp 實(shí)戰(zhàn)依存句法
最后博个,我們通過 Pyhanlp 庫實(shí)現(xiàn)依存句法的實(shí)戰(zhàn)練習(xí)。這個過程中功偿,我們選用 Dependency Viewer 工具進(jìn)行可視化展示盆佣。可視化時械荷, txt 文檔需要采用 UTF-8 編碼共耍。
首先,引入包吨瞎,然后可直接進(jìn)行分析:
得到的結(jié)果:
然后痹兜,我們將結(jié)果保存在 txt 文件中:
最后,通過 Dependency Viewer 工具進(jìn)行可視化颤诀,如果出現(xiàn)亂碼字旭,記得把 txt 文檔保存為 UTF-8 式即可,得到的可視化結(jié)果如下圖所示:
總結(jié)
本文崖叫,首先為大家介紹了語法體系遗淳,以及如何根據(jù)語法體系確定一個句子的語法樹,為后面的句法分析奠定基礎(chǔ)心傀。
接著屈暗,介紹了依存句法,它的目的是通過分析語言單位內(nèi)成分之間的依存關(guān)系揭示其句法結(jié)構(gòu)脂男,隨之講解了依存句法中的五大依存關(guān)系恐锦。
最后,進(jìn)一步介紹了區(qū)別于依存句法的語義依存疆液,其目的是分析句子各個語言單位之間的語義關(guān)聯(lián)一铅,并將語義關(guān)聯(lián)以依存結(jié)構(gòu)呈現(xiàn)。
文章結(jié)尾堕油,通過 Pyhanlp 實(shí)戰(zhàn)以及可視化潘飘,帶大家進(jìn)一步加深對中文依存句法的了解诚欠。
參考資料以及推薦閱讀: