實戰Perl——語言信息處理利器

實戰Perl——語言信息處理利器

作者:荀恩東、黃志娥、饒高琦、謝佳莉

圖書詳細信息

ISBN:9787302341208
定價:28元
印次:1-1
裝幀:平裝
印刷日期:2013-12-17

圖書簡介

Perl程式設計語言是近年來在計算機領域十分流行的腳本程式語言。其數據類型靈活,數據結構自由多變,能很好地支持正則表達式。因而Perl程式設計語言在語言信息處理等方面得到了廣泛套用。
本書面向不同起點的Perl編程學習者,循序漸進地介紹Perl語言程式設計的基本概念和方法,包括正則表達式、構造複雜數據結構並用於封裝、典型NLP任務的實現等;最後給出了一些Perl語言程式設計的套用實例。

前言

Easy things should be easy and hard things should be possible.
簡單的事情就讓它簡單,困難的東西也有辦法。
——Larry Wall(Perl語言創始人,拉里·沃爾)
在近十年中,我們一直在北京語言大學開設Perl程式設計的課程。可能有很多人會問,既然已經有了C、C++、Java等眾多程式語言,為什麼還要選擇Perl?拉里·沃爾上面的這句話便是回答。對!因為它讓編程足夠簡單,以至於我們所在的大學(北京語言大學)中眾多文科背景的學生也可以在一個學期的課時(每周兩小時)內掌握這門程式語言,並為他們今後的學習和工作提供極大的便利。
說到北京語言大學,就要談談本書的另一大著力點——自然語言處理(natural language processing, NLP)。隨著大數據時代的到來,人們對自然語言,也就是人類語言的處理能力提出了前所未有的需求。今天全球使用最廣泛的開源機器翻譯系統——摩西(Moses),就是使用Perl語言來實現諸模組功能與連線的。每年美國標準與技術研究院(NIST)所舉行的系統評測活動也是使用Perl腳本來實現機器自動評測的。
在這樣的背景下,作為自然語言處理工作者(IT界,都管我們叫NLPers),我們更加願意將這樣一門既有用又簡單的程式語言與自己實際工作中的自然語言處理問題相結合,為讀者奉獻一本以Perl入門,既能學到編程又可以窺探自然語言處理殿堂的教材。
全書概覽
本書分為入門、提高和套用三篇。第1篇包括Perl語言的運行環境、編程準備、基本語法和數據結構等知識。第2篇重點講解正則表達式和複雜數據結構,對它們的駕馭有助於理解Perl語言的靈活性和實用性。在本篇的最後一章(第7章),我們將帶領讀者實踐幾個自然語言處理中的任務。第3篇是套用篇,通過對Perl擴展包和文本編碼的掌握,將可以幫助我們完成更多、更複雜的實際任務,如語料庫的建設、網路爬蟲等。
本書的組織結構
程式設計是一門實踐性很強的技術。書中在對每一個知識點做簡要描述之後,都有相應的獨立的代碼示例來幫助讀者練習,以加深印象,做到真正掌握。在第1篇中,我們還會穿插“小貼士”和“練一練”環節,方便沒有基礎的讀者輕鬆上手。
閱讀準備
這本書適合我嗎?這是每個讀者在購買前都會提出的問題。本書在寫作之初,就是希望能夠同時滿足零基礎和有基礎兩部分讀者的需求,因為我們多年來在課堂上所面對的也是這樣兩部分學生。
對於有編程基礎的讀者,我們建議第1篇在簡單實踐後快速通過,對第2篇著重進行代碼實踐,並推薦完成第3篇所給出的諸多真實任務。而對於零基礎讀者,我們建議在逐節學習完第1篇內容之後,將重點放在第2篇的使用上。學有餘力者和有志於從事語言文字工作者則可以涉獵第3篇的內容。
線上資源
本書所涉及的語料庫資源、代碼資源和詞表等將在本書的官方網站上發布.
由於作者水平有限,書中錯誤在所難免,歡迎廣大讀者批評指正!
作者2013年8月

目錄

第1篇基礎篇
第1章什麼是Perl3
1.1Perl是什麼3
1.2為什麼要學習Perl3
1.3搭建Perl語言的運行環境4
1.4書寫Perl代碼的編輯器8
1.5“Hello World!”——我的第一個Perl程式8
第2章Perl語言基礎11
2.1變數11
2.1.1什麼是變數11
2.1.2Perl的變數類型12
2.1.3簡單變數12
2.1.4字元串中的轉義字元13
2.1.5簡單變數的操作符14
2.1.6簡單變數是數值還是字元串18
2.2Perl語言文法19
2.2.1條件語句20
2.2.2循環語句22
2.2.3在循環體中使用last和next24
第3章數組、哈希、檔案與函式27
3.1數組27
3.1.1什麼是數組27
3.1.2數組賦值28
3.1.3數組常用操作30
3.1.4數組常用函式34
3.1.5數組操作實例36
3.2哈希37
3.2.1什麼是哈希37
3.2.2哈希賦值39
3.2.3哈希常用操作40
3.2.4哈希常用函式43
3.2.5哈希操作實例44
3.3檔案45
3.3.1檔案操作一般步驟45
3.3.2打開檔案46
3.3.3關閉檔案46
3.3.4讀取檔案47
3.3.5寫入檔案49
3.3.6獲取檔案狀態50
3.3.7檔案和目錄的相關操作51
3.4函式52
3.4.1什麼是函式52
3.4.2函式的定義54
3.4.3函式的調用54
3.4.4變數的作用範圍55
3.4.5參數的使用58
3.4.6函式的返回值59
第4章用Perl語言實現幾個簡單任務61
4.1統計檔案詞頻61
4.2合併兩個詞表63
4.3求兩個詞表的交集64
4.4查詞表65
4.5漢語分詞66
第2篇提高篇
第5章正則表達式73
5.1什麼是正則表達式73
5.2正則表達式語法符號74
5.2.1指定字元的集合符號75
5.2.2字元範圍轉義符號79
5.2.3字元出現次數符號80
5.2.4錨點符號82
5.2.5其他符號83
5.2.6幾個開關項84
5.2.7字元串的替換操作86
5.2.8常用的正則表達式語法符號及正則表達式88
5.3用正則表達式解決問題90
5.3.1判斷子串是否存在90
5.3.2提取子串91
5.3.3字元串加工93
5.4典型檔案格式處理93
5.4.1查詞表93
5.4.2HTML與XML格式95
5.4.3標註語料庫97
第6章引用100
6.1數據結構與編程100
6.2什麼是引用101
6.2.1引用的概念101
6.2.2取得引用101
6.2.3通過引用訪問數據103
6.3使用引用構造複雜數據結構105
6.3.1值為數組的數組105
6.3.2值為哈希的哈希108
6.3.3值為數組的哈希108
6.3.4混合數據結構110
6.4使用複雜數據結構封裝數據111
6.4.1使用複雜數據結構查詞表111
6.4.2使用複雜數據結構統計詞性113
第7章幾個典型NLP任務的實現115
7.1合併兩個詞表115
7.2從英漢詞表生成漢英詞表119
7.3統計詞性語料庫121
7.4拼音標註語料庫統計123
第3篇套用篇第8章語料處理129
8.1語料批處理129
8.1.1利用@ARGV接收程式運行參數129
8.1.2標準輸入輸出及其重新設定130
8.1.3製作批處理的Perl代碼131
8.2Unicode編程135
8.2.1Perl內部字元串的兩種形式136
8.2.2UTF8字元流處理138
8.2.3編碼轉換139
8.2.4Perl Unicode編程常見問題處理140
8.3Unicode 編程實例142
8.3.1GB2312、UTF8相互轉化142
8.3.2中文語料斷字處理及字頻統計142
8.3.3實現語料斷句處理143
8.3.4提取複合語言模式的語料144
8.3.5漢語分詞145
第9章語料採集與資料庫管理147
9.1Perl語言擴展模組147
9.2安裝擴展模組148
9.3使用網路擴展模組自動下載檔案和頁面149
9.4抽取頁面內信息150
9.5資料庫管理152
9.5.1ODBC接口153
9.5.2DBI接口154
第10章綜合套用——音字轉換157
10.1音字轉換方法157
10.1.1問題表示157
10.1.2計算候選路徑的分值158
10.1.3尋找最優路徑160
10.2訓練模型參數162
10.2.1思路162
10.2.2在大規模語料中統計BiCount163
10.2.3建立索引數據167
10.3動態規划算法170

相關詞條

熱門詞條

聯絡我們