<b>前言</b>
本書的讀者是那些使用計算機來處理自然語言的人。自然語言是指人類所說的任何一種語言,可以是當代語言(如英語、漢語、西班牙語),也可以指過去曾經使用過的語言(如拉丁語、古希臘語、梵語)。标注(annotation)是一個過程,它通過向文本中加入中繼資料來增強計算機執行自然語言處理(natural language processing, nlp)的能力。特别地,我們考察如何通過标注将資訊加入自然語言文本中以便改善機器學習(machine learning,ml)算法(一組設計好的計算機程式,它從文本提供的資訊中推出規則,目的是将這些規則用于将來未标注的文本中)的性能。
面向機器學習的自然語言标注
本書詳細介紹建立自己的自然語言标注資料集(稱為語料庫)所需的各個階段和過程,以便為基于語言的資料和知識發現訓練機器學習算法。本書的總體目标是為讀者展示如何建立自己的語料庫。從選擇一個标注任務開始,然後建立标注規格說明(annotation specification)、設計标注指南(annotation guideline)、建立一個“黃金标準”語料庫(corpus),最後采用這個标注過程開始建立實際的資料。
标注過程并不是線性的,是以需要多次疊代來定義任務、标注和評價,以便得到最佳結果。這一過程可以概括為matter标注開發過程:模組化(model)、标注(annotate)、訓練(train)、測試(test)、評價(evaluate)、修改(revise)。本書引導讀者周遊整個循環,提供詳細的例子并完整地讨論幾種不同類型的标注任務。詳細地研究這些任務,使讀者清楚地了解其中的來龍去脈,并為他們自己的機器學習任務奠定基礎。
此外,本書列出了用于标注文本和評審标注的常用軟體的通路和使用指南。盡管有許多标注工具可用,但本書采用的多用途标注環境(multipurpose annotation environment, mae)特别易于安裝和使用(讀者可以免費下載下傳),讀者不會因為令人困惑的文檔而分心。經常與mae一起使用的是多文檔稽核接口(multidocument adjudication interface, mai),它用于在标注的文檔之間進行比對。
讀者
本書寫給所有對用計算機研究自然語言所傳遞的資訊内容感興趣的人。閱讀本書,并不要求具有程式設計或語言學背景,但若對腳本語言(如python)有基本的了解将更易于了解matter循環,因為書中的一些示例代碼是用python寫的。如果你從未用過python,強烈地向你推薦由steven bird、ewan klein和edward loper所著的《natural language processing with python》(python自然語言處理)一書(o扲eilly)。該書是一本優秀的關于python和自然語言處理的入門教材,本書并未涉及這些知識。
如果讀者已具備xml(或者html)等标記語言的基礎知識,将能夠更好地了解和掌握本書。你不需要成為深入了解xml原理的專家,但是由于絕大多數标注項目都使用某種形式的xml對标簽進行編碼,是以我們在本書中将使用xml标準來提供标注樣例。不是一定得成為網頁設計師才能了解本書,但是具有關于标簽和屬性的知識對于了解标注項目是如何實作的将會有較大的幫助。
内容安排
第1章簡單回顧了語言标注和機器學習的曆史,簡要介紹了将标注任務用于不同層次語言學研究的多種方法。本書的其餘部分帶領讀者周遊整個matter循環,從第2章介紹如何建立一個合理的标注目标開始,曆經每個階段,直到評價标注和機器學習階段的結果,第9章讨論修改項目并彙報工作。最後兩章完整地介紹了一個标注項目,以及如何用機器學習和基于規則的算法重新建立标注。讀者可以在書後的附錄中找到對自己的标注任務有用的資源清單。
軟體需求
雖然不運作書中給出的任何示例代碼也可以學習本書,但我們強烈推薦至少安裝自然語言工具包(natural language toolkit, nltk)以便了解涉及的機器學習技術。nltk目前支援python 2.4~2.7(python 3.0直到本書完成時尚未被支援)。想了解更多資訊,請參考http://www.nltk.org。
本書中的所有示例代碼都在互動式python shell程式設計環境中運作。關于如何使用這一環境,請參閱http://docs.python.org/tutorial/interpreter.html。如果沒有特别說明,假設在所有的示例代碼前使用指令import nltk。
本書約定
在本書中使用以下排版方式:
斜體(italic)
此類字型表示新術語、網址(url)、電子郵件位址,檔案名和檔案擴充名。
等寬字型(constant width)
此類字型表示程式清單,以及在文檔段内的各種程式元素(如變量名或函數名、資料庫名、資料類型、環境變量、語句和關鍵字)。
注意: 表示一個提示、建議或一般性的注解。
警告: 表示一個警告或注意事項。
使用代碼示例
本書在這裡幫助你完成你的工作。總的來講,你可以在你的程式和文檔中使用本書中的代碼。你不需要聯系我們以征得許可,除非你正在複制代碼中的重要部分。比如,使用書中的多段代碼寫一個程式并不需要獲得許可。
若将o扲eilly公司出版的書中的例子制成CD光牒來銷售或發行則需要獲得許可。在回答問題時,引用本書和列舉書中的例子代碼并不需要許可。把本書中的代碼作為你的産品文檔的重要部分時需要獲得許可。
我們希望但并不要求你在引用本書内容時說明引文的文獻出處。引用通常包括題目、作者、出版社和isbn号。例如:natural language annotation for machine learning by james pustejovsky and amber stubbs(o扲eilly). copyright 2013 james pustejovsky and amber stubbs,978-1-449-30666-3.
如果你感覺你對代碼示例的使用超出合理使用以及上述的許可範圍,請通過[email protected]聯系我們。
safari際樵谙?
safari圖書線上(www.safaribooksonline.com)是一個按需數字圖書館,它采用圖書和視訊兩種形式釋出專業級的内容,作者都是來自技術和商業領域的世界頂尖專家。
技術專家、軟體開發者、網站設計者和商業及創新專家都使用safari圖書線上作為他們研究、解決問題以及學習和職業資格教育訓練的首要資源。
safari圖書線上為各種組織、政府機構和個人提供豐富的産品和定價程式。訂購者可在一個全文可檢索資料庫中浏覽數以千計的圖書、教育訓練視訊和預出版手稿。它們來自o扲eilly media、prentice hall professional、addison-wesley professional、microsoft press、sams、que、peachpit press、focal press、cisco press、john wiley & sons、syngress、morgan kaufmann、ibm redbooks、packt、adobe press、ft press、apress、manning、new riders、mcgraw-hill、jones & bartlett、course technology等衆多出版社。關于safari圖書線上的更多資訊,請線上通路我們。
聯系方式
請通過出版社向我們提出寶貴的建議和意見:
美國:
o'reilly media,inc.
1005 gravenstein highway north
sebastopol,ca 95472
中國:
北京市西城區西直門南大街2号成銘大廈c座807室(100035)
奧萊利技術咨詢(北京)有限公司
我們為本書配備有一個網頁,上面列出了勘誤表、例子和其他一些資訊。網址為http://oreil.ly/nat-lang-annotation-ml。
評論或詢問本書的技術問題,請發送電子郵件到[email protected]。
更多關于我們的圖書、課程、會議和新聞的資訊,請通路我們的網站http://www.oreilly.com和http://www.oreilly.com.cn。
緻謝
我們感謝o扲eilly所有幫助完成此書的朋友,特别感謝meghan blanchette、julie steele、sarah schneider、kristen borg、audrey doyle和其他全程幫助我們的人。我們也要感謝布蘭迪斯大學(brandeis university)cosi 216班的同學,他們參與了2011春季學期的課程,和我們一起完成了整個matter循環,他們是karina baeza grossmann-siegert、elizabeth baran、bensiin borukhov、nicholas botchan、richard brutti、olga cherenina、russell entrikin、livnat herzig、sophie kush kuley、theodore margolis、alexandra nunes、lin pan、batia snir、john vogel和yaqin yang。
我們還要感謝技術評審人,他們給了我們優秀的回報。他們是arvind s. gautam、catherine havasi、anna rumshisky和ben wellner,以及每一位閱讀本書早期版本且讓我們知道我們在正确的方向上前進的人們。
我們還要感謝iso聯盟的成員,他們和我們一起讨論了本書所采用的素材。他們是
kiyong lee、harry bunt、nancy ide、nicoletta calzolari、bran boguraev、annie zaenen和laurent romary。
另外,感謝布蘭迪斯大學計算機科學和語言學系的同行,他們傾聽了我們的頭腦風暴,不斷鼓勵我們并確定在我們寫作期間一切正常。特别感謝marc verhagen、lotus goldberg、jessica moszkowicz和alex plotnick。
沒有語言學和計算語言學社群的人們所建立的語料庫和标注,就不會有本書的出現。更重要的是,他們和大家分享他們的經驗。
james的緻謝
我要感謝我的妻子cathie在寫作此書期間的耐心和支援。我還要感謝我的孩子zac和sophie容忍我完成了此書。感謝amber和我一起奮力拼搏!
amber的緻謝
我要感謝我的丈夫bj鼓勵我承擔本書的寫作且在整個過程中表現出足夠的耐心。我還要感謝我的家人,特别是我的父母,他們對此非常熱心。當然,還要感謝我的導師和聯合作者james首先萌生了撰寫此書的構想。
<b>目錄</b>
前言
第1章 基礎知識
<a href="https://yq.aliyun.com/articles/82360/" target="_blank">1.1 語言标注的重要性</a>
<a href="https://yq.aliyun.com/articles/82364/" target="_blank">1.2 語料庫語言學簡史</a>
<a href="https://yq.aliyun.com/articles/82367/" target="_blank">1.3 語言資料和機器學習</a>
<a href="https://yq.aliyun.com/articles/82374/" target="_blank">1.4 标注開發循環</a>
總結
第2章 确定目标與選擇資料
<a href="https://yq.aliyun.com/articles/82378/" target="_blank">2.1 定義目标</a>
<a href="https://yq.aliyun.com/articles/82398/" target="_blank">2.3 整合資料集</a>
<a href="https://yq.aliyun.com/articles/82404/" target="_blank">2.4 語料庫的規模</a>
第3章 語料庫分析
<a href="https://yq.aliyun.com/articles/82409/" target="_blank">3.1 語料庫分析中的基本機率知識</a>
<a href="https://yq.aliyun.com/articles/82411/" target="_blank">3.2 計算出現次數</a>
<a href="https://yq.aliyun.com/articles/82414/" target="_blank">3.3 語言模型</a>
第4章 建立模型與規格說明 66
4.1 模型和規格說明示例 66
4.1.1 電影題材分類 69
4.1.2 添加命名實體 70
4.1.3 語義角色 71
4.2 采用(或不采用)現有模型 73
4.2.1 建立模型和規格說明:一般性與特殊性 74
4.2.2 使用現有模型和規格說明 76
4.2.3 使用沒有規格說明的模型 78
4.3 各種标準 78
4.3.1 iso标準 78
4.3.2 社群驅動型标準 81
4.3.3 影響标注的其他标準 81
總結 82
第5章 選擇并應用标注标準 84
5.1 中繼資料标注:文檔分類 85
5.1.1 單标簽标注:電影評論 85
5.1.2 多标簽标注:電影題材 87
5.2 文本範圍标注:命名實體 90
5.2.1 内嵌式标注 90
5.2.2 基于詞例的分離式标注 92
5.2.3 基于字元位置的分離式标注 95
5.3 連結範圍标注:語義角色 96
5.4 iso标準和你 97
總結 97
第6章 标注與稽核 99
6.1 标注項目的基本結構 99
6.2 标注規格說明與标注指南 101
6.3 準備修改 102
6.4 準備用于标注的資料 103
6.4.1 中繼資料 103
6.4.2 資料預處理 104
6.4.3 為标注工作分割檔案 104
6.5 撰寫标注指南 105
6.5.1 例1:單标簽标注——電影評論 106
6.5.2 例2:多标簽标注——電影題材 108
6.5.3 例3:範圍标注——命名實體 111
6.5.4 例4:連結範圍标注——語義角色 112
6.6 标注人員 114
6.7 選擇标注環境 116
6.8 評價标注結果 117
6.8.1 cohen的kappa(κ)算法 118
6.8.2 fleiss的kappa(κ)算法 119
6.8.3 解釋kappa系數 122
6.8.4 在其他上下文中計算κ值 123
6.9 建立黃金标準(稽核) 125
總結 126
第7章 訓練:機器學習 129
7.1 何謂學習 130
7.2 定義學習任務 132
7.3 分類算法 133
7.3.1 決策樹學習 135
7.3.2 樸素貝葉斯學習 140
7.3.3 最大熵分類器 145
7.3.4 其他需要了解的分類器 147
7.4 序列歸納算法 148
7.5 聚類和無監督學習 150
7.6 半監督學習 150
7.7 比對标注與算法 153
總結 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 資料集太小 164
8.3.2 算法過于适合開發資料 166
8.3.3 标注中的資訊過多 166
8.4 最後測試得分 167
總結 167
第9章 修改與報告 169
9.1 修改項目 170
9.1.1 語料庫分布和内容 170
9.1.2 模型和規格說明 170
9.1.3 标注 171
9.1.4 訓練和測試 172
9.2 報告工作 173
9.2.1 關于語料庫 174
9.2.2 關于模型和規格說明 175
9.2.3 關于标注任務和标注人員 175
9.2.4 關于ml算法 176
9.2.5 關于修改 177
總結 177
第10章 标注:timeml 179
10.1 timeml的設計目标 180
10.2 相關研究 181
10.3 建設語料庫 182
10.4 模型:初步的标注規格說明 183
10.4.1 時間 183
10.4.2 信号 184
10.4.3 事件 184
10.4.4 連結 184
10.5 标注:最初的嘗試 185
10.6 模型:timebank中的timeml标注規格說明 185
10.6.1 時間表達式 185
10.6.2 事件 186
10.6.3 信号 187
10.6.4 連結 187
10.6.5 可信度 189
10.7 标注:timebank的産生 189
10.8 timeml成為iso-timeml 192
10.9 對未來模組化:timeml的發展方向 193
10.9.1 叙事容器 194
10.9.2 将timeml擴充到其他領域 195
10.9.3 事件結構 196
總結 197
第11章 自動标注:生成timeml 199
11.1 tarsqi元件 200
11.1.1 gutime:時間标志識别 201
11.1.2 evita:事件識别及分類 201
11.1.3 gutenlink 202
11.1.4 slinket 204
11.1.5 sputlink 204
11.1.6 tarsqi元件中的機器學習 205
11.2 ttk的改進 206
11.2.1 結構變化 206
11.2.2 時間實體識别改進:btime 207
11.2.3 時間關系識别 207
11.2.4 時間關系驗證 208
11.2.5時間關系可視化 209
11.3 timeml競賽:tempeval-2 209
11.3.1 tempeval-2:系統概述 210
11.3.2 成果綜述 213
11.4 ttk的未來 213
11.4.1 新的輸入格式 213
11.4.2 叙事容器/叙事時間 214
11.4.3 醫學文檔 215
11.4.4 跨文檔分析 216
總結 216
第12章 後記:标注的未來發展趨勢 217
12.1 衆包标注 217
12.1.1 亞馬遜土耳其機器人 218
12.1.2 有目的的遊戲 219
12.1.3 使用者生成内容 220
12.2 處理大資料 220
12.2.1 boosting算法 221
12.2.2 主動學習 221
12.2.3 半監督學習 223
12.3 nlp線上和在雲端 223
12.3.1 分布式計算 223
12.3.2 語言資源共享 224
12.3.3 語言應用共享 224
結語 225
附錄a 可利用的語料庫與标注規格說明清單 227
附錄b 軟體資源清單 249
附錄c mae使用者指南 269
附錄d mai使用者指南 276
附錄e 參考文獻 282