中文分詞算法總結


  中文分詞算法是指將一個漢字序列切分成一個一個單獨的詞,與英文以空格作為天然的分隔符不同,中文字符在語義識別時,需要把數個字符組合成詞,才能表達出真正的含義。分詞算法是文本挖掘的基礎,通常應用於自然語言處理、搜索引擎、智能推薦等領域。

一、 分詞算法分類

  中文分詞算法大概分為三大類,第一類是基於字符串匹配,即掃描字符串,如果發現字符串的子串和詞典中的詞相同,就算匹配,比如機械分詞方法。這類分詞通常會加入一些啟發式規則,比如“正向/反向最大匹配”,“長詞優先”等。第二類是基於統計以及機器學習的分詞方法,它們基於人工標注的詞性和統計特征,對中文進行建模,即根據觀測到的數據(標注好的語料)對模型參數進行訓練,在分詞階段再通過模型計算各種分詞出現的概率,將概率最大的分詞結果作為最終結果。常見的序列標注模型有HMM和CRF。這類分詞算法能很好處理歧義和未登錄詞問題,效果比前一類效果好,但是需要大量的人工標注數據,以及較慢的分詞速度。第三類是通過讓計算機模擬人對句子的理解,達到識別詞的效果,由於漢語語義的復雜性,難以將各種語言信息組織成機器能夠識別的形式,目前這種分詞系統還處於試驗階段。

二、 機械分詞算法

  機械分詞方法又叫基於字符串匹配的分詞方法,它是按照一定的策略將待分析的字符串與一個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。這是最簡單的分詞方法,但非常高效和常見。

(1) 匹配方法

  機械分詞方法按照掃描方向的不同,可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;常用的幾種機械分詞方法如下:

  正向最大匹配法(由左到右的方向);如以例句“達觀數據是一家大數據公司”,使用正向最大匹配法分詞的結果為“達觀/數據/是一/家/大數據/公司”

  逆向最大匹配法(由右到左的方向);同樣以例句“達觀數據是一家大數據公司”,使用逆向最大匹配法分詞的結果為“達觀/數據/是/一家/大數據/公司”

  最少切分(使每一句中切出的詞數最小)。例句“達觀數據是一家大數據公司”被分為“達觀數據/是/一家/大數據公司”。

(2) 消除歧義

  因為同一個句子,在機械分詞中經常會出現多種分詞的組合,因此需要進行歧義消除,來得到最優的分詞結果。

  以很常見的MMSEG機械分詞算法為例,MMSEG在搜索引擎Solr中經常使用到,是一種非常可靠高效的分詞算法。MMSEG消除歧義的規則有四個,它在使用中依次用這四個規則進行過濾,直到只有一種結果或者第四個規則使用完畢。這個四個規則分別是:

  最大匹配,選擇“詞組長度最大的”那個詞組,然后選擇這個詞組的第一個詞,作為切分出的第一個詞,如對於“中國人民萬歲”,匹配結果分別為:

  中/國/人
  中國/人/民
  中國/人民/萬歲
  中國人/民/萬歲

  在這個例子“詞組長度最長的”詞組為后兩個,因此選擇了“中國人/民/萬歲”中的“中國人”,或者“中國/人民/萬歲”中的“中國”。

  最大平均詞語長度。經過規則1過濾后,如果剩余的詞組超過1個,那就選擇平均詞語長度最大的那個(平均詞長=詞組總字數/詞語數量)。比如“生活水平”,可能得到如下詞組:

  生/活水/平 (4/3=1.33)
  生活/水/平 (4/3=1.33)
  生活/水平 (4/2=2)

  根據此規則,就可以確定選擇“生活/水平”這個詞組

  詞語長度的最小變化率,這個變化率一般可以由標准差來決定。比如對於“中國人民萬歲”這個短語,可以計算:

  中國/人民/萬歲(標准差=sqrt(((2-2)^2+(2-2)^2+(2-2^2))/3)=0)
  中國人/民/萬歲(標准差=sqrt(((2-3)^2+(2-1)^2+(2-2)^2)/3)=0.8165)

  於是選擇“中國/人民/萬歲”這個詞組。

  計算詞組中的所有單字詞詞頻的自然對數,然后將得到的值相加,取總和最大的詞組。比如:

  設施/和服/務
  設施/和/服務

  這兩個詞組中分別有“務”和“和”這兩個單字詞,假設“務”作為單字詞時候的頻率是5,“和”作為單字詞時候的頻率是10,對5和10取自然對數,然后取最大值者,所以取“和”字所在的詞組,即“設施/和/服務”。

(3) 機械分詞的缺陷

  機械分詞方法是一種很簡單高效的分詞方法,它的速度很快,都是O(n)的時間復雜度,效果也可以。但缺點是對歧義和新詞的處理不是很好,對詞典中未出現的詞沒法進行處理,因此經常需要其他分詞方法進行協作。

1、基於字符串匹配的分詞方法

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

  1. 正向最大匹配法(由左到右的方向);
  2. 逆向最大匹配法(由右到左的方向);
  3. 最少切分(使每一句中切出的詞數最小)。

  還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。由於漢語單字成詞的特點,正向最小匹配和逆向 最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高於正向匹配,遇到的歧義現象也較少。統計結果表明,單純使用正向最大匹配的錯誤率為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一最短路徑方法相對的不足就是粗分結果不唯一 ,后續過程需要處理多個粗分結果。 但是 ,對於預處理過程來講,粗分結果的高召回率至關重要。因為低召回率就意味着沒有辦法 再作后續的補救措施。預處理一旦出錯,后續處理只能是一錯再錯 ,基本上得不到正確的最終 結果。而少量的粗分結果對后續過程的運行效率影響不會太大,后續處理可以進一步優選排 錯,如詞性標注、句法分析等。

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

三、 基於n元語法的分詞算法

(1) 概念

  基於詞的n元語法模型是一個典型的生成式模型,早期很多統計分詞均以它為基本模型,然后配合其他未登錄詞識別模塊進行擴展。其基本思想是:首先根據詞典(可以是從訓練語料中抽取出來的詞典,也可以是外部詞典)對句子進行簡單匹配,找出所有可能的詞典詞,然后,將它們和所有單個字作為結點,構造的n元切分詞圖,圖中的結點表示可能的詞候選,邊表示路徑,邊上的n元概率表示代價,最后利用相關搜索算法(動態規划)從圖中找到代價最小的路徑作為最后的分詞結果。

 

機器如何解讀語言?中文分詞算法你知道幾種?-圖片1

 

圖1:n元語法分詞算法圖解

(2) 求解方法

  假設隨機變量S為一個漢字序列,W是S上所有可能切分出來的詞序列,分詞過程應該是求解使條件概率P(W|S)最大的切分出來的詞序列W*,即:

  根據貝葉斯公式,可以改寫為:

  由於分母為歸一化因子,P(S|W)為固定的值,因此求解的公式變為:

  如果使用一元模型,則公式變為求解:

  使用二元模型,公式變為求解

  以二元模型為例,在例圖中求解短語“結合成分子”時,分詞序列為“結合/成分/子”、“結合/成/分子”的概率分別為:

  這里的P(結合|start)、P(成分|結合)、P(子|成分)、P(end|子) 都是通過大量的語料統計得出,因此可以通過概率相乘來判斷哪一個分詞序列更好。在例圖中,可以通過動態歸划的算法算出最后最優的分詞序列。

  n元語法的分詞方法是基於統計的分詞算法,它比簡單的機械分詞算法精度更高,但算法基於現有的詞典,因此很難進行新詞發現處理。

四、 基於隱馬爾可夫模型的分詞算法

(1) 隱馬爾可夫模型

  隱馬爾可夫模型(Hidden Markov Model,簡稱HMM)是結構最簡單的動態貝葉斯網絡(dynamic Bayesian network),這是一種尤其著名的有向圖模型,主要用於時序數據建模,在語音識別、自然語言處理等領域有廣泛應用。在分詞算法中,隱馬爾可夫經常用作能夠發現新詞的算法,通過海量的數據學習,能夠將人名、地名、互聯網上的新詞等一一識別出來,具有廣泛的應用場景。(達觀數據 江永青)

  隱馬爾可夫模型是馬爾可夫鏈的一種,它的狀態不能直接觀察到,但能通過觀測向量序列觀察到,每一個觀測向量是由一個具有相應概率密度分布的狀態序列產生。如圖所示,隱馬爾可夫模型中的變量可分為兩組。第一組是狀態變量{y1, y2, …, yn},其中yi表示第i時刻的系統狀態。通常假定狀態變量是隱藏的、不可被觀測的,因此狀態變量亦稱隱變量。第二組是觀測變量{x1, x2, …, xn},其中xi表示第i時刻的觀測值。在隱馬爾可夫模型中,系統通常在多個狀態之間轉換,因此狀態變量yi的取值范圍通常是有N個可能取值的離散空間。

 

機器如何解讀語言?中文分詞算法你知道幾種?-圖片2

 

圖2:隱馬爾可夫模型圖解

  圖中的箭頭表示了變量間的依賴關系。在任一時刻,觀測變量的取值僅依賴於狀態變量,即xi由yi決定,與其他狀態變量及觀測變量的取值無關。同時,i時刻的狀態yi僅依賴於i-1時刻的狀態yi-1,與其余n-2個狀態無關。這就是所謂的“馬爾可夫鏈”,即:系統下一時刻的狀態僅由當前狀態決定,不依賴於以往的任何狀態。

(2) 隱馬爾可夫的求解

一  般的,一個HMM可以記作一個五元組u=(S, K, A, B, π), 其中S是狀態集合,K是輸出符號也就是觀察集合,A是狀態轉移概率,B是符號發射概率,π是初始狀態的概率分布。HMM主要解決三個基本問題:

  估計問題,給定一個觀察序列O=O1,O2,O3,... ,Ot和模型u=(A,B,π),計算觀察序列的概率;
  序列問題,給定一個觀察序列O=O1,O2,O3... Ot和模型μ=(A, B, π),計算最優的狀態序列Q=q1,q2,q3...qt;
  參數估計問題,給定一個觀察序列O=O1,O2,O3... Ot,如何調節模型μ=(A,B, π)的參數,使得P(O|μ)最大。

  隱馬爾可夫的估計問題可以通過前向/后向的動態規划算法來求解;序列問題可以通過viterbi算法求解;參數估計問題可以通過EM算法求解。通過海量的語料數據,可以方便快速地學習出HMM圖模型。

(3) HMM分詞方法

  隱馬爾可夫的三大問題分別對應了分詞中的幾個步驟。參數估計問題即是分詞的學習階段,通過海量的語料數據來學習歸納出分詞模型的各個參數。狀態序列問題是分詞的執行階段,通過觀察變量(即待分詞句子的序列)來預測出最優的狀態序列(分詞結構)。

  我們設定狀態值集合S =(B, M, E, S),分別代表每個狀態代表的是該字在詞語中的位置,B代表該字是詞語中的起始字,M代表是詞語中的中間字,E代表是詞語中的結束字,S則代表是單字成詞;觀察值集合K =(所有的漢字);則中文分詞的問題就是通過觀察序列來預測出最優的狀態序列。

  比如觀察序列為:

  O = 小紅就職於達觀數據

  預測的狀態序列為:

  Q = BEBESBMME

  根據這個狀態序列我們可以進行切詞:

  BE/BE/S/BMME/

  所以切詞結果如下:

  小紅/就職/於/達觀數據/

  因為HMM分詞算法是基於字的狀態(BEMS)來進行分詞的,因此很適合用於新詞發現,某一個新詞只要標記為如“BMME”,就算它沒有在歷史詞典中出現過,HMM分詞算法也能將它識別出來。

五、 基於條件隨機場的分詞算法

(1) 條件隨機場模型

  條件隨機場(Conditional Random Field,簡稱CRF)是一種判別式無向圖模型,它是隨機場的一種,常用於標注或分析序列語料,如自然語言文字或是生物序列。跟隱馬爾可夫模型通過聯合分布進行建模不同,條件隨機場試圖對多個變量在給定觀測值后的條件概率進行建模。(達觀數據 江永青)

  具體來說,若令x = {x1, x2, …, xn}為觀測序列,y = {y1, y2, …, yn}為與之對應的標記序列,則條件隨機場的目標是構建條件概率模型P(y | x)。令圖G = 表示結點與標記變量y中元素一一對應的無向圖,yv表示與結點v對應的標記變量,n(v)表示結點v的鄰接結點,如果圖G的每個變量yv都滿足馬爾可夫性,即:

則(y, x)構成一個條件隨機場。也就是說, 條件概率只與x和y的鄰接結點有關,與其他的y結點沒有關系。

 

機器如何解讀語言?中文分詞算法你知道幾種?-圖片3

 

圖3:條件隨機場模型圖解

  理論上來說,圖G可具有任意結構,只要能表示標記變量之間的條件獨立性關系即可。但在現實應用中,尤其是對標記序列建模時,最常用的仍然是上圖所示的鏈式結構,即“鏈式條件隨機場”。

(2) 條件隨機場的求解方法

  條件隨機場使用勢函數和圖結構上的團來定義條件概率P(y | x)。給定觀測序列x,鏈式條件隨機場主要包含兩種關於標記變量的團,即單個標記變量{yi}以及相鄰的標記變量{yi-1,yi}。在條件隨機場中,通過選用合適的勢函數,並引入特征函數,可以得到條件概率的定義:

  其中:

  其中tk(yi - 1, yi, x, i)是定義在觀測序列的兩個相鄰標記位置上的轉移特征函數,用於刻畫相鄰標記變量之間的相關關系以及觀測序列對它們的影響, (yi, x, i)是定義在觀測序列的標記位置i上的狀態特征函數,用於刻畫觀測序列對標記變量的影響,λk和 為參數,Z為規范化因子。

  可以將tk(yi - 1, yi, x, i)和sl(yi, x, i)兩個特征函數統一為:fk(yi-1, yi, x, i),則有:

  其中:

  已知訓練數據集,由此可知經驗概率分布 ,可以通過極大化訓練數據的對數似然函數來求模型參數。加入懲罰項后,訓練數據的對數似然函數為:

  其中的σ是可以調節的懲罰權重。對似然函數L(w)中的w求偏導,令:

  可以依次求出wi。

(3) 條件隨機場分詞方法

  條件隨機場和隱馬爾可夫一樣,也是使用BMES四個狀態位來進行分詞。以如下句子為例:

  中 國 是 泱 泱 大 國
  B B B B B B B
  M M M M M M M
  E E E E E E E
  S S S S S S S

  條件隨機場解碼就是在以上由標記組成的數組中搜索一條最優的路徑。

  我們要把每一個字(即觀察變量)對應的每一個狀態BMES(即標記變量)的概率都求出來。例如對於觀察變量“國”,當前標記變量為E,前一個觀察變量為“中”,前一個標記變量為B,則:

  t(B, E, ‘國’) 對應到條件隨機場里相鄰標記變量{yi-1, yi}的勢函數:

  s(E, ‘國’) 對應到條件隨機場里單個標記變量{yi}對應的勢函數sl(yi, x, i):

  t(B, E, ‘國’), s(E, ‘國’)相應的權值λk, 都是由條件隨機場用大量的標注語料訓練出來。因此分詞的標記識別就是求對於各個觀察變量,它們的標記變量(BMES)狀態序列的概率最大值,即求:

  的概率組合最大值。這個解法與隱馬爾可夫類似,都是可以用viterbi算法求解。

(4) 條件隨機場分詞的優缺點

  條件隨機場分詞是一種精度很高的分詞方法,它比隱馬爾可夫的精度要高,是因為隱馬爾可夫假設觀察變量xi只與當前狀態yi有關,而與其它狀態yi-1,yi+1無關;而條件隨機場假設了當前觀察變量xi與上下文相關,如 ,就是考慮到上一個字標記狀態為B時,當前標記狀態為E並且輸出“國”字的概率。因此通過上下文的分析,條件隨機場分詞會提升到更高的精度。但因為復雜度比較高,條件隨機場一般訓練代價都比較大。

 

六、分詞中的難題

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

1、歧義識別

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

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

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

2、新詞發現

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

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

七、中文分詞的應用

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM