關(guān)鍵詞: 中文分詞;分詞;自然語言處理;中文語料
最近要做中文自然語言處理相關(guān)任務(wù),牽涉到使用中文分詞工具和相關(guān)算法的研究。
整理不同分詞工具的比較研究:
Stanford團(tuán)隊(duì)開源工具。支持中文和阿拉伯語等分詞。
分詞采用兩種模式:Two models with two different segmentation standards are included: Chinese Penn Treebank standard and Peking University standard.
清華大學(xué)現(xiàn)代漢語語料庫加工規(guī)范——詞語切分與詞性標(biāo)注,這個(gè)作為分詞和詞性標(biāo)記的依據(jù)標(biāo)準(zhǔn)。
授權(quán)方式: licensed under the GNU General Public License
支持:Python包、C#和.NET擴(kuò)展包。Python包被集成到了NLTK中。
持續(xù)更新,當(dāng)前更新到3.8.0
老牌中文分詞系統(tǒng),中科院張華平博士研究團(tuán)隊(duì)開發(fā),C++/JAVA/C#版本。持續(xù)更新
性能:
獲取Bakeoff 1兩項(xiàng)第一.
單機(jī)每秒可以查詢 100 萬詞條
授權(quán)方式:
非商用永久免費(fèi),為確保我們大家拿到最新版本,非商用授權(quán)為1月;授權(quán)到期后,可以訪問網(wǎng)站獲得最新授權(quán)與最新的程序包;如果需要長(zhǎng)期授權(quán),請(qǐng)聯(lián)系商用授權(quán)
GitHub 地址
“結(jié)巴”中文分詞:做最好的 Python 中文分詞組件.
語言支持最豐富,R、iOS、PHP、.NET(C#)、Go、Java、C++等都支持。
官方分詞速度:1.5 MB / Second in Full Mode
400 KB / Second in Default Mode
支持三種分詞模式:
精確模式:試圖將句子最精確地切開,適合文本分析;
全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
搜索引擎模式: 在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分,提高召回率,適合用于搜索引擎分詞。
支持繁體分詞
支持自定義詞典
授權(quán)方式:MIT 授權(quán)協(xié)議
在線演示
代碼示例:
# encoding=utf-8
import jieba
seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精確模式
seg_list = jieba.cut("他來到了網(wǎng)易杭研大廈") # 默認(rèn)是精確模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所,后在日本京都大學(xué)深造") # 搜索引擎模式
print(", ".join(seg_list))
輸出:
【全模式】: 我/ 來到/ 北京/ 清華/ 清華大學(xué)/ 華大/ 大學(xué)
【精確模式】: 我/ 來到/ 北京/ 清華大學(xué)
【新詞識(shí)別】:他, 來到, 了, 網(wǎng)易, 杭研, 大廈 (此處,“杭研”并沒有在詞典中,但是也被Viterbi算法識(shí)別出來了)
【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國(guó), 科學(xué), 學(xué)院, 科學(xué)院, 中國(guó)科學(xué)院, 計(jì)算, 計(jì)算所, 后, 在, 日本, 京都, 大學(xué), 日本京都大學(xué),深造
-
清華大學(xué)THULAC
THULAC(THU Lexical Analyzer for Chinese)由清華大學(xué)自然語言處理與社會(huì)人文計(jì)算實(shí)驗(yàn)室研制推出的一套中文詞法分析工具包,具有中文分詞和詞性標(biāo)注功能。
支持C++、python、Java。
THULAC具有如下幾個(gè)特點(diǎn):
能力強(qiáng)。利用我們集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語料庫(約含5800萬字)訓(xùn)練而成,模型標(biāo)注能力強(qiáng)大。
準(zhǔn)確率高。該工具包在標(biāo)準(zhǔn)數(shù)據(jù)集Chinese Treebank(CTB5)上分詞的F1值可達(dá)97.3%,詞性標(biāo)注的F1值可達(dá)到92.9%,與該數(shù)據(jù)集上最好方法效果相當(dāng)。
速度較快。同時(shí)進(jìn)行分詞和詞性標(biāo)注速度為300KB/s,每秒可處理約15萬字。只進(jìn)行分詞速度可達(dá)到1.3MB/s。
授權(quán)方式:
THULAC面向國(guó)內(nèi)外大學(xué)、研究所、企業(yè)以及個(gè)人用于研究目的免費(fèi)開放源代碼。
如有機(jī)構(gòu)或個(gè)人擬將THULAC用于商業(yè)目的,請(qǐng)發(fā)郵件至thunlp@gmail.com洽談技術(shù)許可協(xié)議。
-
哈工大LTP
使用HTTPS在線API方式使用.
授權(quán)方式:
語言技術(shù)平臺(tái)面向國(guó)內(nèi)外大學(xué)、中科院各研究所以及個(gè)人研究者免費(fèi)開放源代碼,但如上述機(jī)構(gòu)和個(gè)人將該平臺(tái)用于商業(yè)目的(如企業(yè)合作項(xiàng)目等)則需要付費(fèi)。
除上述機(jī)構(gòu)以外的企事業(yè)單位,如申請(qǐng)使用該平臺(tái),需付費(fèi)。
-
分詞算法
-
基于字符串匹配(基于字典的方式):
??即掃描字符串,如果發(fā)現(xiàn)字符串的子串和詞相同,就算匹配。這類分詞通常會(huì)加入一些啟發(fā)式規(guī)則。正向最大匹配法、逆向最大匹配法和雙向匹配分詞法等。
??這類算法優(yōu)點(diǎn)是速度塊,都是O(n)時(shí)間復(fù)雜度,實(shí)現(xiàn)簡(jiǎn)單,效果尚可。
也有缺點(diǎn),就是對(duì)歧義和未記錄詞處理不好。
1. 正向最大匹配法:
??假設(shè)詞典中最大詞條所含的漢字個(gè)數(shù)為n個(gè),取待處理字符串的前n個(gè)字作為匹配字段。若詞典中含有該詞,則匹配成功,分出該詞,然后從被比較字符串的n+1處開始再取n個(gè)字組成的字段重新在詞典中匹配;如果沒有匹配成功,則將這n個(gè)字組成的字段的最后一位剔除,用剩下的n一1個(gè)字組成的字段在詞典中進(jìn)行匹配,如此進(jìn)行下去,直到切分成功為止。(鏈接:http://www.itdecent.cn/p/e978053b0b95)
2. 逆向最大匹配法:
??與正向的區(qū)別在于如果匹配不成功則減去最前面的一個(gè)字。
3. 最少切分
??使每一句中切出的詞數(shù)最少。 -
基于字符串匹配(基于字典的方式):
ikanalyzer工具就是這一類
- 基于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)
??這類分詞基于人工標(biāo)注的詞性和統(tǒng)計(jì)特征,對(duì)中文進(jìn)行建模,即根據(jù)觀測(cè)到的數(shù)據(jù)(標(biāo)注好的語料)對(duì)模型參數(shù)進(jìn)行估計(jì),即訓(xùn)練。 在分詞階段再通過模型計(jì)算各種分詞出現(xiàn)的概率,將概率最大的分詞結(jié)果作為最終結(jié)果。常見的序列標(biāo)注模型有HMM和CRF。
??這類分詞算法能很好處理歧義和未記錄詞問題,效果比前一類效果好,但是需要大量的人工標(biāo)注數(shù)據(jù),以及較慢的分詞速度。
ICTCLAS是HMM算法
Jieba的精確模式也是采用HMM算法
Stanford是CRF算法
CRF算法默認(rèn)被認(rèn)為是最好的一種方式,基本思路是對(duì)漢字進(jìn)行標(biāo)注訓(xùn)練,不僅考慮了詞語出現(xiàn)的頻率,還考慮上下文,具備較好的學(xué)習(xí)能力,因此其對(duì)歧義詞和未登錄詞的識(shí)別都具有良好的效果。
論文[Chinese word segmentation as character tagging]中較為詳細(xì)地闡述了基于字標(biāo)注的分詞法
論文[Combining Classifiers for Chinese Word Segmentation]提出使用機(jī)器學(xué)習(xí)方法對(duì)每個(gè)字符進(jìn)行標(biāo)注,通過機(jī)器學(xué)習(xí)算法訓(xùn)練分類器進(jìn)行分詞。
思路比較:
??一般來說,語言模型搜索匹配的方式速度更快,對(duì)專業(yè)詞匯影響好,但是發(fā)現(xiàn)新詞和消除歧義方面不好,對(duì)字典要求比較高,需要不停的更新詞典。
詞典可以使用CRF等算法訓(xùn)練生成,識(shí)別新詞。
依據(jù)具體項(xiàng)目任務(wù)確定采用那種方式。
中文語料庫
人民日?qǐng)?bào):貌似機(jī)器分詞,錯(cuò)誤率高
信息處理用現(xiàn)代漢語詞類標(biāo)記規(guī)范(現(xiàn)代漢語語料庫詞類標(biāo)記集)
現(xiàn)代漢語語料庫詞頻表
現(xiàn)代漢語語料庫字頻表
現(xiàn)代漢語語料庫分詞類詞頻表
四十萬漢語大詞庫, 解壓密碼:www.hankcs.com
69萬中文詞庫
wiki百科語料
維基百科語料庫的預(yù)處理可參閱博客:維基百科簡(jiǎn)體中文語料的獲取和中文Wiki語料獲取
漢語開放詞網(wǎng),漢語語義詞典chinese wordnet
部分資料來源:http://www.aihanyu.org/cncorpus/resources.aspx