什麼是中文分詞
何為分詞?中文分詞與其他的分詞又有什麼不同呢?分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。在上面的例子中我們就可以看出,在英文的行文中,單字之間是以空格作為自然分界符的,而中文只是字、句和段可以透過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符,雖然英文也同樣存在短語的劃分問題,但是在詞這一層上,上面的例子中我們也可以看出,中文比之英文要復雜的多、困難的多。
目前主流的中文分詞演算法有以下3種:
1、 基於字串匹配的分詞方法
這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字符串與一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功(辨識出一個字)。依照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標註過程結合,又可以分為單純分詞方法和分詞與標註結合的一體化方法。常用的幾種機械分詞方法如下:
1)正向最大匹配法(由左至右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的詞數最小)。
也可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。由於漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高於正向匹配,遇到的歧義現像也較少。統計結果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統,都是把機械分詞當作一種初分手段,還需透過利用各種其它的語言資訊來進一步提高切分的準確率。
一種方法是改進掃描方式,稱為特徵掃描或標誌切分,優先在待分析字串中識別和切分出一些帶有明顯特徵的詞,以這些詞作為斷點,可將原始字串分為較小的字串再來進機械分詞,從而減少匹配的錯誤率。另一種方法是將分詞和詞類標註結合起來,利用豐富的詞類資訊對分詞決策提供幫助,並且在標註過程中又反過來對分詞結果進行檢驗、調整,從而大大提高切分的準確率。
2、 基於理解的分詞法
這種分詞方法是透過讓電腦模擬人對句子的理解,達到辨識詞的效果。其基本想法就是在分詞的同時進行句法、語意分析,並利用句法資訊和語意資訊來處理歧義現象。它通常包括三個部分:分詞子系統、句法語意子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義資訊來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和資訊。由於漢語語言知識的籠統、複雜性,難以將各種語言資訊組織成機器可直接讀取的形式,因此目前基於理解的分詞系統仍處於試驗階段。
3、 基於統計的分詞方法
從形式上看,詞是穩定的字的組合,因此在上下文中,相鄰的字同時出現的次數越多,就越有可能構成一個詞。因此字與字相鄰共現的頻率或機率能夠較好的反映成詞的可信度。可以對語料中相鄰共現的各個字的組合的頻度進行統計,計算它們的互現資訊。定義兩個字的互現訊息,計算兩個漢字X、Y的相鄰共現機率。互現資訊反映了漢字之間結合關係的緊密程度。當緊密程度高於某一個閾值時,便可認為此字組可能構成了一個詞。這種方法只需對語料中的字組頻度進行統計,不需要切分字典,因而又叫做無字典分詞法或統計取詞法。但這種方法也有一定的局限性,會經常抽出一些共現頻度高、但並不是詞的常用字組,例如「這一」、「之一」、「有的」、「我的」、 「許多的」等,並且對常用詞的辨識精度差,時空開銷大。實際應用的統計分詞系統都要使用一部基本的分詞詞典(常用詞詞典)進行串匹配分詞,同時使用統計方法識別一些新的詞,即將串頻統計和串匹配結合起來,既發揮匹配分詞切分速度快、效率高的特點,又利用了無字典分詞結合上下文辨識生詞、自動消除歧義的優點。
分詞幾點要注意:
1.分詞演算法的時間性能要比較高。尤其是現在的web搜索,即時性要求很高。所以作為中文資訊處理基礎的分詞首先必須佔用盡可能少的時間。
2.分詞正確率的提升不一定會帶來檢索效能的提升。分詞到達一定精確度之後,對中文資訊檢索的影響不再會很明顯,雖然仍然還是有一些影響,但這已經不是CIR的效能瓶頸。所以片面的一味追求高準確率的分詞演算法並不是很適合大規模中文資訊檢索。在時間與精確度之間存在矛盾無法兼顧的情況下,我們需要在二者之間找到一個適當的平衡點。
3.切分的顆粒度仍可依照長詞優先準則,但需要在查詢擴展層面進行相關後續處理。在資訊檢索中,分詞演算法只需要集中精力考慮如何消除交叉歧義。對於覆蓋歧義,我們可以利用字典的二次索引和查詢擴充來解決。
4.未登錄詞辨識的準確率比召回率更重要。若要盡量確保未登入詞辨識時不進行錯誤結合,避免因此切分出錯誤的未登入詞。如果將單字錯誤的結合成未登入字詞了,則有可能導致無法正確檢索到對應的文件。
百度的分詞
首先根據分割符號將查詢分開。 「資訊檢索理論工具」 分詞後<資訊檢索,理論,工具>。
然後看看是否有重複的字串,如果有,就拋棄多餘的,只保留一個。 「理論工具理論」分詞後<工具理論>,GOOGLE不考慮這個並歸計算。
接著判斷是否有英文或數字,如果有的話,把英文或數字當作一個整體保留並切開前後的中文。查詢”電影BT下載”分詞後<電影,BT,下載>。
如果字串只包含小於等於3個中文字元的話,那就保留不動,當字串長度大於4個中文字元的時候,百度的分詞程式才出馬大干快上,把這個字串肢解掉。
分詞演算法類型正向最大匹配,反向最大匹配,雙向最大匹配,語言模型方法,最短路徑演算法判斷一個分詞系統好不好,關鍵看兩點,一個是消除歧義能力;一個是字典未登錄詞的識別例如人名,地名,機構名等。
百度分詞採取了至少兩個字典,一個是普通字典,一個是專用字典(人名、地名、新詞等)。而且是專用字典先切分,然後將剩餘的片段交由普通字典來切分。
百度用分詞演算法類型採用的是雙向最大匹配演算法。
例:查詢“毛澤東北京華煙雲”,百度的分詞結果:“毛澤東/北/京華煙雲”
百度分詞可以識別人名,也可以識別“京華煙雲”,這說明有詞典未登錄詞的識別的功能
首先查詢專用字典(人名,部分地名等),將專有名稱切出,剩下的部分採取雙向分詞策略,如果兩者(正向最大匹配,反向最大匹配)切分結果相同,說明沒有歧義,直接輸出分詞結果。
如果不一致,則輸出最短路徑的那個結果,也就是切分的片斷越少越好,比如<古巴,比,倫理>和<古巴比倫,理>相比選擇後者,<北京,華,煙雲>和<北,京華煙雲>相比選擇後者。
如果長度相同,則選擇單字詞少的那一組切分結果。 “遙遠古古巴比倫”,這個查詢被百度切分為<遙遠,古古,巴比倫>,而不是切分為”遙/遠古/古巴比倫”
如果單字也相同,則選擇正向分詞結果。查詢“王強大小:”,百度將其切分為“王/強大/小”,而不是反向切分為“王/強/大小”
百度一直宣傳自己在中文處理方面的優勢,從上面看,分詞算法並無特殊之處,消歧效果並不理想,即使百度採取比上述分詞算法複雜些的算法也難以說成是優勢,如果說百度有優勢的話,唯一的優勢就是那個很大的專用詞典,這個專用詞典登錄了人名(比如大長今),稱謂(比如老太太),部分地名(比如阿聯酋等),估計百度採用學術界公佈的比較新的命名實體辨識演算法從語料庫裡面不斷辨識出字典未登入詞,逐漸擴充這個專門詞典。 ——本文來中國SEO論壇原文網址:http://www.web520.com/bbs/thread-2742-1-1.html
作者資訊:老陳,中國SEO論壇(www.web520.com/bbs)創辦人之一