1. 程式人生 > 實用技巧 >基於語法樹的語句識別演算法

基於語法樹的語句識別演算法

>>> hot3.png

需求分析

自然語言處理的人機對話中,使用者的語句表達具有多樣性,例如“我喜歡你”、“你被我喜歡著”表達的是同一個意思,如何讓計算機理解識別這些多樣化的句子,面對各式各樣的同義問題,都能作出相同的問答,本文嘗試通過語法樹、依賴樹等工具將多樣化的問句轉換成較為統一形式的句子,以方便計算機識別這些語句。

特徵表示

我們的目標是解決中文語句的多樣性,考慮到如果直接使用詞彙作為特徵,有可能由於多樣化的組合導致問題複雜化,例如:①你被我喜歡著;②她被我喜歡著,都可以轉換成相同的形式 ①我喜歡你;我喜歡她。這些相同的形式就作為語句的分類,計算機根據這些分類來組織回答。

上述例子中,我們可以考慮通過標註來解決組合複雜化的問題,可以根據領域知識進行語義標註,也可以使用語法詞性標註。考慮到領域知識歸納的困難度,本文使用第二種方法來解決問題。例如:①我喜歡你;我喜歡她,都可以標註成PN + V + PN。

特徵選取

自然語言處理中存在語法樹、依賴樹這兩種工具,我們可以考慮使用語法樹、依賴樹的詞性標註、語法邊、樹結構等作為特徵,表示同一類進行的語句,同一類的語句給它記錄一條規則使之轉換至統一形式的語句。

模型選擇

特徵選取完後,如何將同一類的語句給它記錄一條規則使之轉換至統一形式的語句,本文使用同步樹替換文法模型。

資料整理自 Sentence Compression as Tree Transduction.pdf

一種基於同步樹替換文法的統計機器翻譯模型.pdf 摘抄自《人工智慧原理及其應用(第2版)》
Sentence Compression as Tree Transduction 一文中,Abstract摘要 這樣寫道:
“This paper presents a tree-to-tree transduction method for sentence compression. Our model is based on synchronous tree substitution grammar, a formalism that allows local distortion of the tree topology and can thus naturally capture structural mismatches.”作者提出了一種基於同步樹替換文法
(STSG,synchronous tree substitution grammar)的樹-樹轉換句子壓縮演算法。
一種基於同步樹替換文法的統計機器翻譯模型 一文中,Abstract摘要 這樣寫道:
提出一種基於同步樹替換文法 的機器翻譯模型。相對於基於短語的模型,此模型可以對遠距離結構性調序和非連續短語翻譯進行建模;相對於基於同步上下文無關文法 模型,此模型可以對任何層次上的樹節點調序進行建模。”

上下文無關文法(context free grammar)是喬姆斯基提出的一種能對自然語言語法知識進行形式化描述的方法。在這種文法中,語法知識使用重寫規則 表示的。下面舉一個例子:
我們對一個英文子集“The professor trains Jack. ”作上下文無關文法分析。
人工編寫的重寫規則 為:

語句→句子 終結符
句子→名詞短語 動詞短語
動詞短語→動詞 名詞短語
名詞短語→冠詞 名詞
名詞短語→專用名詞
冠詞→the
名詞→professor
動詞→wrote
名詞→book
動詞→trains
專用名詞→Jack
終結符→.
使用上面的重寫規則,就可以把句子改寫成一棵文法分析樹(parse tree,語法樹),

01205429_EFiW.jpg


上下文無關文法反映了自然語言結構的層次特性,用它對自然語言的語法 進行形式化描述既嚴謹,又便於計算機實現。知識點:
在重寫規則中,作為終結符 的有英語單詞the, professor, wrote, book, trains, Jack 及 “.”,其餘均為非終結符 。也可以這樣理解,在上圖中,葉子結點 就是終結符非葉子結點 就是非終結符 。並且,“語句”是一個特殊的非終結符,稱為起始符 ,可以看做根結點 。上述文法之所以被稱為上下文無關,其原因是這些重寫規則的左邊均為孤立的非終結符,它們可以被右邊的符號串替換,而不管左邊出現的上下文,“冠詞”並不影響“名詞”替換成“professor”。

上下文無關文法反映的僅是一個句子本身的層次結構和生成過程 ,它不可能與另外的句子發生關係。而自然語言是上下文有關的,句子之間的關係也是客觀存在的。於是,喬姆斯基提出了變換文法(transformational grammar)。變換文法認為,英語句子的結構有深層表層 兩個層次。例如,句子“She read me a story.”和“She read a story to me.”的表層結構不一樣,但它們指的是同一回事,即這兩個句子的深層結構是一樣的。再例如,主動句與被動句。在變換文法中,句子深層結構和表層結構之間 的變換是通過變換規則 實現的,變換規則把句子從一種結構變換成另一種結構。知識點:
變換文法的主要演算法思路 就是,先用上下文無關文法建立相應句子的深層結構,然後再應用變換規則將深層結構變換為符合人們習慣的表層結構。目前許多雙語翻譯、縮句、句子成分移位的解決正是利用了這種思想。

01205429_Kwwe.jpg

其實變換規則就是,記錄這兩句平行預料的語法樹結構,以後新進來一個句子,只要語法樹結構跟上面的Source的語法樹結構完全匹配,就可以應用這條規則,改寫成Target的語法樹,然後得到目標句子。
我的理解,同步樹替換文法就是變換文法。有了上面的知識點,我們可以來看同步樹替換文法 的定義:

01205429_c4Wu.jpg


在上述定義中,提到“元樹 (elementary tree)”,我們來看一下元樹的定義:

01205429_AVzd.jpg


01205429_mEZu.jpg


從定義及例子中,我們可以看出,元樹是完整的子樹 子樹缺失了某些部分,但必須保證的是,元樹中的每個結點的第一層子結點必須是完整的,像PP(TO(to))這種就是不合法 的。樹核向量中所用到的應該也稱為子樹。
為什麼提到元樹的呢?因為涉及到提取到的規則是否具有泛化能力,舉個例子S(VBS WJ)既可以代表S(VBA(P NG VO) WJ),也可以代表S(VBA(XX XX) WJ),這樣就可以防止提取到的變換規則的量太多而記錄不下。
在基於同步樹替換文法的縮句演算法中,規則的約束條件為,樹-樹間的成分要麼是成對的對齊成分,要麼是被刪除成分。變換規則提取學習演算法一般為:

01205430_HbGH.jpg

演算法實現

喬姆斯基提出變換文法(transformational grammar),變換文法認為,句子的結構有深層 表層 兩個層次,例如:
She read me a story. She read a story a story to me.
上述兩個句子的表層結構不一樣,但它們指的是同一回事,即其深層結構是唯一的。
本專案使用STSG(同步樹替換文法) 依賴樹(句子主幹提取)完成中文句子從表層結構到深層結構的轉換。
使用依賴樹進行「句子主幹提取」其主要原理跟STSG 一樣,只不過STSG 使用語法樹 來提取規則,而語法樹使用詞性節點來表示句子的語法資訊,樹的結構較為複雜,針對句子成分移位 問題很難提取出較有泛化能力 的變換規則;而依賴樹 使用語義邊來表示句子的語法資訊,樹的結構較為簡單,這時可以提取到較有泛化能力 的變換規則。但是,目前這種規則只能人工編寫,缺少像STSG 規則自學習演算法 那樣強大的支撐,而人工編寫規則很難覆蓋全面
目前規則使用七元組:<邊屬性名,dep詞項,dep詞性,dep轉換後位置,gov詞項,gov詞性,gov轉換後位置>。七元組就是特徵,詳見第3節 特徵選取。

句子主幹提取

擴充套件

162433_plOe_1451225.png

專案程式碼

http://git.oschina.net/Keyven/IKeyven

Reference

人工智慧原理及其應用(第2版) 王萬森 編著

Sentence Compression as Tree Transduction.pdf

一種基於同步樹替換文法的統計機器翻譯模型.pdf

提取中文句子主謂賓的Java實現

轉載於:https://my.oschina.net/keyven/blog/513129