posts - 2,  comments - 0,  trackbacks - 0

          數學之美 系列二 -- 談談中文分詞

          http://googlechinablog.com/2006/04/blog-post_10.html

          2006年4月10日 上午 08:10:00

          發表者: 吳軍, Google 研究員

          談談中文分詞
          ----- 統計語言模型在中文處理中的一個應用

          上回我們談到利用統計語言模型進行語言處理,由于模型是建立在詞的基礎上的,對于中日韓等語言,首先需要進行分詞。例如把句子 “中國航天官員應邀到美國與太空總署官員開會。”

          分成一串詞:
          中國 / 航天 / 官員 / 應邀 / 到 / 美國 / 與 / 太空 / 總署 / 官員 / 開會。

          最容易想到的,也是最簡單的分詞辦法就是查字典。這種方法最早是由北京航天航空大學的梁南元教授提出的。

          用 “查字典” 法,其實就是我們把一個句子從左向右掃描一遍,遇到字典里有的詞就標識出來,遇到復合詞(比如 “上海大學”)就找最長的詞匹配,遇到不認識的字串就分割成單字詞,于是簡單的分詞就完成了。這種簡單的分詞方法完全能處理上面例子中的句子。八十年代,哈工大的王曉龍博士把 它理論化,發展成最少詞數的分詞理論,即一句話應該分成數量最少的詞串。這種方法一個明顯的不足是當遇到有二義性 (有雙重理解意思)的分割時就無能為力了。比如,對短語 “發展中國家” 正確的分割是“發展-中-國家”,而從左向右查字典的辦法會將它分割成“發展-中國-家”,顯然是錯了。另外,并非所有的最長匹配都一定是正確的。比如“ 上海大學城書店”的正確分詞應該是 “上海-大學城-書店,” 而不是 “上海大學-城-書店”。

          九十年代以前,海內外不少學者試圖用一些文法規則來解決分詞的二義性問題,都不是很成功。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. 梁南元
          書面漢語自動分詞系統
          http://www.touchwrite.com/demo/LiangNanyuan-JCIP-1987.pdf

          2. 郭進
          統計語言模型和漢語音字轉換的一些新結果
          http://www.touchwrite.com/demo/GuoJin-JCIP-1993.pdf

          3. 郭進
          Critical Tokenization and its Properties
          http://acl.ldc.upenn.edu/J/J97/J97-4004.pdf

          4. 孫茂松
          Chinese word segmentation without using lexicon and hand-crafted training data
          http://portal.acm.org/citation.cfm?coll=GUIDE&dl=GUIDE&id=980775
          posted on 2009-05-27 00:04 iConnect 閱讀(104) 評論(0)  編輯  收藏 所屬分類: 數學&算法&數據結構
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          文章分類(17)

          文章檔案(16)

          收藏夾(17)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宣化县| 延长县| 延吉市| 富锦市| 瑞金市| 平南县| 永福县| 乌拉特后旗| 得荣县| 公主岭市| 陈巴尔虎旗| 泽普县| 奉贤区| 滦南县| 襄樊市| 峨边| 新巴尔虎左旗| 斗六市| 石楼县| 嘉兴市| 永川市| 华容县| 三门峡市| 连平县| 灵台县| 河源市| 应城市| 新巴尔虎右旗| 逊克县| 商洛市| 平昌县| 绥中县| 平利县| 萝北县| 盐边县| 固阳县| 无为县| 肇庆市| 柏乡县| 康平县| 淳安县|