自然語言理解是人工智能的一個重要分支,主要研究如何利用計算機來理解和生成自然語言。本書重點介紹了自然語言理解所涉及的各個方面,包括語法分析、語義分析、概念分析、語料庫語言學(xué)、詞匯語義驅(qū)動、中間語言、WordNet、詞匯樹鄰接文法、鏈接文法、基于語段的機器翻譯方法、內(nèi)識別與文本過濾、機器翻譯的評測等,既有對基礎(chǔ)知識的介紹,又有對新研究進(jìn)展的綜述,同時還結(jié)合了作者(JamesPustejovsky,生成詞庫理論的創(chuàng)始人)多年的研究成果。本書內(nèi)容全面、詳略得當(dāng),結(jié)合實例講解,使讀者更易理解。
前言
本書的讀者是那些使用計算機來處理自然語言的人。自然語言是指人類所說的任何一種語言,可以是當(dāng)代語言(如英語、漢語、西班牙語),也可以指過去曾經(jīng)使用過的語言(如拉丁語、古希臘語、梵語)。標(biāo)注(annotation)是一個過程,它通過向文本中加入元數(shù)據(jù)來增強計算機執(zhí)行自然語言處理(Natural Language Processing, NLP)的能力。特別地,我們考察如何通過標(biāo)注將信息加入自然語言文本中以便改善機器學(xué)習(xí)(Machine Learning,ML)算法(一組設(shè)計好的計算機程序,它從文本提供的信息中推出規(guī)則,目的是將這些規(guī)則用于將來未標(biāo)注的文本中)的性能。
面向機器學(xué)習(xí)的自然語言標(biāo)注本書詳細(xì)介紹創(chuàng)建自己的自然語言標(biāo)注數(shù)據(jù)集(稱為語料庫)所需的各個階段和過程,以便為基于語言的數(shù)據(jù)和知識發(fā)現(xiàn)訓(xùn)練機器學(xué)習(xí)算法。本書的總體目標(biāo)是為讀者展示如何創(chuàng)建自己的語料庫。從選擇一個標(biāo)注任務(wù)開始,然后創(chuàng)建標(biāo)注規(guī)格說明(annotation specification)、設(shè)計標(biāo)注指南(annotation guideline)、創(chuàng)建一個“黃金標(biāo)準(zhǔn)”語料庫(corpus),最后采用這個標(biāo)注過程開始創(chuàng)建實際的數(shù)據(jù)。
標(biāo)注過程并不是線性的,因此需要多次迭代來定義任務(wù)、標(biāo)注和評價,以便得到最佳結(jié)果。這一過程可以概括為MATTER標(biāo)注開發(fā)過程:建模(Model)、標(biāo)注(Annotate)、訓(xùn)練(Train)、測試(Test)、評價(Evaluate)、修改(Revise)。本書引導(dǎo)讀者遍歷整個循環(huán),提供詳細(xì)的例子并完整地討論幾種不同類型的標(biāo)注任務(wù)。詳細(xì)地研究這些任務(wù),使讀者清楚地了解其中的來龍去脈,并為他們自己的機器學(xué)習(xí)任務(wù)奠定基礎(chǔ)。
此外,本書列出了用于標(biāo)注文本和評審標(biāo)注的常用軟件的訪問和使用指南。盡管有許多標(biāo)注工具可用,但本書采用的多用途標(biāo)注環(huán)境(Multipurpose Annotation Environment, MAE)特別易于安裝和使用(讀者可以免費下載),讀者不會因為令人困惑的文檔而分心。經(jīng)常與MAE一起使用的是多文檔審核接口(Multidocument Adjudication Interface, MAI),它用于在標(biāo)注的文檔之間進(jìn)行比對。 讀者本書寫給所有對用計算機研究自然語言所傳遞的信息內(nèi)容感興趣的人。閱讀本書,并不要求具有編程或語言學(xué)背景,但若對腳本語言(如Python)有基本的理解將更易于理解MATTER循環(huán),因為書中的一些示例代碼是用Python寫的。如果你從未用過Python,強烈地向你推薦由Steven Bird、Ewan Klein和Edward Loper所著的《Natural Language Processing with Python》(Python自然語言處理)一書(O扲eilly)。該書是一本優(yōu)秀的關(guān)于Python和自然語言處理的入門教材,本書并未涉及這些知識。
如果讀者已具備XML(或者HTML)等標(biāo)記語言的基礎(chǔ)知識,將能夠更好地理解和掌握本書。你不需要成為深入了解XML原理的專家,但是由于絕大多數(shù)標(biāo)注項目都使用某種形式的XML對標(biāo)簽進(jìn)行編碼,因此我們在本書中將使用XML標(biāo)準(zhǔn)來提供標(biāo)注樣例。不是一定得成為網(wǎng)頁設(shè)計師才能理解本書,但是具有關(guān)于標(biāo)簽和屬性的知識對于理解標(biāo)注項目是如何實現(xiàn)的將會有較大的幫助。
內(nèi)容安排第1章簡單回顧了語言標(biāo)注和機器學(xué)習(xí)的歷史,簡要介紹了將標(biāo)注任務(wù)用于不同層次語言學(xué)研究的多種方法。本書的其余部分帶領(lǐng)讀者遍歷整個MATTER循環(huán),從第2章介紹如何創(chuàng)建一個合理的標(biāo)注目標(biāo)開始,歷經(jīng)每個階段,直到評價標(biāo)注和機器學(xué)習(xí)階段的結(jié)果,第9章討論修改項目并匯報工作。最后兩章完整地介紹了一個標(biāo)注項目,以及如何用機器學(xué)習(xí)和基于規(guī)則的算法重新創(chuàng)建標(biāo)注。讀者可以在書后的附錄中找到對自己的標(biāo)注任務(wù)有用的資源列表。
軟件需求雖然不運行書中給出的任何示例代碼也可以學(xué)習(xí)本書,但我們強烈推薦至少安裝自然語言工具包(Natural Language ToolKit, NLTK)以便理解涉及的機器學(xué)習(xí)技術(shù)。NLTK當(dāng)前支持Python 2.4~2.7(Python 3.0直到本書完成時尚未被支持)。想了解更多信息,請參考http://www.nltk.org。 本書中的所有示例代碼都在交互式Python shell編程環(huán)境中運行。關(guān)于如何使用這一環(huán)境,請參閱http://docs.python.org/tutorial/interpreter.html。如果沒有特別說明,假設(shè)在所有的示例代碼前使用命令import nltk。
本書約定在本書中使用以下排版方式: 斜體(Italic)此類字體表示新術(shù)語、網(wǎng)址(URL)、電子郵件地址,文件名和文件擴展名。
等寬字體(Constant width)此類字體表示程序清單,以及在文檔段內(nèi)的各種程序元素(如變量名或函數(shù)名、數(shù)據(jù)庫名、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字)。 注意:表示一個提示、建議或一般性的注解。
警告:表示一個警告或注意事項。
使用代碼示例本書在這里幫助你完成你的工作。總的來講,你可以在你的程序和文檔中使用本書中的代碼。你不需要聯(lián)系我們以征得許可,除非你正在復(fù)制代碼中的重要部分。比如,使用書中的多段代碼寫一個程序并不需要獲得許可。
若將O扲eilly公司出版的書中的例子制成光盤來銷售或發(fā)行則需要獲得許可。在回答問題時,引用本書和列舉書中的例子代碼并不需要許可。把本書中的代碼作為你的產(chǎn)品文檔的重要部分時需要獲得許可。
查看全部↓
James Pustejovsky教授是美國布蘭代斯(Brandeis University)大學(xué)計算機科學(xué)系和Volen國家綜合系統(tǒng)中心教授。先后在美國麻省理工學(xué)院和馬薩諸塞大學(xué)獲得學(xué)士學(xué)位和博士學(xué)位。Pustejovsky教授主要從事自然語言的理論和計算研究。研究領(lǐng)域包括:計算語言學(xué)、詞匯語義學(xué)、知識表征、話語語義學(xué)、時間推理和抽取等。已經(jīng)出版多部專著。
前言1
第1章 基礎(chǔ)知識7
1.1 語言標(biāo)注的重要性 7
1.1.1 語言學(xué)描述的層次8
1.1.2 什么是自然語言處理9
1.2 語料庫語言學(xué)簡史10
1.2.1 什么是語料庫13
1.2.2 語料庫的早期應(yīng)用15
1.2.3 當(dāng)今的語料庫17
1.2.4 標(biāo)注類型18
1.3 語言數(shù)據(jù)和機器學(xué)習(xí)24
1.3.1 分類25
1.3.2 聚類25
1.3.3 結(jié)構(gòu)化模式歸納26
1.4 標(biāo)注開發(fā)循環(huán)26
1.4.1 現(xiàn)象建模27
1.4.2 按照規(guī)格說明進(jìn)行標(biāo)注30
1.4.3 在語料庫上訓(xùn)練和測試算法31
1.4.4 對結(jié)果進(jìn)行評價32
1.4.5 修改模型和算法33
總結(jié)34
第2章 確定目標(biāo)與選擇數(shù)據(jù)36
2.1 定義目標(biāo)36
2.1.1 目標(biāo)陳述37
2.1.2 提煉目標(biāo):信息量與正確性38
2.2 背景研究43
2.2.1 語言資源44
2.2.2 機構(gòu)與會議44
2.2.3 自然語言處理競賽45
2.3 整合數(shù)據(jù)集46
2.3.1 理想的語料庫:代表性與平衡性47
2.3.2 從因特網(wǎng)上收集數(shù)據(jù)47
2.3.3 從人群中獲取數(shù)據(jù)48
2.4 語料庫的規(guī)模49
2.4.1 現(xiàn)有語料庫50
2.4.2 語料庫內(nèi)部的分布51
總結(jié)53
第3章 語料庫分析54
3.1 語料庫分析中的基本概率知識55
3.1.1 聯(lián)合概率分布56
3.1.2 貝葉斯定理58
3.2 計算出現(xiàn)次數(shù)58
3.2.1 齊普夫定律(Zip's Law)61
3.2.2 n元語法62
3.3 語言模型63
總結(jié)65
第4章 建立模型與規(guī)格說明66
4.1 模型和規(guī)格說明示例66
4.1.1 電影題材分類69
4.1.2 添加命名實體70
4.1.3 語義角色71
4.2 采用(或不采用)現(xiàn)有模型73
4.2.1 創(chuàng)建模型和規(guī)格說明:一般性與特殊性74
4.2.2 使用現(xiàn)有模型和規(guī)格說明76
4.2.3 使用沒有規(guī)格說明的模型78
4.3 各種標(biāo)準(zhǔn)78
4.3.1 ISO標(biāo)準(zhǔn)78
4.3.2 社區(qū)驅(qū)動型標(biāo)準(zhǔn)81
4.3.3 影響標(biāo)注的其他標(biāo)準(zhǔn)81
總結(jié)82
第5章 選擇并應(yīng)用標(biāo)注標(biāo)準(zhǔn)84
5.1 元數(shù)據(jù)標(biāo)注:文檔分類85
5.1.1 單標(biāo)簽標(biāo)注:電影評論85
5.1.2 多標(biāo)簽標(biāo)注:電影題材87
5.2 文本范圍標(biāo)注:命名實體90
5.2.1 內(nèi)嵌式標(biāo)注90
5.2.2 基于詞例的分離式標(biāo)注92
5.2.3 基于字符位置的分離式標(biāo)注95
5.3 鏈接范圍標(biāo)注:語義角色96
5.4 ISO標(biāo)準(zhǔn)和你97
總結(jié)97
第6章 標(biāo)注與審核99
6.1 標(biāo)注項目的基本結(jié)構(gòu)99
6.2 標(biāo)注規(guī)格說明與標(biāo)注指南101
6.3 準(zhǔn)備修改102
6.4 準(zhǔn)備用于標(biāo)注的數(shù)據(jù)103
6.4.1 元數(shù)據(jù)103
6.4.2 數(shù)據(jù)預(yù)處理104
6.4.3 為標(biāo)注工作分割文件104
6.5 撰寫標(biāo)注指南105
6.5.1 例1:單標(biāo)簽標(biāo)注——電影評論106
6.5.2 例2:多標(biāo)簽標(biāo)注——電影題材108
6.5.3 例3:范圍標(biāo)注——命名實體111
6.5.4 例4:鏈接范圍標(biāo)注——語義角色112
6.6 標(biāo)注人員114
6.7 選擇標(biāo)注環(huán)境116
6.8 評價標(biāo)注結(jié)果117
6.8.1 Cohen的Kappa(κ)算法118
6.8.2 Fleiss的Kappa(κ)算法119
6.8.3 解釋Kappa系數(shù)122
6.8.4 在其他上下文中計算κ值123
6.9 創(chuàng)建黃金標(biāo)準(zhǔn)(審核)125
總結(jié)126
第7章 訓(xùn)練:機器學(xué)習(xí)129
7.1 何謂學(xué)習(xí)130
7.2 定義學(xué)習(xí)任務(wù)132
7.3 分類算法133
7.3.1 決策樹學(xué)習(xí)135
7.3.2 樸素貝葉斯學(xué)習(xí)140
7.3.3 最大熵分類器145
7.3.4 其他需要了解的分類器147
7.4 序列歸納算法148
7.5 聚類和無監(jiān)督學(xué)習(xí)150
7.6 半監(jiān)督學(xué)習(xí)150
7.7 匹配標(biāo)注與算法153
總結(jié)154
第8章 測試與評價156
8.1 測試算法157
8.2 評價算法157
8.2.1 混淆矩陣157
8.2.2 計算評價得分159
8.2.3 解釋評價得分163
8.3 可能影響算法評價的問題164
8.3.1 數(shù)據(jù)集太小164
8.3.2 算法過于適合開發(fā)數(shù)據(jù)166
8.3.3 標(biāo)注中的信息過多166
8.4 最后測試得分167
總結(jié)167
第9章 修改與報告169
9.1 修改項目170
9.1.1 語料庫分布和內(nèi)容170
9.1.2 模型和規(guī)格說明170
9.1.3 標(biāo)注171
9.1.4 訓(xùn)練和測試172
9.2 報告工作173
9.2.1 關(guān)于語料庫174
9.2.2 關(guān)于模型和規(guī)格說明175
9.2.3 關(guān)于標(biāo)注任務(wù)和標(biāo)注人員175
9.2.4 關(guān)于ML算法176
9.2.5 關(guān)于修改177
總結(jié)177
第10章 標(biāo)注:TimeML179
10.1 TimeML的設(shè)計目標(biāo)180
10.2 相關(guān)研究181
10.3 建設(shè)語料庫182
10.4 模型:初步的標(biāo)注規(guī)格說明183
10.4.1 時間183
10.4.2 信號184
10.4.3 事件184
10.4.4 鏈接184
10.5 標(biāo)注:最初的嘗試185
10.6 模型:TimeBank中的TimeML標(biāo)注規(guī)格說明185
10.6.1 時間表達(dá)式185
10.6.2 事件186
10.6.3 信號187
10.6.4 鏈接187
10.6.5 可信度189
10.7 標(biāo)注:TimeBank的產(chǎn)生189
10.8 TimeML成為ISO-TimeML192
10.9 對未來建模:TimeML的發(fā)展方向193
10.9.1 敘事容器194
10.9.2 將TimeML擴展到其他領(lǐng)域195
10.9.3 事件結(jié)構(gòu)196
總結(jié)197
第11章 自動標(biāo)注:生成TimeML199
11.1 TARSQI組件200
11.1.1 GUTime:時間標(biāo)志識別201
11.1.2 EVITA:事件識別及分類201
11.1.3 GUTenLINK202
11.1.4 Slinket204
11.1.5 SputLink204
11.1.6 TARSQI組件中的機器學(xué)習(xí)205
11.2 TTK的改進(jìn)206
11.2.1 結(jié)構(gòu)變化206
11.2.2 時間實體識別改進(jìn):BTime207
11.2.3 時間關(guān)系識別207
11.2.4 時間關(guān)系驗證208
11.2.5時間關(guān)系可視化209
11.3 TimeML競賽:TempEval-2209
11.3.1 TempEval-2:系統(tǒng)概述210
11.3.2 成果綜述213
11.4 TTK的未來213
11.4.1 新的輸入格式213
11.4.2 敘事容器/敘事時間214
11.4.3 醫(yī)學(xué)文檔215
11
查看全部↓