關(guān)鍵詞: 中文分詞蔚约;分詞慢睡;自然語(yǔ)言處理;中文語(yǔ)料
最近要做中文自然語(yǔ)言處理相關(guān)任務(wù)凶朗,牽涉到使用中文分詞工具和相關(guān)算法的研究。
整理不同分詞工具的比較研究:
Stanford團(tuán)隊(duì)開源工具显拳。支持中文和阿拉伯語(yǔ)等分詞棚愤。
分詞采用兩種模式:Two models with two different segmentation standards are included: Chinese Penn Treebank standard and Peking University standard.
清華大學(xué)現(xiàn)代漢語(yǔ)語(yǔ)料庫(kù)加工規(guī)范——詞語(yǔ)切分與詞性標(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 萬(wàn)詞條
授權(quán)方式:
非商用永久免費(fèi)石蔗,為確保我們大家拿到最新版本,非商用授權(quán)為1月畅形;授權(quán)到期后养距,可以訪問(wèn)網(wǎng)站獲得最新授權(quán)與最新的程序包;如果需要長(zhǎng)期授權(quán)束亏,請(qǐng)聯(lián)系商用授權(quán)
GitHub 地址
“結(jié)巴”中文分詞:做最好的 Python 中文分詞組件.
語(yǔ)言支持最豐富铃在,R、iOS碍遍、PHP定铜、.NET(C#)、Go怕敬、Java揣炕、C++等都支持。
官方分詞速度:1.5 MB / Second in Full Mode
400 KB / Second in Default Mode
支持三種分詞模式:
精確模式:試圖將句子最精確地切開东跪,適合文本分析畸陡;
全模式:把句子中所有的可以成詞的詞語(yǔ)都掃描出來(lái), 速度非常快虽填,但是不能解決歧義丁恭;
搜索引擎模式: 在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分斋日,提高召回率牲览,適合用于搜索引擎分詞。
支持繁體分詞
支持自定義詞典
授權(quán)方式:MIT 授權(quán)協(xié)議
在線演示
代碼示例:
# encoding=utf-8
import jieba
seg_list = jieba.cut("我來(lái)到北京清華大學(xué)", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我來(lái)到北京清華大學(xué)", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精確模式
seg_list = jieba.cut("他來(lái)到了網(wǎng)易杭研大廈") # 默認(rèn)是精確模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所恶守,后在日本京都大學(xué)深造") # 搜索引擎模式
print(", ".join(seg_list))
輸出:
【全模式】: 我/ 來(lái)到/ 北京/ 清華/ 清華大學(xué)/ 華大/ 大學(xué)
【精確模式】: 我/ 來(lái)到/ 北京/ 清華大學(xué)
【新詞識(shí)別】:他, 來(lái)到, 了, 網(wǎng)易, 杭研, 大廈 (此處第献,“杭研”并沒有在詞典中,但是也被Viterbi算法識(shí)別出來(lái)了)
【搜索引擎模式】: 小明, 碩士, 畢業(yè), 于, 中國(guó), 科學(xué), 學(xué)院, 科學(xué)院, 中國(guó)科學(xué)院, 計(jì)算, 計(jì)算所, 后, 在, 日本, 京都, 大學(xué), 日本京都大學(xué),深造
-
清華大學(xué)THULAC
THULAC(THU Lexical Analyzer for Chinese)由清華大學(xué)自然語(yǔ)言處理與社會(huì)人文計(jì)算實(shí)驗(yàn)室研制推出的一套中文詞法分析工具包兔港,具有中文分詞和詞性標(biāo)注功能庸毫。
支持C++、python衫樊、Java飒赃。
THULAC具有如下幾個(gè)特點(diǎn):
能力強(qiáng)。利用我們集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語(yǔ)料庫(kù)(約含5800萬(wàn)字)訓(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萬(wàn)字欲侮。只進(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)方式:
語(yǔ)言技術(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.reibang.com/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)注好的語(yǔ)料)對(duì)模型參數(shù)進(jìn)行估計(jì),即訓(xùn)練锚赤。 在分詞階段再通過(guò)模型計(jì)算各種分詞出現(xiàn)的概率匹舞,將概率最大的分詞結(jié)果作為最終結(jié)果。常見的序列標(biāo)注模型有HMM和CRF线脚。
??這類分詞算法能很好處理歧義和未記錄詞問(wèn)題赐稽,效果比前一類效果好,但是需要大量的人工標(biāo)注數(shù)據(jù)浑侥,以及較慢的分詞速度姊舵。
ICTCLAS是HMM算法
Jieba的精確模式也是采用HMM算法
Stanford是CRF算法
CRF算法默認(rèn)被認(rèn)為是最好的一種方式,基本思路是對(duì)漢字進(jìn)行標(biāo)注訓(xùn)練锭吨,不僅考慮了詞語(yǔ)出現(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)注,通過(guò)機(jī)器學(xué)習(xí)算法訓(xùn)練分類器進(jìn)行分詞考蕾。
思路比較:
??一般來(lái)說(shuō)祸憋,語(yǔ)言模型搜索匹配的方式速度更快,對(duì)專業(yè)詞匯影響好肖卧,但是發(fā)現(xiàn)新詞和消除歧義方面不好蚯窥,對(duì)字典要求比較高,需要不停的更新詞典塞帐。
詞典可以使用CRF等算法訓(xùn)練生成拦赠,識(shí)別新詞。
依據(jù)具體項(xiàng)目任務(wù)確定采用那種方式葵姥。
中文語(yǔ)料庫(kù)
人民日?qǐng)?bào):貌似機(jī)器分詞荷鼠,錯(cuò)誤率高
信息處理用現(xiàn)代漢語(yǔ)詞類標(biāo)記規(guī)范(現(xiàn)代漢語(yǔ)語(yǔ)料庫(kù)詞類標(biāo)記集)
現(xiàn)代漢語(yǔ)語(yǔ)料庫(kù)詞頻表
現(xiàn)代漢語(yǔ)語(yǔ)料庫(kù)字頻表
現(xiàn)代漢語(yǔ)語(yǔ)料庫(kù)分詞類詞頻表
四十萬(wàn)漢語(yǔ)大詞庫(kù), 解壓密碼:www.hankcs.com
69萬(wàn)中文詞庫(kù)
wiki百科語(yǔ)料
維基百科語(yǔ)料庫(kù)的預(yù)處理可參閱博客:維基百科簡(jiǎn)體中文語(yǔ)料的獲取和中文Wiki語(yǔ)料獲取
漢語(yǔ)開放詞網(wǎng),漢語(yǔ)語(yǔ)義詞典chinese wordnet
部分資料來(lái)源:http://www.aihanyu.org/cncorpus/resources.aspx