天然語言處理的人機對話中,用戶的語句表達具備多樣性,例如「我喜歡你」、「你被我喜歡着」表達的是同一個意思,如何讓計算機理解識別這些多樣化的句子,面對各式各樣的同義問題,都能做出相同的問答,本文嘗試經過語法樹、依賴樹等工具將多樣化的問句轉換成較爲統一形式的句子,以方便計算機識別這些語句。html
咱們的目標是解決中文語句的多樣性,考慮到若是直接使用詞彙做爲特徵,有可能因爲多樣化的組合致使問題複雜化,例如:①你被我喜歡着;②她被我喜歡着,均可以轉換成相同的形式 ①我喜歡你;我喜歡她。這些相同的形式就做爲語句的分類,計算機根據這些分類來組織回答。java
上述例子中,咱們能夠考慮經過標註來解決組合複雜化的問題,能夠根據領域知識進行語義標註,也可使用語法詞性標註。考慮到領域知識概括的困難度,本文使用第二種方法來解決問題。例如:①我喜歡你;我喜歡她,均可以標註成PN + V + PN。git
天然語言處理中存在語法樹、依賴樹這兩種工具,咱們能夠考慮使用語法樹、依賴樹的詞性標註、語法邊、樹結構等做爲特徵,表示同一類進行的語句,同一類的語句給它記錄一條規則使之轉換至統一形式的語句。算法
特徵選取完後,如何將同一類的語句給它記錄一條規則使之轉換至統一形式的語句,本文使用同步樹替換文法模型。工具
資料整理自 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,語法樹),人工智能
上下文無關文法反映了天然語言結構的層次特性,用它對天然語言的語法 進行形式化描述既嚴謹,又便於計算機實現。知識點:
在重寫規則中,做爲終結符 的有英語單詞the, professor, wrote, book, trains, Jack 及 「.」,其他均爲非終結符 。也能夠這樣理解,在上圖中,葉子結點 就是終結符,非葉子結點 就是非終結符 。而且,「語句」是一個特殊的非終結符,稱爲起始符 ,能夠看作根結點 。上述文法之因此被稱爲上下文無關,其緣由是這些重寫規則的左邊均爲孤立的非終結符,它們能夠被右邊的符號串替換,而無論左邊出現的上下文,「冠詞」並不影響「名詞」替換成「professor」。
上下文無關文法反映的僅是一個句子自己的層次結構和生成過程 ,它不可能與另外的句子發生關係。而天然語言是上下文有關的,句子之間的關係也是客觀存在的。因而,喬姆斯基提出了變換文法(transformational grammar)。變換文法認爲,英語句子的結構有深層 和表層 兩個層次。例如,句子「She read me a story.」和「She read a story to me.」的表層結構不同,但它們指的是同一回事,即這兩個句子的深層結構是同樣的。再例如,主動句與被動句。在變換文法中,句子深層結構和表層結構之間 的變換是經過變換規則 實現的,變換規則把句子從一種結構變換成另外一種結構。知識點:
變換文法的主要算法思路 就是,先用上下文無關文法創建相應句子的深層結構,而後再應用變換規則將深層結構變換爲符合人們習慣的表層結構。目前許多雙語翻譯、縮句、句子成分移位的解決正是利用了這種思想。
其實變換規則就是,記錄這兩句平行預料的語法樹結構,之後新進來一個句子,只要語法樹結構跟上面的Source的語法樹結構徹底匹配,就能夠應用這條規則,改寫成Target的語法樹,而後獲得目標句子。
個人理解,同步樹替換文法就是變換文法。有了上面的知識點,咱們能夠來看同步樹替換文法 的定義:spa
在上述定義中,提到「元樹 (elementary tree)」,咱們來看一下元樹的定義:.net
從定義及例子中,咱們能夠看出,元樹是完整的子樹 或子樹缺失了某些部分,但必須保證的是,元樹中的每一個結點的第一層子結點必須是完整的,像PP(TO(to))這種就是不合法 的。樹核向量中所用到的應該也稱爲子樹。
爲何提到元樹的呢?由於涉及到提取到的規則是否具備泛化能力,舉個例子S(VBS WJ)既能夠表明S(VBA(P NG VO) WJ),也能夠表明S(VBA(XX XX) WJ),這樣就能夠防止提取到的變換規則的量太多而記錄不下。
在基於同步樹替換文法的縮句算法中,規則的約束條件爲,樹-樹間的成分要麼是成對的對齊成分,要麼是被刪除成分。變換規則提取學習算法通常爲:翻譯
喬姆斯基提出變換文法(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節 特徵選取。
http://git.oschina.net/Keyven/IKeyven
人工智能原理及其應用(第2版) 王萬森 編著