023章 自然語言通訊

Post date: 2013/5/27 下午 02:32:24

本章我們看到人們如何以自然語言相互溝通,並且電腦代理人如何可以加入對話。

通訊(communication)乃透過產生和感知一套共通慣例系統中的信號(sign),造成有意圖的資訊交

換。大多數動物用信號表示重要資訊:這裡有食物、附近有掠奪者、前進、撤退、來交配吧。在一

個部分可觀察的世界裡,通訊可以幫助代理人成功,因為代理人能夠學到其他代理人觀察到或推論

的資訊。人類是所有物種最健談的,且若電腦代理人要有幫助,它們會需要學習使用語言。在本章

我們觀察用來溝通的語言模型。目標為對溝通作深刻理解的模型必然需要比目標為比如垃圾郵件分

類的簡單模型更為複雜。我們由句子的片語結構的文法模型開始,增加語意於模型,然後應用其於

機器翻譯與語音辨識。

片語結構文法

第22 章的n 元語言模型是基於文字序列。這模型最大的問題為資料稀疏——含105 個單字的字

彙,並有1015 個三元機率需估計,並且所以甚至1 兆個字的語料庫將無法支援對於它們所有的可靠

度估計。我們可以透過一般化來解決稀疏的問題。對於「black dog」比「dog black」還來得頻繁的

事實與相似的觀察,我們可以形成在英文裡形容詞往往放在名詞之前的一個歸納(其中他們傾向跟隨

法語名詞:「chien noir」是最頻繁的)。當然總是有例外的,「galore」是個跟在所修飾名詞之後的

形容詞。儘管有例外,詞彙範疇(也稱為部分語音)的想法(如名詞或形容詞)是個很有用的一般化——

本身就很有用,但更有用的原因在於,當我們將這些詞彙範疇串連在一起形成句法範疇(如名詞片語

或動詞片語),並且合併這些句法範疇成為句子的片語結構之樹狀表示:巢狀片語,每個以目錄標示。

機率的語境自由語法(the probabilistic context-free grammar 或PCFG[1])

語言

非終端符號

終端符號

產生能力(generative capacity)

遞迴可列舉文法(recursively enumerable grammar)

語境限定文法(context-sensitive grammar)

語境自由文法(或稱「文本無關文法」,context-free grammar,或簡稱CFG)

正規文法(regular grammar)

Fernando Pereira 指出的那樣:「年紀越大,我研究的Chomsky 文法層次越低」。

ε0 的詞典

首先我們定義一個詞典(lexicon),即允許的辭彙列表。這些詞語以字典使用者熟悉的範疇或詞性

來分類:名詞、代名詞、指物的名稱、指事的動詞、修飾名詞的形容詞,以及修飾動詞的副詞。冠

詞(像是the)、介系詞(in)和連接詞(and)。圖23.1 表示語言ε0 的一個小型詞典。

開放類(open classes)

封閉類(closed classes)

ε0 的文法

下一步則是將詞語組合成片語。圖23.2 表示ε0 的文法,對於6 個句法範疇的每個規則和每個重

寫規則的實例[2]。圖23.3 表示一個句子「Every wumpus smells.」的剖析樹。剖析樹給出個建設性的

證明,其中詞彙的字串確實是個根據ε0 規則的句子。ε0 的文法產生如下列廣大的英語句子:

John is in the pit

The wumpus that stinks is in 2 2

Mary is in Boston and the wumpus is near 3 2

不幸的是,該文法會過度產生(overgenerate),也就是說,它可以產生不符合文法的句子,例如「Me go

Boston」和「I smell pit gold wumpus nothing east.」。同時它也可能生產不足(undergenerate):很多英

語中的句子會被它排除,例如「I think wumpus is smelly.」。我們稍後將會看到如何產生較佳的文法,

對於現在我們注意在現有的文法能做些什麼。

句法分析(剖析)

剖析是一個根據文法的規則,分析詞彙的串列來發現它的片語結構的程序。圖23.4 表示我們從

符號S 開始,並且對於具有詞彙在葉結點的樹由上往下搜尋,或者我們可以詞彙開始並且由下往上

搜尋到頂點S。由上而下以及由下而上剖析兩者都可能沒有效率,然而因為他們可能最後在重複搜

尋空間的區域導致死胡同。

考慮下面兩個句子:

Have the students in section 2 of Computer Science 101 take the exam.

Have the students in section 2 of Computer Science 101 taken the exam?

儘管它們的前10 個詞語是相同的,但是這兩個句子卻有截然不同的剖析結果,這是因為第一個句子

是一個命令句,而第二句則是一個問句。從左至右的剖析演算法必須猜測第一個詞語是否為某個

命令句或是問句的組成部分,並且至少要分析到第11 個詞語的時候——即take 或者taken——

才能知道這個猜測結果是否正確。若演算法猜測錯誤則所有路徑將必須原路折回到第一個詞彙,

並且以別的詮釋重新分析整個句子。

我們一旦發現「the students in section 2 of Computer Science 101」是一個NP,那麼我們就將這個結果記錄在一個被稱為圖(chart)的資料結構中。

圖剖析器(chart parser)

CYK 演算法

杭士基正規形式(Chomsky Normal Form)

學習PCFG 的機率

PCFG 具有許多規則,每個規則具有它的機率。這暗示著,從資料中學習語法可能會比知識工

程方法要好。若我們給出正確的剖析句子的語料庫(一般稱為樹狀庫),學習會最容易。Penn 樹狀庫

(Marcus et al., 1993)是最為人所知,它由3 百萬字所組成,其中以詞性和剖析樹結構標註,使用人工

輔助一些自動化工具。圖23.6 表示從Penn 樹狀庫的有註解之樹。

內外演算法(inside-outside algorithm)

原型

語境自由與馬可夫模型的比較

PCFG 的問題在於它們是語境自由的。也就意味著P(「eat a banana」)和P(「eat a bandanna」)

之間的差別僅僅取決於P(Noun→「banana」)和P(Noun→「bandanna」)之間的差異,而不依賴於「eat」

和其他受詞之間的關係。二階或更高的馬可夫模型,給出個充分大的語料庫,將知道關於「eat a

banana」更為可能。我們可以合併PCFG 與馬可夫模型來得到兩者的最佳。這個簡單的方法是以藉

由兩個模型所計算出來的機率之幾何平均,估計一個句子的機率。則我們會知道關於「eat a banana」

是可能從文法的或是詞彙兩者的觀點。但它仍不回在「eat a slightly aging but still palatable banana」

拾起介於「eat」和「banana」之間的關係,因為這裡的關係比兩個字還來得多。增加馬可夫模型的

階數並不會得到準確地關係,為了達到這我們可以使用詞彙化PCFG,如同下一個章節所要描述的。

擴充文法和語意解釋

詞彙化PCFGs

為了得到關於動詞「eat」與名詞「banana」相對於「bandanna,」之間的關係,我們可以使用詞

彙化PCFG,其中規則的機率決定於剖析樹中兩個單字之間的關係,並非僅在句子中鄰近的單字。

當然,我們無法得到關於樹之中關於每一個單字的機率,因為我們不會有足夠的訓練資料來估計所

有這些的機率。片語引導開頭的觀念是很有用的——最重要的單字。因此,「eat」是動詞片語(VP)

「eat a banana」的開頭以及「banana」是名詞片語(NP)「a banana」的開頭。我們使用格式VP(v)來

表示一個片語其中開頭單字為v 分類為動詞片語(VP)。我們稱這個動詞片語的分類是以開頭變數v

的擴充。

擴充文法規則的正式定義

擴充規則是複雜的,所以將給它們一個正式的定義,藉由表現出如何將擴充規則可轉換到邏輯

句子。這句子將有確定子句的形式(參考第7.5.3 節),因此結果稱為確定子句文法或DCG。我們將使

用個例子的規則版本,以一個新的符號片段,從名詞片語的詞彙化文法:

NP(n) → Article(a) Adjs(j) Noun(n){Compatible(j, n)}

語言生成

格位一致與和主詞-動詞一致

我們看到在23.1 節簡單的文法對於ε0 過度產生,產生非句子像是「Me smell a stench.」。為了

避免這個問題,我們的文法必須知道當「me」作句子的主詞時,「me」不是合法的NP。語言學家

主張代名詞「I」是主格[4],而「me」是受格。我們可以透過將NP 分成NPS 及NPO 這兩類來修正這

個問題,它們分別表示主格和受格的名詞片語。我們還需要把Pronoun 範疇劃分為兩個範

疇PronounS(包括「I」)和PronounO(包括「me」)。圖23.7 的上半部顯示了格位一致的文法,我們

稱產生出的語言為ε1。應該注意的是,所有NP 的規則都必須加倍,一份用於NPS ,一份用於NPO 。

主詞–動詞一致

語意解釋

為表示如何增加語意於文法中,我們從一個比英語還簡單的例子開始:語意的算數表示。圖23.8

表示個算數表示的文法,其中每個規則是以變數擴增指出片語的語意解釋。數字的語意像是「3」是

數字本身。表示式的語意像是「3 + 4」運算元「+」用於片語「3」和片語「4」的語意。這規則遵守

著合成語意的原則——片語的語意是個分詞的語意函數。圖23.9 表示根據此文法對於3 + (4 ÷ 2)的

剖析樹。這棵剖析樹的根節點是Exp(5)這個運算式,其語意解釋是5。

述詞(predicate)

複雜因素

▋時間和時態

現在假設我們想要表示「John loves Mary」和「John loved Mary」之間的區別。英語採用動詞的

時態(過去式、現在式和未來式)來顯示與一個事件相關的時間。一個表示事件時間的好選擇是12.3

節中的事件演算標記法。

▋量化

考慮句子「Every agent smells a wumpus」。這句子在ε0 底下有唯一的句法剖析,但它這個句子

實際上是有歧義的:它的優先含義是「對於每個代理人存在著代理人感覺到的氣息」,另一個可接

受的意思是「存在著每個代理人感覺到的氣息」[5],兩個解釋可被表示為

∀a a∈Agents ⇒ ∃b b∈Breezes ∧ ∃e e∈Feel(a, b) ∧ During(Now, e);

∃b b∈Breezes ∀a a∈Agents ⇒ ∃e e∈Feel(a, b) ∧ During(Now, e)

標準的量化方法是為文法定義個非實際邏輯語意句子,而是藉由演算法以外的剖析程序轉變為邏輯

句子的準邏輯形式。這些演算法有優先規則比起另一個偏好的計量器範圍——偏好不需要直接地反

映到文法。

▋語用

我們已經說明了一個代理人如何能夠感知一個由詞語組成的字串,並使用文法來導出一組可能

語意詮釋。現在,我們要處理的問題是,透過為每個詮釋選項,增加關於當前狀況的語境從屬資訊,

來完成解釋。最明顯的需要語用資訊的地方在於解決索引詞(indexical)的含義,這是一些直接涉及

當前處境的片語。例如,一個句子「I am in Boston today」是由「I」和「today」所標示的。單字「I」

會被表示為一位流暢的演說者,這會取決於聽者來解讀流暢的意思——這不是一個文法的考量部分

而是流暢的問題,使用現有狀態的文本來說明流暢。

言詞行動(speech act)

▋遠距離從屬資訊

問題引導了一個文法上的複雜度。在「Who did the agent tell you to give the gold to?」的最後一個

字「to」應該被剖析為[PP to ],其中「」註記為名詞片語所缺少的差距或是軌跡,缺少的名詞

片語是由句子中第一個字「who」所授權的。一個複雜的擴增系統被用於確保缺少名詞片語和許可

詞在正確的方法是匹配的,並且禁止在錯誤地方之差距。

▋歧義

某些情況下,聆聽者能意識到發言中所包含的歧義。以下列出有一些從報紙中摘錄的頭條範例:

Squad helps dog bite victim.

Police begin campaign to run down jaywalkers.

Helicopter powered by human flies.

Once-sagging cloth diaper industry saved by full dumps.

Portable toilet bombed; police have nothing to go on.

Teacher strikes idle kids.

Include your children when baking cookies.

Hospitals are sued by 7 foot doctors.

Milk drinkers are turning to powder.

Safety experts say school bus passengers should be belted.

不過大多數時候我們所聽到的語言似乎是沒有歧義的。

辭彙歧義

句法歧義

語意歧義(semantic ambiguity)

轉喻(metonymy)

隱喻(metaphor)

排歧

1. 世界模型(world model):

一個命題在世界中發生的可能性。給定我們所知的相關世界,演講者有可能說「I’m dead」表示

「I am in big trouble」,而不是「My life ended, and yet I can still talk」。

2. 心智模型(mental model):

說話者形成欲將事實傳達給聆聽者之意圖的可能性。這個方法結合了有關說話者相信什麼的模

型,以及說話者相信聆聽者相信什麼的模型等等,依此類推。例如,在聽到某政治家說「I am not

a crook」(我不是騙子)後,我們可能只會賦予命題「該政治家不是罪犯」50%的機率,而把99.999%

的機率賦給命題「該說話人不是一根彎曲的牧羊人手杖」。然而,我們選擇前者解釋因為它是

較有可能說的事。

3. 語言模型(language model):

已知說話者具有傳達某個特定事實的意圖,某個特定的詞語字串被選中的可能性。

4. 聲學模型(acoustic model):

已知說話者已經選擇了一個特定的詞語字串,則產生一個特定聲音序列的可能性。第23.5 節涵

蓋了語音辨識。

機器翻譯

機器翻譯是把用某種自然語言(原文語言)寫成的文本自動翻譯成另外一種語言(目的語言)。這是

對於電腦最先應用領域展望(Weaver,1949),但僅在過去的數十年這項技術才被廣泛地使用。底下

這是本書第1 章第1 頁的一小段:

人工智慧是個在科學與工程之中的最新領域。真正的研究工作在第二次世界大戰結束後迅速展

開,直到1956 年,它被正式命名為「人工智慧」。如同分子生物學,AI 往往被其他領域的科

學家譽為「我最想參與的研究領域」。

(AI is one of the newest fields in science and engineering. Work started in earnest soon after World

War II, and the name itself was coined in 1956. Along with molecular biology, AI is regularly cited as

the “field I would most like to be in” by scientists in other disciplines.)

中間語言(interlingua)

機器翻譯系統

所有的翻譯系統必須塑模來源和目標語言,但是系統隨著它們所用得模型類型有所不同。一些

系統嘗試分析原文語言文本,一直到將其表示為中間語言,然後從中間語言表示再產生目標語言的

語句。這是困難的,因為它包含了三個未解決的問題:建立完整知識來表達任何事,剖析表達且從

該表達生成句子。

統計機器翻譯

現在我們已經看過翻譯任務可能如何地複雜,應該不會驚訝於許多成功的機器翻譯系統,是藉

由使用統計蒐集巨大的文件語料庫之訓練機率模型。這方法不需要國際語觀念的複雜本體,也不需

要手工製作來源的文法和目標語言,或是手工標示樹狀庫。所有它需要的是資料——從可能已學習

的翻譯模型中樣本翻譯。

語言模型(language model)

翻譯模型(translation model)

診斷

雙語語料庫

找出個法語翻譯f 是關於三個步驟:

1. 將英語句子拆散為片語e1, ..., en。

2. 對於每個片語ei 選定個相對應的法語片語fi。我們使用P(fi | ei)的符號代表片語機率,其中fi 是

來自於ei 的翻譯。

3. 選擇個片語的排列f1, ..., fn。我們將會以一個方式說明這個看起來有點難懂的排列,但是設計有

一個簡單的機率分佈:對於每個fi,我們選擇一個失真di,這是個單字的號碼其中片語fi 的移動

相對於fi−1,正是往右移動,負是往左移動,並且零是fi 緊跟著fi−1。

可估計機率的啟發式局部剪枝搜尋法(4.1.3 節)已被證

實,可有效尋找接近最可能翻譯。

所有剩餘的是學習片語和失真機率。我們描繪這個程序,詳細請參考在章末的部分。

1. 找平行文本:

首先蒐集平行雙語語料庫。例如,議事錄[9]是議會辯論的紀錄。加拿大、香港以及其他一些國

家都製作雙語的議事錄,歐盟用11 種語言出版它的官方文件,聯合國出版的更是多語言文件。

雙語文本也存在於線上,某些網頁以統一位置資源(URL)平行公布平行目次,像是/en/對於英

文頁面、/fr/對應相符的法語頁面。領導統計翻譯系統訓練平行文本的億萬單字和單一語言文

本的數十億單字。

2. 切分句子:

翻譯的單元是語句,因此我們將語料庫分解成句子。句號是最強的句子結束旗標,但是要考慮

到「Dr. J. R. Smith of Rodeo Dr. arrived.」;只有最後一個句號才表示一條句子的結束。一個方

法來決定若句號結束個句子,訓練個模型需要單字周圍和他們的詞性做為特徵。這個方法達到

大約98%的精確度。

3. 句子對齊:

對英語版本的每條語句,判斷它所對應的法語語句有哪(些)條。通常,英語的下一句話和法語的

下一句話以1:1 的匹配相對應,但是有時也有變化:一種語言中的一條語句會被分割成2:1 的匹

配,或者兩個語句的順序要交換,造成一個2:2 的匹配。單看語句長度(亦即,短句應與短句對

齊),利用Viterbi 演算法的一個變形,就可能以90%到99%間的準確度對齊它們(1:1,1:2 或2:2

等)。如果採用兩種語言都常用的界標,諸如數詞或專用名詞,或者一些我們知道從雙語字典中

的翻譯無歧義的單字,甚至能得到更好的對齊結果。例如,若第3 個英語和第4 個法語句子包

含字串「1989」且近鄰句子沒有,這是個句子該排列在一起的好證據。

4. 排列片語:

在一個句子的範圍,片語可能以相似於所使用的句子排列用一個程序排列,但需要不斷改善。

當開始時我們沒有方法知道「qui dort」和「sleeping」排列在一起,但我們可藉由證據的聚集程

序來達成排列。透過所看過的所有實例句子,我們注意到「qui dort」和「sleeping」頻繁地共同

出現,並且在排列的句子對,除了「qui dort」在其他句子沒有如此頻繁地共同出現「sleeping」。

透過我們的語料庫一個完整的片語排列,給出我們一個片語的機率(經過適當的潤飾)。

5. 摘錄失真:

有一個片語的排列我們可定義失真機率。簡單地計算語料庫中對於每個距離失真多常發生d = 0,

±1, ±2, ..., 並且使用潤飾。

6. 隨著EM 提高判斷:

使用期望最大化來提高P( f | e)和P(d)的判斷值。我們在步驟E 以當前值計算這些參數最好的排

列,然後在步驟M 更新判斷並且反覆過程至收斂。

語音識別

語音識別這個任務是根據給定聲學信號來辨識說話人所說的單詞序列。這已經成為人工智慧的

主流應用其中之一——數以百萬的人們每天使用語音識別互動來操控語音郵件系統、從手持裝置搜

尋網頁、以及其他應用。當需要免持操控時例如操作機器,語音是具有吸引力的選擇。

分段

連音

聲學模型

語言模型

雜訊通道模型

聲學模型

聲波是透過空氣傳播的壓強的週期性變化。當這些波撞擊到麥克風的震動膜,往復的運動產生

電流。一個類比信號到數位信號的轉換器在由取樣率所決定的離散區間間隔上測量電流的強度——

電流強度對應著聲波的振幅。語音聲響主要的範圍在100Hz(每秒100 次)到1000 Hz,典型的取樣率

是在8 kHz(CDs 和mp3 檔案是以44.1 kHz 取樣)。而每次測量的精度取決於量化因數;典型的語音

識別系統使用8 到12 位元(二進位位元)。這意味著一套使用8 位元量化和8 千赫茲取樣率的低端系

統每分鐘的語音需要大約

音素(phone)

音位(phoneme)

語音系統概括(summarization)

碼框(frame)

特徵

梅爾式頻率聲譜係數(mel frequency cepstral coefficient)或MFCC

音素模型

發音模型

諧音

語言模型

對於一般用途語音識別,語言模型可為一個從學習自寫出的句子語料庫的文本之n 元模型。然

而,口說的語言有著和寫作的語言不同的特徵,所以最好得到一個口說語言的文字記錄語料庫。對

於特定任務語音識別,語料庫必須為特定任務:要建立航空訂位系統,得到事前電話的文字記錄。

這也對於特定任務字彙有幫助,像是列出所有服務的機場與城市以及所有航班號碼。

搭建語音識別器

語音識別系統的品質依賴於其所有組成部分的品質——這些組成部分包括語言模型、詞語發音

模型、音素模型以及用於從聲學信號中提取頻譜(spectral)特徵的信號處理演算法。我們已經討論過

如何建構語言模型,而關於信號處理的細節則留給了其他教科書。還剩下發音模型和音素模型。關

於發音模型的結構——諸如圖23.17 中所示的tomato 模型——通常是手工建立起來的。現在對於英

語和很多其他語言,我們已經可以找到很多大型讀音詞典,儘管其精確度良莠不齊。三態音素模型

的結構對所有的音素都相同,如圖23.16 所示。另外,剩下機率本身。

總結

自然語言理解是人工智慧中最重要的子領域之一。與人工智慧的其他領域不同的是,自然語言

理解需要有關實際人類行為的經驗化研究——結果證明這是複雜且有趣的。

● 正規語言理論以及片語結構(phrase structure)文法(特別是語境自由文法)都是處理自然語言的有

用工具。機率化文本無關文法(PCFG)形式論被廣泛地使用。

● 在文本無關語言的句子可以在O(n3)的時間被剖析,利用像是CYK 演算法的圖形剖析器,其中

需要文法規則在杭士基正規形式(Chomsky Normal Form)。

樹狀庫可以用於學習文法。從未剖析語料庫的句子也可以學習到文法,但這很少是成功地。

詞彙化PCFG 允許表示某些介於單字間的關係,比起其他的更為一般。

● 為了處理類似主詞與動詞一致以及代名詞格位的問題,擴充(augment)一個文法是很方便的方

法。確定式文法(DCG)是一種允許擴充的形式化方法。透過DCG,剖析和語意解釋(甚至是句子

產生)都可以用邏輯推導實作。

語意解釋(semantic interpretation)也可以用擴充文法處理。

歧義(ambiguity)是自然語言理解中一個很重要的問題;大多數句子有多種可能的解釋,但是通

常僅有一個是合適的。而排歧則依賴於有關世界的、當前語境的以及語言用法的知識。

機器翻譯系統已經採用了一系列技術進行實作,從完整的句法和語義分析到基於單字出現頻度

的統計技術。當前的統計模型是最受歡迎與最成功的。

語音識別系統也是主要基於統計原理。語音系統儘管不完善,仍是受歡迎與有用。

● 機器翻譯和語音識別是自然語言技術的兩個大的成就。其中一個原因是若存在個大的語料庫模

型有好的表現——翻譯和語音是「自然環境下」每天由人們所表現的任務。反之,像是剖析句

子的任務則較不成功,部分原因是沒有存在於「自然環境下」個被剖析句子的語料庫,且部分

原因是剖析本身就是沒有用的。