數學之美 係列二 -- 談談中文分詞
談談中文分詞
----- 統計語言模型在中文處理中的一個應用
上回我們談到利用統計語言模型進行語言處理,由於模型是建立在詞的基礎上的,對於中日韓等語言,首先需要進行分詞。例如把句子 “中國航天官員應邀到美國與太空總署官員開會。”
分成一串詞:
中國 / 航天 / 官員 / 應邀 / 到 / 美國 / 與 / 太空 / 總署 / 官員 / 開會。
最容易想到的,也是最簡單的分詞辦法就是查字典。這種方法最早是由北京航天航空大學的梁南元教授提出的。
用 “查字典” 法,其實就是我們把一個句子從左向右掃描一遍,遇到字典裏有的詞就標識出來,遇到複合詞(比如 “上海大學”)就找最長的詞匹配,遇到不認識的字串就分割成單字詞,於是簡單的分詞就完成了。這種簡單的分詞方法完全能處理上麵例子中的句子。八十年代,哈工大的王曉龍博士把它理論化,發展成最少詞數的分詞理論,即一句話應該分成數量最少的詞串。這種方法一個明顯的不足是當遇到有二義性 (有雙重理解意思)的分割時就無能為力了。比如,對短語 “發展中國家” 正確的分割是“發展-中-國家”,而從左向右查字典的辦法會將它分割成“發展-中國-家”,顯然是錯了。另外,並非所有的最長匹配都一定是正確的。比如“上海大學城書店”的正確分詞應該是 “上海-大學城-書店,” 而不是 “上海大學-城-書店”。
九十年代以前,海內外不少學者試圖用一些文法規則來解決分詞的二義性問題,都不是很成功。90年前後,清華大學的郭進博士用統計語言模型成功解決分詞二義性問題,將漢語分詞的錯誤率降低了一個數量級。
利用統計語言模型分詞的方法,可以用幾個數學公式簡單概括如下:
我們假定一個句子S可以有幾種分詞方法,為了簡單起見我們假定有以下三種:
A1, A2, A3, ..., Ak,
B1, B2, B3, ..., Bm
C1, C2, C3, ..., Cn
其中,A1, A2, B1, B2, C1, C2 等等都是漢語的詞。那麼最好的一種分詞方法應該保證分完詞後這個句子出現的概率最大。也就是說如果 A1,A2,..., Ak 是最好的分法,那麼 (P 表示概率):
P (A1, A2, A3, ..., Ak) 〉 P (B1, B2, B3, ..., Bm), 並且
P (A1, A2, A3, ..., Ak) 〉 P(C1, C2, C3, ..., Cn)
因此,隻要我們利用上回提到的統計語言模型計算出每種分詞後句子出現的概率,並找出其中概率最大的,我們就能夠找到最好的分詞方法。
當然,這裏麵有一個實現的技巧。如果我們窮舉所有可能的分詞方法並計算出每種可能性下句子的概率,那麼計算量是相當大的。因此,我們可以把它看成是一個動態規劃(Dynamic Programming) 的問題,並利用 “維特比”(Viterbi) 算法快速地找到最佳分詞。
在清華大學的郭進博士以後,海內外不少學者利用統計的方法,進一步完善中文分詞。其中值得一提的是清華大學孫茂鬆教授和香港科技大學吳德凱教授的工作。
需要指出的是,語言學家對詞語的定義不完全相同。比如說 “北京大學”,有人認為是一個詞,而有人認為該分成兩個詞。一個折中的解決辦法是在分詞的同時,找到複合詞的嵌套結構。在上麵的例子中,如果一句話包含“北京大學”四個字,那麼先把它當成一個四字詞,然後再進一步找出細分詞 “北京” 和 “大學”。這種方法是最早是郭進在 “Computational Linguistics” (《計算機語言學》)雜誌上發表的,以後不少係統采用這種方法。
一般來講,根據不同應用,漢語分詞的顆粒度大小應該不同。比如,在機器翻譯中,顆粒度應該大一些,“北京大學”就不能被分成兩個詞。而在語音識別中,“北京大學”一般是被分成兩個詞。因此,不同的應用,應該有不同的分詞係統。Google 的葛顯平博士和朱安博士,專門為搜索設計和實現了自己的分詞係統。
也許你想不到,中文分詞的方法也被應用到英語處理,主要是手寫體識別中。因為在識別手寫體時,單詞之間的空格就不很清楚了。中文分詞方法可以幫助判別英語單詞的邊界。其實,語言處理的許多數學方法通用的和具體的語言無關。在 Google 內,我們在設計語言處理的算法時,都會考慮它是否能很容易地適用於各種自然語言。這樣,我們才能有效地支持上百種語言的搜索。
對中文分詞有興趣的讀者,可以閱讀以下文獻:
1. 梁南元
書麵漢語自動分詞係統
https://www.touchwrite.com/demo/LiangNanyuan-JCIP-1987.pdf
2. 郭進
統計語言模型和漢語音字轉換的一些新結果
https://www.touchwrite.com/demo/GuoJin-JCIP-1993.pdf
3. 郭進
Critical Tokenization and its Properties
https://acl.ldc.upenn.edu/J/J97/J97-4004.pdf
4. 孫茂鬆
Chinese word segmentation without using lexicon and hand-crafted training data
https://portal.acm.org/citation.cfm?coll=GUIDE&dl=GUIDE&id=980775
最後更新:2017-04-02 00:06:27
上一篇:
數學之美 係列二十 -自然語言處理的教父 馬庫斯
下一篇:
2008流牛語錄備忘
hibernate一對多連接懶加載EAGER隻能有一個,如果有多個報錯,需要手動強製錄入
徐玉玉案宣判了,反思大數據能夠做些什麼!
初次接觸:DirectDraw
maven中properties標簽定義變量
opengl編程學習筆記(四)(紋理映射)(結合nvdia OpenglSDk 的nvimage類)
Database Recovery in GitLab – Implementing Database Disaster Tolerance & High Availability
取消word裏的全部超級鏈接
1.3—Spring基礎配置—2.Java配置
Reborn in 2016
C# 打開指定路徑下文件