中文分詞算法總結

轉載請注明:終小南 ? 中文分詞算法總結

什么是中文分詞
眾所周知,英文是以 詞為單位的,詞和詞之間是靠空格隔開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思。例如,英文句子I am a student,用中文則為:“我是一個學生”。計算機可以很簡單通過空格知道student是一個單詞,但是不能很容易明白“學”、“生”兩個字合起來 才表示一個詞。把中文的漢字序列切分成有意義的詞,就是中文分詞,有些人也稱為切詞。我是一個學生,分詞的結果是:我 是 一個 學生。

中文分詞和搜索引擎
中文分詞到底對搜索引擎有多大影響?對于搜索引擎來說,最重要的并不是找到所有結果,因為在上百億的網頁中找到所有結果沒有太多的意義,沒有人能看得完,最重要的是把最相關的結果排在最前面,這也稱為相關度排序。中文分詞的準確與否,常常直接影響到對搜索結果的相關度排序。筆者最近替朋友找一些關于日本和服的資料,在搜索引擎上輸入“和服”,得到的結果就發現了很多問題。下面就以這個例子來說明分詞對搜索結果的影響,在現有三個中文搜索引擎上做測試,測試方法是直接在Google(http://www.google.com)、百度(http://www.baidu.com)上以“和服”為關鍵詞進行搜索:

在Google上輸入“和服”搜索所有中文簡體網頁,總共結果507,000條,前20條結果中有14條與和服一點關系都沒有。

在百度上輸入“和服”搜索網頁,總共結果為287,000條,前20條結果中有6條與和服一點關系都沒有。

在中搜上輸入“和服”搜索網頁,總共結果為26,917條,前20條結果都是與和服相關的網頁。

這次搜索引擎結果中的錯誤,就是由于分詞的不準確所造成的。通過筆者的了解,Google的中文分詞技術采用的是美國一家名叫Basis Technology(http://www.basistech.com)的公司提供的中文分詞技術,百度使用的是自己公司開發的分詞技術,中搜使用的是國內海量科技(http://www.hylanda.com)提供的分詞技術。由此可見,中文分詞的準確度,對搜索引擎結果相關性和準確性有相當大的關系。

中文分詞技術
中文分詞技術屬于自然語言處理技術范疇,對于一句話,人可以通過自己的知識來明白哪些是詞,哪些不是詞,但如何讓計算機也能理解?其處理過程就是分詞算法。

現有的分詞算法可分為三大類:基于字符串匹配的分詞方法、基于理解的分詞方法和基于統計的分詞方法。

1、基于字符串匹配的分詞方法
這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功 (識別出一個詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最 短)匹配;按照是否與詞性標注過程相結合,又可以分為單純分詞方法和分詞與標注相結合的一體化方法。常用的幾種機械分詞方法如下:

正向最大匹配法(由左到右的方向);
逆向最大匹配法(由右到左的方向);
最少切分(使每一句中切出的詞數最小)。
還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。由于漢語單字成詞的特點,正向最小匹配和逆向 最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現象也較少。統計結果表明,單純使用正向最大匹配的錯誤率為1/169, 單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統,都是把機械分詞作為一種初分手段,還需通過利用各 種其它的語言信息來進一步提高切分的準確率。

一種方法是改進掃描方式,稱為特征掃描或標志切分,優先在待分析字符串中識別和切分出一些 帶有明顯特征的詞,以這些詞作為斷點,可將原字符串分為較小的串再來進機械分詞,從而減少匹配的錯誤率。另一種方法是將分詞和詞類標注結合起來,利用豐富 的詞類信息對分詞決策提供幫助,并且在標注過程中又反過來對分詞結果進行檢驗、調整,從而極大地提高切分的準確率。

對于機械分詞方法,可以建立一個一般的模型,在這方面有專業的學術論文,這里不做詳細論述。

2、基于理解的分詞方法
這種分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義 現象。它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義信息來對分詞歧義 進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。由于漢語語言知識的籠統、復雜性,難以將各種語言信息組織成機器可 直接讀取的形式,因此目前基于理解的分詞系統還處在試驗階段。

3、基于統計的分詞方法
從形式上看,詞是穩定的字的組 合,因此在上下文中,相鄰的字同時出現的次數越多,就越有可能構成一個詞。因此字與字相鄰共現的頻率或概率能夠較好的反映成詞的可信度。可以對語料中相鄰 共現的各個字的組合的頻度進行統計,計算它們的互現信息。定義兩個字的互現信息,計算兩個漢字X、Y的相鄰共現概率。互現信息體現了漢字之間結合關系的緊 密程度。當緊密程度高于某一個閾值時,便可認為此字組可能構成了一個詞。這種方法只需對語料中的字組頻度進行統計,不需要切分詞典,因而又叫做無詞典分詞 法或統計取詞方法。但這種方法也有一定的局限性,會經常抽出一些共現頻度高、但并不是詞的常用字組,例如“這一”、“之一”、“有的”、“我的”、“許多 的”等,并且對常用詞的識別精度差,時空開銷大。實際應用的統計分詞系統都要使用一部基本的分詞詞典(常用詞詞典)進行串匹配分詞,同時使用統計方法識別 一些新的詞,即將串頻統計和串匹配結合起來,既發揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結合上下文識別生詞、自動消除歧義的優點。

到底哪種分詞算法的準確度更高,目前并無定論。對于任何一個成熟的分詞系統來說,不可能單獨依靠某一種算法來實現,都需要綜合不同的算法。筆者了解,海 量科技的分詞算法就采用“復方分詞法”,所謂復方,相當于用中藥中的復方概念,即用不同的藥才綜合起來去醫治疾病,同樣,對于中文詞的識別,需要多種算法 來處理不同的問題。

4、基于規則的分詞方法
基于規則的分詞方法,這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字 符串,則匹配成功(識別出一個詞) 。常用的方法:最小匹配算法(Minimum Matching),正向(逆向)最大匹配法(Maximum Matching),逐字匹配算法,神經網絡法、聯想一回溯法,基于N-最短路徑分詞算法,以及可以相互組合,例如,可以將正向最大匹配方法和逆向最大匹 配方法結合起來構成雙向匹配法等。目前機械式分詞占主流地位的是正向最大匹配法和逆向最大匹配法。

最小匹配算法
在所有的分詞算法中,最早研究的是最小匹配算法(Minimum Matching),該算法從待比較字符串左邊開始比較,先取前兩個字符組成的字段與詞典中的詞進行比較,如果詞典中有該詞,則分出此詞,繼續從第三個字 符開始取兩個字符組成的字段進行比較,如果沒有匹配到,則取前3個字符串組成的字段進行比較,依次類推,直到取的字符串的長度等于預先設定的閾值,如果還 沒有匹配成功,則從待處理字串的第二個字符開始比較,如此循環。

例如,“如果還沒有匹配成功”,取出左邊兩個字 組成的字段與詞典進行比較,分出“如果”;再從“還”開始,取“還沒”,字典中沒有此詞,繼續取“還沒有”,依次取到字段“還沒有匹配”(假設閾值為 5),然后從“沒”開始,取“沒有”,如此循環直到字符串末尾為止。這種方法的優點是速度快,但是準確率卻不是很高,比如待處理字符串為“中華人民共和 國”,此匹配算法分出的結果為:中華、人民、共和國,因此該方法基本上已經不被采用 。

最大匹配算法
基于字符串的最大匹配,這種方法現在仍比較常用。最大匹配(Maximum Matching)分為正向和逆向兩種最大匹配,正向匹配的基本思想是:假設詞典中最大詞條所含的漢字個數為n個,取待處理字符串的前n個字作為匹配字 段,查找分詞詞典。若詞典中含有該詞,則匹配成功,分出該詞,然后從被比較字符串的n+1處開始再取n個字組成的字段重新在詞典中匹配;如果沒有匹配成 功,則將這n個字組成的字段的最后一位剔除,用剩下的n一1個字組成的字段在詞典中進行匹配,如此進行下去,直到切分成功為止。

例 如,待處理字符串為“漢字多為表意文字”,取字符串“漢語多為表”(假設比較的步長為5,本文步長step都取5)與詞典進行比較,沒有與之對應的詞,去 除“表”字,用字段“漢語多為”進行匹配,直至匹配到“漢語”為至,再取字符串“多為表意”,循環到切分出“文字”一詞。目前,正向最大匹配方法作為一種 基本的方法已被肯定下來,但是由于錯誤比較大,一般不單獨使用。如字符串“處理機器發生的故障”,在正向最大匹配方法中會出現歧義切分,該字符串被分為: 處理機、發生、故障,但是使用逆向匹配就能得到有效的切分。

逆向最大匹配RMM(Reverse Directional Maximum Matching Method)的分詞原理和過程與正向最大匹配相似,區別在于前者從文章或者句子(字串)的末尾開始切分,若不成功則減去最前面的一個字。比如對于字符串 “處理機器發生的故障”,第一步,從字串的右邊取長度以步長為單位的字段“發生的故障”在詞典中進行匹配,匹配不成功,再取字段“生的故障”進行匹配,依 次匹配,直到分出“故障”一詞,最終使用RMM方法切分的結果為:故障、發生、機器、處理。該方法要求配備逆序詞典。

一般來說根據漢語詞匯構成的特點,從理論上說明了逆向匹配的精確度高于正向匹配,漢語語句的特點一般中心語偏后。有研究數據,單純使用正向最大匹配的錯誤 率為1/ 169 ,單純使用逆向最大匹配的錯誤率為1/245。實際應用中可以從下面幾方面改進,同時采取幾種分詞算法,來提高正確率;改進掃描方式,稱為特征掃描或標志 切分,優先在待分析字符串中識別和切分出一些帶有明顯特征的詞,以這些詞作為斷點,可將原字符串分為較小的串再來進機械分詞,從而減少匹配的錯誤率等。

逐字匹配算法
逐字匹配算法,基于TRIE索引樹(又稱單詞索引樹 http://baike.baidu.com/view/1436495.htm)的逐字匹配算法,是建立在樹型詞典機制上,匹配的過程是從索引樹的根結點依次同步匹配待查詞中的每個字,可以看成是對樹 某一分枝的遍歷。因此,采用該算法的分詞速度較快,但樹的構造和維護比較復雜。一種改進的算法是和最大匹配算法相結合,吸取最大匹配算法詞典結構簡單、 TRIE索引樹算法查詢速度快的優點。因此詞典結構和最大匹配詞典構造機制相似,區別在于詞典正文前增加了多級索引。匹配過程類似TRIE索引樹進行逐字 匹配,在性能上和TRIE索引樹相近。

神經網絡分詞算法
神經網絡分詞算法,尹峰等提出了以神經網絡理論(BP模型)為基礎的漢語分詞模型,為漢語分詞研究開辟了新途徑。在實用中,BP算法存在收斂速度慢、易陷 入局部最小等缺點,嚴重妨礙了分詞速度。一種改進算法采用Levenbery2Marquart 算法來加速收斂速度,加快了收斂速度利用神經網絡的基本原理進行分詞。

聯想—回溯法
聯想—回溯法(Association-Backtracking Method,簡稱 AB 法)。這種方法要求建立三個知識庫——特征詞詞庫、實詞詞庫和規則庫。首先將待切分的漢字字符串序列按特征詞詞庫分割為若干子串,子串可以是詞,也可以是 由幾個詞組合而成的詞群;然后,再利用實詞詞庫和規則庫將詞群再細分為詞。切詞時,要利用一定的語法知識,建立聯想機制和回溯機制。聯想機制由聯想網絡和 聯想推理構成,聯想網絡描述每個虛詞的構詞能力,聯想推理利用相應的聯想網絡來判定所描述的虛詞究竟是單獨成詞還是作為其他詞中的構詞成分。回溯機制主要 用于處理歧義句子的切分。聯想—回溯法雖然增加了算法的時間復雜度和空間復雜度,但這種方法的切詞正確率較高,是一種行之有效的方法。

N-最段路徑分詞算法
基于N-最短路徑分詞算法,其基本思想是根據詞典,找出字串中所有可能的詞,構造詞語切分有向無環圖。每個詞對應圖中的一條有向邊,并賦給相應的邊長(權 值)。然后針對該切分圖,在起點到終點的所有路徑中,求出長度值按嚴格升序排列(任何兩個不同位置上的值一定不等,下同)依次為第1,第2,…,第 i,…,第N的路徑集合作為相應的粗分結果集。如果兩條或兩條以上路徑長度相等,那么他們的長度并列第 i,都要列入粗分結果集,而且不影響其他路徑的排列序號,最后的粗分結果集合大小大于或等于N。N一最短路徑方法實際上是最短路徑方法和全切分的有機結 合。該方法的出發點是盡量減少切分出來的詞數,這和最短路徑分詞方法是完全一致的;同時又要盡可能的包含最終結果,這和全切分的思想是共通的。通過這種綜 合,一方面避免了最短路徑分詞方法大量舍棄正 確結果的可能,另一方面又大大解決了全切分搜索空間過大,運行效率差的弊端。N一最短路徑方法相對的不足就是粗分結果不唯一 ,后續過程需要處理多個粗分結果。 但是 ,對于預處理過程來講,粗分結果的高召回率至關重要。因為低召回率就意味著沒有辦法 再作后續的補救措施。預處理一旦出錯,后續處理只能是一錯再錯 ,基本上得不到正確的最終 結果。而少量的粗分結果對后續過程的運行效率影響不會太大,后續處理可以進一步優選排 錯,如詞性標注、句法分析等。

除上面之外,還有基于詞頻統計的切詞法, 基于期望的切詞法,有窮多級列舉法等。

分詞中的難題
有了成熟的分詞算法,是否就能容易的解決中文分詞的問題呢?事實遠非如此。中文是一種十分復雜的語言,讓計算機理解中文語言更是困難。在中文分詞過程中,有兩大難題一直沒有完全突破。

1、歧義識別
歧義是指同樣的一句話,可能有兩種或者更多的切分方法。例如:表面的,因為“表面”和“面的”都是詞,那么這個短語就可以分成“表面 的”和“表 面的”。這種稱為交叉歧義。像這種交叉歧義十分常見,前面舉的“和服”的例子,其實就是因為交叉歧義引起的錯誤。“化妝和服裝”可以分成“化妝 和 服裝”或者“化妝 和服 裝”。由于沒有人的知識去理解,計算機很難知道到底哪個方案正確。

交叉歧義相對組合歧義來說是還算比較容易處 理,組合歧義就必需根據整個句子來判斷了。例如,在句子“這個門把手壞了”中,“把手”是個詞,但在句子“請把手拿開”中,“把手”就不是一個詞;在句子 “將軍任命了一名中將”中,“中將”是個詞,但在句子“產量三年中將增長兩倍”中,“中將”就不再是詞。這些詞計算機又如何去識別?

如 果交叉歧義和組合歧義計算機都能解決的話,在歧義中還有一個難題,是真歧義。真歧義意思是給出一句話,由人去判斷也不知道哪個應該是詞,哪個應該不是詞。 例如:“乒乓球拍賣完了”,可以切分成“乒乓 球拍 賣 完 了”、也可切分成“乒乓球 拍賣 完 了”,如果沒有上下文其他的句子,恐怕誰也不知道“拍賣”在這里算不算一個詞。

2、新詞識別
新詞,專業術語稱為未登 錄詞。也就是那些在字典中都沒有收錄過,但又確實能稱為詞的那些詞。最典型的是人名,人可以很容易理解句子“王軍虎去廣州了”中,“王軍虎”是個詞,因為 是一個人的名字,但要是讓計算機去識別就困難了。如果把“王軍虎”做為一個詞收錄到字典中去,全世界有那么多名字,而且每時每刻都有新增的人名,收錄這些 人名本身就是一項巨大的工程。即使這項工作可以完成,還是會存在問題,例如:在句子“王軍虎頭虎腦的”中,“王軍虎”還能不能算詞?

新詞中除了人名以外,還有機構名、地名、產品名、商標名、簡稱、省略語等都是很難處理的問題,而且這些又正好是人們經常使用的詞,因此對于搜索引擎來說,分詞系統中的新詞識別十分重要。目前新詞識別準確率已經成為評價一個分詞系統好壞的重要標志之一。

中文分詞的應用
目前在自然語言處理技術中,中文處理技術比西文處理技術要落后很大一段距離,許多西文的處理方法中文不能直接采用,就是因為中文必需有分詞這道工序。中文分詞是其他中文信息處理的基礎,搜索引擎只是中文分詞的一個應用。其他的比如機器翻譯(MT)、語音合成、自動分類、自動摘要、自動校對等等,都需要用到分詞。因為中文需要分詞,可能會影響一些研究,但同時也為一些企業帶來機會,因為國外的計算機處理技術要想進入中國市場,首先也是要解決中文分詞問題。在中文研究方面,相比外國人來說,中國人有十分明顯的優勢。

分詞準確性對搜索引擎來說十分重要,但如果分詞速度太慢,即使準確性再高,對于搜索引擎來說也是不可用的,因為搜索引擎需要處理數以億計的網頁,如果分 詞耗用的時間過長,會嚴重影響搜索引擎內容更新的速度。因此對于搜索引擎來說,分詞的準確性和速度,二者都需要達到很高的要求。目前研究中文分詞的大多是科研院校,清華、北大、中科院、北京語言學院、東北大學、IBM研究院、微軟中國研究院等都有自己的研究隊伍,而真正專業研究中文分詞的商業公司除了海量科技以外,幾乎沒有了。科研院校研究的技術,大部分不能很快產品化,而一個專業公司的力量畢竟有限,看來中文分詞技術要想更好的服務于更多的產品,還有很長一段路。

轉載請注明:終小南 ? 中文分詞算法總結

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容

  • 常用概念: 自然語言處理(NLP) 數據挖掘 推薦算法 用戶畫像 知識圖譜 信息檢索 文本分類 常用技術: 詞級別...
    御風之星閱讀 9,232評論 1 25
  • 背景 英文以空格作為分隔符,而中文詞語之間沒有分隔; 在中文里,“詞”和“詞組”邊界模糊現代漢語的基本表達單元雖然...
    翼徳閱讀 2,759評論 0 5
  • 關鍵詞: 中文分詞;分詞;自然語言處理;中文語料 最近要做中文自然語言處理相關任務,牽涉到使用中文分詞工具和相關算...
    generalz閱讀 7,412評論 0 15
  • 今天是8月8號,從今天我打算每天1000字,學習photoshopcc的相關學習教程,并繼續看一些類似的網站,還有...
    夜月神閱讀 215評論 1 2
  • - 1 - 昨天晚上在直播節目中和大家討論了男人不愿意給女人花錢的真正原因的這個話題。我帶著這樣的預期來和大家討論...
    瑞和她的淺島繁花閱讀 3,315評論 1 7