022 自然語言處理

Post date: 2013/5/12 下午 02:06:49

本章中,我們來看看,要如何利用以自然語言來表達的大量知識。

人類(學名homo sapiens,意為有智慧之人)因其具有語言的能力,使得他在物種間顯得與眾不

同。100,000 年前的某處,人類已經學習到如何說話,然後大約7,000 年前人類已經學習到如何書寫。

儘管黑猩猩、海豚以及其他一些哺乳動物也表現出包含數百個符號的辭彙,但是只有人類能夠

在任何的主題上使用離散符號,確實地傳達不限量的不同本質的訊息。

當然,人類還有其他一些獨一無二的屬性:沒有其他物種會穿衣服、能夠創作藝術,或者是一

天看三個小時的電視。但是當Turing 提出他的測試時(參見第1.1.1 節),他將之建立在語言的基

礎上,而非藝術或者電視。我們之所以為想要電腦代理人具有處理自然語言的能力的兩個主要原因

有第一,可以與人類溝通,我們將在第23 章中繼續這個主題。第二,從書寫出來的語言中獲取訊息,

這是本章的重點。

在網路上有幾兆個資料頁面,幾乎都以自然語言來表達。代理人若想做知識獲取必須要能夠懂

得(至少部分懂得)人類使用的充滿歧義且難以處理的語言。我們檢驗這個問題會從特定的資訊尋找任

務的觀點來看:文本分類、資訊檢索和資訊擷取。在敘述一些任務的一個共同因數是語言模型的使

用:預測語言表達的機率分佈的模型。

語言模型

正規語言,就如Java 或Python 程式語言一樣,有精確定義的語言模型。語言可以被定義為字串

的集合;「print(2 + 2)」在Python 語言裡是合法的程式,然而「2)+(2 print」就不是了。既

然存在有無限數量的合法程式,它們就不是可列舉的;取而代之的是它們以規則的集合來被定義,

稱做文法。正規語言也有定義程式含義或語意的規則;舉例來說,該些規則陳述「2 + 2」的「含

義」是4,而「1/0」的含義是錯誤提示。

N 元字元模型

最終來說,書面文字是由字元所組成——英文(或其他語言裡更多的異國字元)的字母、數字、標

點符號和空白。因此,一個最簡單的語言模型就是字元序列上的機率分佈。如同第15 章中所示,我

們用P(c1: N)來表示N 字元的一串序列的機率,從c1 到cN。在一個網路集合中,P(「the」) = 0.027

和P(「zgq」) = 0.000000002。長度為n 的一串的書寫符號稱為一個n 元(希臘字根,用以書寫或當作

字母),特殊例子有「一元(unigram)」代表1 元,「二元(bigram)」代表2 元,「三元(trigram)」代表

3 元。一個由n 字母序列的機率分佈模型因此稱做n 元模型(但是要注意到:n 元模型可以是組成在

詞語序列、音節或其他一元上,而非僅於字元上)。

馬可夫鍊

我們將文本體稱做語料庫(plural corpora),在拉丁語中這個字是身體的意思。

語言辨識

平滑n 元模型

n 元模型的主要複雜性在於語料庫的訓練僅提供真實機率分佈的估計。對於一般的字元序列如

「th」,任何英文語料庫都可以有一個很好的估計:所有三元項中大約1.5%。另一方面來說,「ht」

很罕見——字典中沒有以ht 為開頭的字。有可能在訓練過的標準英語語料庫中這個序列的計數為

零。這代表了我們應該假設P「( th」) = 0嗎?如果我們做這樣假設,那麼這段文字「The program issues

an http request」為英語的機率將會是零,這看起來並不正確。對於一般化我們遇到了問題:我們希

望我們的語言模型對於沒有見過的文字可以將之一般化得宜。僅因我們之前未遇過「http」並不能

代表我們的模型於是宣稱這段文字是不可能的。因此,我們會將我們的語言模型做些調整使得被訓

練過的語料庫中,計數為零的序列會被賦予很小的非零機率(且其它的計數值也會被輕微的向下調整

使得機率總和仍為1)。調整低頻率的計數機率的程序稱做平滑。

退回模型

線性插值平滑(linear interpolation smoothing)

由最大期望演算法(expectation-maximization algorithm)

評價模型

利用這麼多可能的n 元模型——一元、二元、三元、不同λ 值的插值平滑等——我們要怎麼挑

選模型呢?我們可以使用交叉驗證來評價模型。把你的語料庫分割為一個訓練語料庫和一個驗證語

料庫。根據訓練資料確定模型的參數。然後在驗證語料庫上評估模型。

評價可以是一個特定任務指標,如同語言辨識的正確性量測。另外,我們可以有一個無關任務

模型的語言質量:然後,透過模型計算賦予測試語料庫的機率;機率越高越好。這個指標顯的不方

便因大型語料庫的機率佔非常小的數量,且浮點下溢也造成了一個問題。

N 元單字模型

現在我們從字元n 元模型轉向單字。對於單字與字元模型方法的應用是相同的。主要的差異在

於詞彙——組成語料庫與模型的符號集——較大。多數語言只含有100 個字元,且有時我們建構字

元模型時甚至是更為嚴格的,例如將「A」「a」看成是同樣的符號,或者將所有的標點看程式同樣

的符號。但單字模型我們有至少數萬甚至上百萬的符號。這麼寬的範圍是因為一個單字的組成並不

明確。在英語中由空白所區隔開之字母的排列稱為單字,但在某些語言裡如中文來說單字並非由空

白所區隔,即使是在英文裡也需要對單字的邊界更明確的策略來判定其為一個單字: 「ne’er-do-well」

裡有幾個單字?或在「(Tel:1-800-960-5660x123)」中呢?

文本分類

我們要更入探討文本分類的任務,也被稱為範疇化:給訂某類型的文本,判斷出它屬於預先定

義好的類別集合中的哪一類。語言辨識和流派分類即是文本分類的例子,就如情緒分析(判斷一部電

影或產品評論是正面性或反面性的)與垃圾郵件偵測[將電子郵件訊息分類為垃圾郵件(spam)或非垃

圾郵件(not-spam)]。既然「非垃圾郵件」是很冗長的,研究者創造正常郵件(ham)這個詞來代表非垃

圾郵件。我們可以把垃圾郵件的偵測當成受監督學習中的一種問題。訓練集隨時就緒:正面性(垃圾

郵件)例子放在我的垃圾郵件資料匣裡,負面性(ham)例子則放在我的收件匣。下面是一段摘錄:

Spam: Wholesale Fashion Watches -57% today. Designer watches for cheap...

Spam: You can buy ViagraFr$1.85 All Medications at unbeatable prices!...

Spam: WE CAN TREAT ANYTHING YOU SUFFER FROM JUST TRUST US...

Spam: Sta.rt earn*ing the salary yo,u d-eserve by o’btaining the prope,r crede’ntials!

Ham: The practical significance of hypertree width in identifying more...

Ham: Abstract:We will motivate the problem of social identity clustering:...

Ham: Good to see you my friend.Hey Peter, It was good to hear from you....

Ham: PDS implies convexity of the resulting optimization problem (Kernel Ridge...

從這段摘錄我們可以開始蒐集到在哪些可能是好的特徵,可加進受監督的學習模型中。

對抗性任務

特徵選擇

透過資料壓縮來做分類

分類的另外一種看法是資料壓縮裡的問題。無失真壓縮演算法使用一串符號的序列,偵測其中

重複的模式(pattern)然後用比原來更緊湊的序列來描述。舉個例子,「0.142857142857142857」這段

文字可被壓縮為「0.[142857]*3」。壓縮演算法基於對一段文字先建立子序列的字典,然後再將文字

與此字典中的項目產生對應。剛剛的例子中,字典只含一個項目即「142857」。

資訊檢索

資訊檢索(information retrieval)的任務是尋找與使用者需要的資訊相關的文件。資訊檢索系統的

一個眾所周知的例子就是全球資訊網上的搜尋引擎。全球資訊網使用者將類似[AI book]([AI 書籍])[2]

的查詢資訊輸入到搜尋引擎,並得到相關網頁的列表。在本節中,我們將看到如何建立這樣的系統。

一個資訊檢索(即IR)系統有如下特徵:

1.文件語料庫(a corpus of ducuments)。每個系統都必須決定它要處理的文件是什麼:一個段落、一

頁還是多頁的文本。

2. 以查詢語言提出的查詢(queries posed in query language)。查詢指定出使用者想知道的內容。查詢

語言可以是單字的列表,如 [AI book];可以指定一個必須相鄰的單字組成的片語,如[「AI

book」];可以包含布耳運算符,如[AI AND book];或者包括非布耳運算符,如[AI NEAR book]

以及[AI book site: www.aaai.org]。

3. 結果集合(result set)。該集合是IR 系統判定與查詢相關(relevant)的那部分文件子集。「相關」

的含義是對提出查詢的人有用,針對查詢中表達的特定資訊需求。

4. 結果集合的表示。結果集合可簡單如一份文件標題的排序列表,或複雜如將結果集合投射至三

維空間時的旋轉色彩映對圖(表示成二維)。

布林關鍵字模型(Boolean keyword model)

IR 計分函數

大多數的IR 系統已不使用布林(Boolean)模型而改使用基於詞語計數統計值的模型。我們會敘述

BM25 計分函數,其來源為倫敦城市學院(London’s City College)的Stephen Robertson 與Karen Sparck

Jones 的Okapi 計畫,這已經被使用於如開源Lucene 計畫(open-source Lucene project)等搜尋引擎。

IR 系統評價

我們如何知道一個IR 系統的性能是否很好?我們可以做一個實驗,系統已知一個查詢集合,結

果集合透過人進行相關性判斷得到評分。傳統上在評分中有兩種度量方法:召回率和準確率。我們

將透過一個例子的幫助來解譯它們。想像某個IR 系統已經對一個單獨的查詢回傳了一個結果集合,

其中我們知道在由100 篇文件組成的語料庫中哪些文件是相關的,哪些文件是無關的。

準確率(precision)

召回率(recall)

IR 的改進方法

這邊描述了很多系統可能的改進方法。在網頁搜尋引擎發現新的方法或者隨著網頁成長與改變

下,它們也的確是持續地在更新它們的演算法。

一個常見的改進是基於相關度,文件長度所會產生之影響的較佳模型。Singhal 等(1996)觀察到

簡單的文件長度正規化機制傾向於過度偏愛短文件,而長文件則顯的不足。它們提出一個關鍵的文

件長度正規化機制;這個想法表達的是某一文件長度運行在舊式正規化為正確時,這個長度是關鍵

的;比該長度還短的文件會得到強化改進而比之長的文件會得到懲罰。

大小寫合併(case folding)

詞幹化(semming)

同義詞(synonym)

詮釋資料(metadata)

頁排序演算法

頁排序(PageRank)[3]為兩個原創想法之一,在1997 年引入時,它使得Google 的搜尋不同於其它

網頁搜尋引擎(另一個創新是錨文本(anchor text)——超連結裡的底線文字——於頁面索引的使用,即

便當錨文本所在頁面不同於被索引的頁面)。PageRank 被發明來解決TF 分數的專橫問題:如果查詢

是[IBM],我們如何能保證IBM 的首頁ibm.com 是第一個查詢結果,即使有其它的頁面更頻繁地提

及「IBM」?其想法為ibm.com 有很多in-links(到該頁的連結),因而它應該被排名較高:每一個in-link

都為連結至(linked-to)頁面的品質投下一票。但如果我們只計算in-links,那麼垃圾網頁發送者也有可

能創造一個很多頁面的網路並且將之全部指向他所選擇的頁面,藉此來增加他選擇之頁面的分數。

隨機衝浪模型(random surfer model)

HITS 演算法

超連結引導主題搜索演算法(Hyperlink-Induced Topic Search algorithm),亦稱「集中站台與權威

(Hubs and Authorities)」或是HITS,是另一具有影響力的連結分析(link-analysis)演算法(見圖22.1)。

HITS 在許多方面都不同於頁排序。首先,它是依賴查詢(query-dependent)度量:它參考查詢來評價

頁面。這意味著每個查詢都必須重新計算——大多數搜尋引擎都不選擇使用的計算負擔

(computational burden)。給定一個查詢,HITS 會先去找尋與這個查詢相關的頁面之集合。它使查詢

詞語的命中表產生交集,然後加入這些網頁裡頭相鄰的鏈結頁面——從原始相關集合裡其中一個連

結到或者連結出去的頁面。

影響力

集中站台

問答

資訊檢索是找出相關於一個檢索的文件之任務,而查詢可能是一個問題,或者只是一個主題範

圍或是概念。問答是一個有點不同的任務,此任務中查詢真的就是一個問題,而回答並非是有序文

件,而更像是短回應——一個句子或者甚至是一個詞組。1960 年代以來已經有一些問答NLP(自然

語言處理,natural language processing)系統,但直到2001 年才使用在網頁資訊檢索,從根本上增加

其涵蓋之廣度。

ASKMS 系統(Banko 等,2002)就是一個傳統的網頁基礎問答系統。它係基於直觀上認為大多數

的問題在網頁上都會被回答好幾次,所以問答應該被思考成精確的問題,而非召回率。我們不必去

處理敘述一個問題可能的所有方向——我們僅需找出其中之一。舉例來說,考慮[Who killed

Abraham Lincoln?]這個查詢。假設一個系統必須要回答這個問題僅能透過一部百科全書,此百科全

書關於林肯的描述是

John Wilkes Booth 用一顆子彈改變了歷史。他永遠會被稱為結束Abraham Lincoln 生命的那個人。

要透過這個通道來回答問題,系統必須要知道結束生命可能是殺害的意思,「他」則是指Booth,還

有幾個其他的語言學與語義的事實。

資訊擷取

資訊擷取(information extraction)是一個獲取知識的過程,其透過瀏覽文字,並尋找特定類別物件

的出現以及這些物件之間的關係。我們可以嘗試從網頁中為包括街名、城市名、州名以及郵遞區號

等在內的資料庫欄位擷取位址實例,或是從天氣預報中為包括溫度、風速以及降雨量等在內的資料

庫欄位擷取暴風雨實例。在有限域中,這可非常高精確地達成。但一旦域變得更廣,更多複雜的語

言學模型與更複雜的學習技巧就有需要了。我們在第23 章中會看到如何定義英文中,短語結構(名

詞詞組與動詞詞組)的複雜語言模型。但到目前為止仍無此類完整模型,對目前的資訊擷取有限之需

要,我們定義出有限模型來近似完整的英語模型,並僅致力手邊所需要用到的部份。本節中我們所

描述的近似型方法,如同圖7.21 中之簡單1-CNF 模型為完整、扭曲、邏輯模型之近似型。

資訊擷取的有限狀態機

最簡單類型的資訊擷取系統被稱為基於屬性的擷取系統,因為它假設全部文本談的是單一物

件,而系統的任務就是擷取該物件的屬性。舉例來說,我們注意到第12.7 節中提取文字「IBM

ThinkBook」的問題。我們的價錢:$399.00」 屬性集合{製造商 = IBM,型號 = ThinkBook970,價

錢 = $399.00}。我們可以處理這個問題透過為每個要擷取的屬性各自定義出模版(又稱為模式)。這

個模版是透過有限狀態機來定義,最簡單的例子是正規式,或稱regex。正規式被用於諸如grep 這

類Unix 命令中,或是類似Perl 這樣的程式語言中,以及類似微軟公司的Word 這類文字處理軟體中。

這些工具在細節上有輕微的差別,所以最好從適當的手冊中學習,不過這裡我們要說明的是如何建

立一個針對用美元表示價格的正規式,以及一些常見的子運算式:

[0-9] 相符於任何0 到9 的數字

[0-9]+ 相符於一或多個數字

[.][0-9][0-9] 相符於一串之後接兩個數字

([.][0-9][0-9])? 相符於一串之後接兩個數字,或者無

[$][0-9]+([.][0-9][0-9])? 相符於$249.99 或 $1.23 或$1000000 或…

模版通常以三個部分定義:前綴regex,目標regex 與後綴regex。對於價錢來說,目標regex 就如上

述,前綴會尋找「price:」這個字串而後綴可能為空。這個概念來自於屬性的一些線索來自於屬性

值自身,一些來自於周圍的文字。

關係擷取系統,它處理多個物件與其間相互之關係。因此,

當這些系統看到「$249.99」時,它們不僅要判斷該文本表示價格,而且還要判斷是哪個物件的價格。

FASTUS 是一個典型的基於關係(relational-based)擷取系統,它處理的是有關公司合併和獲利的新聞。

關係擷取系統可以透過一連串的串接式有限狀態轉換器來建立。也就是說,它們由一系列的有限狀

態自動機(FSA)組成,其中每個自動機接受文本作為輸入,把文本轉換成一種不同的格式,並將其送

往下一個自動機。FASTUS 系統由5 個階段所組成:

1. 符號化。

2. 複合單字處理。

3. 基本片語處理。

4. 複合片語處理。

5. 結構合併。

FASTUS 的第1 階段是符號化

第2 個階段是處理複合單字

第3 階段是處理基本片語群

第4 個階段是將基本片語合併為複合片語

最後一個階段是結構合併

一般來說,資訊擷取在有限領域中運轉比較好,因為在有限領域中預先決定會討論的主題以及

用什麼方式提及它們是可能的。系列式轉換器能幫助模組化必要的知識,且減輕系統的建構。當系

統是由程式產生出的逆向工程文本時,其運作會特別的好。舉例來說,當購物網站的產生是由程式

透過取得資料庫條目並且將格式化為網頁形式;基於模版(template-based)擷取器於是就能夠回復出

原始的資料庫。有限狀態資料擷取器用在高度變數格式裡要回復資料就比較不那麼成功,如人對於

各式主題的撰寫文本。

機率模型應用於資訊擷取

當資訊擷取是要從雜訊資料與多樣輸入中做嘗試,簡單的有限狀態方法變得很差。要取得所有

正確的規則與優先權太過困難;比起基於規則模型,使用機率模型會好得多。對於隱狀態序列的最

簡單的機率模型是隱馬可夫模型(hidden Markov model,或HMM)。

條件式隨機域應用於資訊擷取

一個HMMs 應用到資訊擷取任務的議題是它建模出很多我們不見得需要的機率。HMM 是生成

模型;它建模出觀察的完整的組合機率與隱狀態,因此可被用於產生樣本。而這是說,HMM 模型

不僅可應用在解析文本並回復出主講人與日期,也可以產生出包含主講人與日期的文本之隨機實

例。既然我們對於該任務不感興趣,很自然地我們要問是否可以更好地去利用一個模型,但不干擾

到該模型建模其機率。所有我們對於了解文本所需要的就是辨識模型(discriminative model),其在給

定的觀察(文本)下,會為隱屬性的條件式機率建模。給定文本1:N e ,條件式模型會找出隱狀態序列1:N X

使得1: 1: ( | ) N N PX e 最大化。

條件式隨機域(Conditional random fields)

線性鏈(linear-chain)條件式隨機域

從巨大語料庫中做本體擷取

到目前為止我們已經把訊息擷取想像成尋找關係的特定集合(例如,主講者,時間,地點)在特定

的文本中(例如,演講公告)。不同的擷取技術的應用係建立了巨大的知識基礎上或是從語料庫中建立

事實的本體論。有三個方面是不同的:第一個是開放性問題(open-ended)——我們希望獲得的是關於

所有類型領域的事實,而不只是一個特定的領域。第二,透過大型語料庫,這個任務是由高精度所

支配,並非召回率——如同網頁裡的問答(第22.3.6 節)。第三,統計的結果可以從多個來源的匯總而

收集到,不只是擷取一個特定的文本。

自動模版建構

子範疇關係是這麼的基礎以致於值得手工處理一些模版,來在自然語言文本中幫助辨識所發生

的實例。但世界上其它數以千計的關係怎麼處理?世界上沒有足夠的AI 研究生可以為所有的模版創

造與解問題。幸運的是,透過幾個例子來學習模版是可能的,然後使用這些模版來學習更多的例子,

從這些例子又可以學習更多的模版等等。從首次幾個試驗的其中之一,Brin (1999)從一個僅含五個例

子的資料集合開始:

(“Isaac Asimov”, “The Robots of Dawn”)

(“David Brin”, “Startide Rising”)

(“James Gleick”, “Chaos—Making a New Science”)

(“Charles Dickens”, “Great Expectations”)

(“William Shakespeare”, “The Comedy of Errors”)

很顯然地這些是作者-書名關係的範例,但學習系統沒有任何關於作者或者書名的知識。這些例子裡

頭的詞語被用來在網頁語料庫中搜尋,產生了199 條結果。每個相符被定義為七個字串為一組。

(Author, Title, Order, Prefix, Middle, Postfix, URL)

(作者,書名,排序,前綴,中間字元,後綴,網路位址)

當作者首先出現,Order 為真而當書名首先出現,Order 為假,Middle 表示作者與書名中的字元,Prefix

是相符詞的前十個字元,Suffix 是相符詞的後十個字元,URL 是相符詞出現其中的網路位址。

機器閱讀

從手工模版建構到自動板模建構是非常大的一步,它仍須一把有關係的有標的例子來起始。要

建立一個帶有數千個關係的巨大本體,即使工作量非常的艱鉅;我們仍想有一個不需人用任何形式

的輸入的擷取系統——此系統可以自行閱讀且建立其資料庫。這種系統是獨立關係

(relation-independent);可以運行於任何關係。實行上,因為大型語料庫的I/O 需求,這些系統平行

運作於各種關係。他們表現的較不像傳統的資訊擷取系統那樣把目標定在幾個少數的關係上,其更

像人類閱讀者從文本裡頭學習;正因如此這個領域被稱為機器閱讀。

總結

本章要點包括:

● 基於n 元的機率語言模型能夠獲得有關語言的為數驚人的資訊。它們在語言識別、拼字校正、

體裁分類和命名實體辨識如此多樣的任務上表現良好。

● 這些語言模型具有百萬種的特徵,所以為降低雜訊的特徵選擇及資料預處理是很重要的。

文本分類可以用簡單貝氏n 元模型或用先前討論過任何的分類演算法。分類在資料壓縮也被視

為一個問題。

資訊檢索系統採用一個基於詞袋的非常簡單的語言模型,但仍能設法在超大規模的文本語料庫

上表現出良好性能(從召回率準確率的角度而言)。在網路語料庫連結分析演算法改善了效能。

● 對於在語料庫中有多種答案的問題,問答可以用資訊檢索的方法來掌控。當多個答案存在於語

料庫之中,我們可以使用強調精準的技術而非召回。

資訊擷取系統採用一個更為複雜的模型,其包含了句法和語義的有限概念(以模版形式)。它們可

從有限狀態自動機、HMM 或條件隨機場建立,並且可從實例學習。

● 在建立一個統計語言系統時,最好設計一個能很好地利用資料的模型,即使該模型看起來極其

簡單。