背景
- 英文以空格作為分隔符,而中文詞語之間沒有分隔;
- 在中文里,“詞”和“詞組”邊界模糊現(xiàn)代漢語的基本表達(dá)單元雖然為“詞”,且以雙字或者多字詞居多,但由于人們認(rèn)識水平的不同,對詞和短語的邊界很難去區(qū)分;
中文分詞的方法其實不局限于中文應(yīng)用,也被應(yīng)用到英文處理,如手寫識別,單詞之間的空格就不很清楚,中文分詞方法可以幫助判別英文單詞的邊界。
分詞算法
現(xiàn)有的分詞算法可以分為三大類:基于字符串匹配的分詞方法,基于理解的分詞方法,基于統(tǒng)計以及機(jī)器學(xué)習(xí)的分詞方法。
基于字符串匹配的分詞方法
這種方法又叫做機(jī)械分詞方法,它是按照一定的策略將待分析的漢字串與一個“充分大的”機(jī)器詞典中的詞條進(jìn)行配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大(最長)匹配和最?。ㄗ疃蹋┢ヅ?;常用的幾種機(jī)械分詞方法如下:
- 正向最大匹配法(由左到右的方向);
- 逆向最大匹配法(由右到左的方向);
- 最少切分(使每一句中切出的詞數(shù)最?。?;
- 雙向最大匹配法(進(jìn)行由左到右、由右到左兩次掃描)
還可以將上述各種方法相互組合。例如,可以將正向最大匹配方法和逆向最大匹配方法結(jié)合起來構(gòu)成雙向匹配法。由于漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現(xiàn)象也較少。
統(tǒng)計結(jié)果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠(yuǎn)遠(yuǎn)不能滿足實際的需要。實際使用的分詞系統(tǒng),都是把機(jī)械分詞作為一種初分手段,還需通過利用各種其它的語言信息來進(jìn)一步提高切分的準(zhǔn)確率。
基于理解的分詞方法
這種分詞方法是通過讓計算機(jī)模擬人對句子的理解,達(dá)到識別詞的效果。其基本思想就是在分詞的同時進(jìn)行句法、語義分析,利用句法信息和語義信息來處理歧義現(xiàn)象。它通常包括三個部分:分詞子系統(tǒng)、句法語義子系統(tǒng)、總控部分。在總控部分的協(xié)調(diào)下,分詞子系統(tǒng)可以獲得有關(guān)詞、句子等的句法和語義信息來對分詞歧義進(jìn)行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。由于漢語語言知識的籠統(tǒng)、復(fù)雜性,難以將各種語言信息組織成機(jī)器可直接讀取的形式,因此目前基于理解的分詞系統(tǒng)還處在試驗階段。
基于統(tǒng)計以及機(jī)器學(xué)習(xí)的分詞方法
這類分詞基于人工標(biāo)注的詞性和統(tǒng)計特征,對中文進(jìn)行建模,即根據(jù)觀測到的數(shù)據(jù)(標(biāo)注好的語料)對模型參數(shù)進(jìn)行估計,即訓(xùn)練。 在分詞階段再通過模型計算各種分詞出現(xiàn)的概率,將概率最大的分詞結(jié)果作為最終結(jié)果。常見的序列標(biāo)注模型有HMM和CRF。
從形式上看,詞是穩(wěn)定的字的組合,因此在上下文中,相鄰的字同時出現(xiàn)的次數(shù)越多,就越有可能構(gòu)成一個詞。因此字與字相鄰共現(xiàn)的頻率或概率能夠較好的反映成詞的可信度??梢詫φZ料中相鄰共現(xiàn)的各個字的組合的頻度進(jìn)行統(tǒng)計,計算它們的互現(xiàn)信息。定義兩個字的互現(xiàn)信息,計算兩個漢字X、Y的相鄰共現(xiàn)概率?;ガF(xiàn)信息體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度。當(dāng)緊密程度高于某一個閾值時,便可認(rèn)為此字組可能構(gòu)成了一個詞。這種方法只需對語料中的字組頻度進(jìn)行統(tǒng)計,不需要切分詞典,因而又叫做無詞典分詞法或統(tǒng)計取詞方法。
但這種方法也有一定的局限性,會經(jīng)常抽出一些共現(xiàn)頻度高、但并不是詞的常用字組,例如“這一”、“之一”、“有的”、“我的”、“許多的”等,并且對常用詞的識別精度差,時空開銷大。實際應(yīng)用的統(tǒng)計分詞系統(tǒng)都要使用一部基本的分詞詞典(常用詞詞典)進(jìn)行串匹配分詞,同時使用統(tǒng)計方法識別一些新的詞,即將串頻統(tǒng)計和串匹配結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結(jié)合上下文識別生詞、自動消除歧義的優(yōu)點。
另外一類是基于統(tǒng)計機(jī)器學(xué)習(xí)的方法。首先給出大量已經(jīng)分詞的文本,利用統(tǒng)計機(jī)器學(xué)習(xí)模型學(xué)習(xí)詞語切分的規(guī)律(稱為訓(xùn)練),從而實現(xiàn)對未知文本的切分。我們知道,漢語中各個字單獨作詞語的能力是不同的,此外有的字常常作為前綴出現(xiàn),有的字卻常常作為后綴(“者”“性”),結(jié)合兩個字相臨時是否成詞的信息,這樣就得到了許多與分詞有關(guān)的知識。這種方法就是充分利用漢語組詞的規(guī)律來分詞。
優(yōu)點:
- 這類分詞算法能很好處理歧義和未登錄詞問題,效果比前一類效果好;
缺點:
- 需要預(yù)先有大量人工標(biāo)注數(shù)據(jù)分好詞的語料作支撐;
- 較慢的分詞速度;
- 訓(xùn)練過程中時空開銷極大。
分詞方法總結(jié)
到底哪種分詞算法的準(zhǔn)確度更高,目前并無定論。對于任何一個成熟的分詞系統(tǒng)來說,不可能單獨依靠某一種算法來實現(xiàn),都需要綜合不同的算法。例如,海量科技的分詞算法就采用“復(fù)方分詞法”,所謂復(fù)方,就是像中西醫(yī)結(jié)合般綜合運用機(jī)械方法和知識方法。對于成熟的中文分詞系統(tǒng),需要多種算法綜合處理問題。
常用的分詞工具
基于字符串匹配的分詞工具
- 在github開源的 ik-analyzer,項目源碼:https://github.com/wks/ik-analyzer
- 用Java開發(fā)的 Paoding 分詞器 ,基于Lucene4.x的paoding分詞器 源碼;