文章來自開源中國(微信ID:oschina2013)
如需轉載請注明上述來源,其他來源無效并視為侵權
中文分詞是中文文本處理的基礎步驟棘伴,也是中文人機自然語言交互的基礎模塊寞埠。由于中文句子中沒有詞的界限,因此在進行中文自然語言處理時焊夸,通常需要先進行分詞仁连。
縱觀整個開源領域,陸陸續(xù)續(xù)做中文分詞的也有不少淳地,不過目前仍在維護的且質量較高的并不多怖糊。下面整理了一些個人認為比較優(yōu)秀的中文分詞庫帅容,以供大家參考使用颇象。
“結巴”中文分詞并徘,做最好的 Python 中文分詞組件遣钳。
特性
支持三種分詞模式:
精確模式,試圖將句子最精確地切開麦乞,適合文本分析蕴茴;
全模式劝评,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快倦淀,但是不能解決歧義蒋畜;
搜索引擎模式,在精確模式的基礎上撞叽,對長詞再次切分姻成,提高召回率,適合用于搜索引擎分詞愿棋。
支持繁體分詞
支持自定義詞典
算法
基于前綴詞典實現(xiàn)高效的詞圖掃描科展,生成句子中漢字所有可能成詞情況所構成的有向無環(huán)圖 (DAG)
采用了動態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合
對于未登錄詞,采用了基于漢字成詞能力的 HMM 模型糠雨,使用了 Viterbi 算法
代碼示例
輸出:
HanLP是一系列模型與算法組成的NLP工具包,由大快搜索主導并完全開源甘邀,目標是普及自然語言處理在生產(chǎn)環(huán)境中的應用琅攘。HanLP具備功能完善、性能高效松邪、架構清晰乎澄、語料時新、可自定義的特點测摔。
HanLP提供下列功能:
中文分詞
HMM-Bigram(速度與精度最佳平衡置济;一百兆內(nèi)存)
最短路分詞、N-最短路分詞
由字構詞(側重精度锋八,可識別新詞浙于;適合NLP任務)
感知機分詞、CRF分詞
詞典分詞(側重速度挟纱,每秒數(shù)千萬字符羞酗;省內(nèi)存)
極速詞典分詞
所有分詞器都支持:
索引全切分模式
用戶自定義詞典
兼容繁體中文
訓練用戶自己的領域模型
詞性標注
HMM詞性標注(速度快)
感知機詞性標注、CRF詞性標注(精度高)
命名實體識別
基于HMM角色標注的命名實體識別 (速度快)
中國人名識別紊服、音譯人名識別檀轨、日本人名識別、地名識別欺嗤、實體機構名識別
基于線性模型的命名實體識別(精度高)
感知機命名實體識別参萄、CRF命名實體識別
關鍵詞提取
TextRank關鍵詞提取
自動摘要
TextRank自動摘要
短語提取
基于互信息和左右信息熵的短語提取
拼音轉換
多音字、聲母煎饼、韻母讹挎、聲調
簡繁轉換
簡繁分歧詞(簡體、繁體、臺灣正體筒溃、香港繁體)
文本推薦
語義推薦马篮、拼音推薦、字詞推薦
依存句法分析
基于神經(jīng)網(wǎng)絡的高性能依存句法分析器
MaxEnt依存句法分析
文本分類
情感分析
word2vec
詞向量訓練怜奖、加載浑测、詞語相似度計算、語義運算歪玲、查詢尽爆、KMeans聚類
文檔語義相似度計算
語料庫工具
默認模型訓練自小型語料庫,鼓勵用戶自行訓練读慎。所有模塊提供訓練接口漱贱,語料可參考OpenCorpus。
在提供豐富功能的同時夭委,HanLP內(nèi)部模塊堅持低耦合幅狮、模型堅持惰性加載、服務堅持靜態(tài)提供株灸、詞典堅持明文發(fā)布崇摄,使用非常方便,同時自帶一些語料處理工具慌烧,幫助用戶訓練自己的模型逐抑。
Jcseg?是基于 mmseg 算法的一個輕量級中文分詞器屹蚊,同時集成了關鍵字提取厕氨,關鍵短語提取,關鍵句子提取和文章自動摘要等功能汹粤,并且提供了一個基于 Jetty 的 web 服務器命斧,方便各大語言直接 http 調用,同時提供了最新版本的 lucene, solr, elasticsearch 的分詞接口嘱兼!Jcseg?自帶了一個 jcseg.properties 文件用于快速配置而得到適合不同場合的分詞應用国葬,例如:最大匹配詞長,是否開啟中文人名識別芹壕,是否追加拼音汇四,是否追加同義詞等!
核心功能:
中文分詞:mmseg 算法 +?Jcseg?獨創(chuàng)的優(yōu)化算法踢涌,四種切分模式通孽。
關鍵字提取:基于 textRank 算法斯嚎。
關鍵短語提壤妗:基于 textRank 算法挨厚。
關鍵句子提缺てА:基于 textRank 算法糠惫。
文章自動摘要:基于 BM25+textRank 算法。
自動詞性標注:基于詞庫+(統(tǒng)計歧義去除計劃)钉疫,目前效果不是很理想硼讽,對詞性標注結果要求較高的應用不建議使用。
命名實體標注:基于詞庫+(統(tǒng)計歧義去除計劃)牲阁,電子郵件固阁,網(wǎng)址,大陸手機號碼城菊,地名备燃,人名,貨幣凌唬,datetime 時間并齐,長度,面積客税,距離單位等况褪。
Restful api:嵌入 jetty 提供了一個絕對高性能的 server 模塊,包含全部功能的http接口更耻,標準化 json 輸出格式测垛,方便各種語言客戶端直接調用。
中文分詞模式:
六種切分模式
(1).簡易模式:FMM 算法秧均,適合速度要求場合食侮。
(2).復雜模式:MMSEG 四種過濾算法,具有較高的歧義去除目胡,分詞準確率達到了 98.41%疙描。
(3).檢測模式:只返回詞庫中已有的詞條,很適合某些應用場合讶隐。
(4).檢索模式:細粒度切分起胰,專為檢索而生,除了中文處理外(不具備中文的人名巫延,數(shù)字識別等智能功能)其他與復雜模式一致(英文效五,組合詞等)。
(5).分隔符模式:按照給定的字符切分詞條炉峰,默認是空格畏妖,特定場合的應用。
(6).NLP 模式:繼承自復雜模式疼阔,更改了數(shù)字戒劫,單位等詞條的組合方式半夷,增加電子郵件,大陸手機號碼迅细,網(wǎng)址巫橄,人名,地名茵典,貨幣等以及無限種自定義實體的識別與返回湘换。
sego?是一個 Go 中文分詞庫统阿,詞典用雙數(shù)組 trie(Double-Array Trie)實現(xiàn)彩倚,分詞器算法為基于詞頻的最短路徑加動態(tài)規(guī)劃。
支持普通和搜索引擎兩種分詞模式扶平,支持用戶詞典帆离、詞性標注,可運行JSON RPC 服務结澄。
分詞速度單線程9MB/s哥谷,goroutines 并發(fā)42MB/s(8核 Macbook Pro)。
示例代碼:
中文處理工具包
特點
可能不是最快的開源中文分詞呼巷,但很可能是最準的開源中文分詞
基于BiLSTM 模型訓練而成
包含分詞,詞性標注赎瑰,實體識別, 都有比較高的準確率
用戶自定義詞典
可訓練自己的模型
批量處理
定制自己的模型
分詞
6王悍、Ansj 中文分詞 ——?基于 n-Gram+CRF+HMM 的中文分詞的 Java 實現(xiàn)
Ansj 中文分詞是一個基于 n-Gram+CRF+HMM 的中文分詞的 java 實現(xiàn)。分詞速度達到每秒鐘大約200萬字左右(mac air下測試)餐曼,準確率能達到96%以上压储。目前實現(xiàn)了中文分詞、中文姓名識別源譬、用戶自定義詞典集惋、關鍵字提取、自動摘要踩娘、關鍵字標記等功能刮刑,可以應用到自然語言處理等方面,適用于對分詞效果要求高的各種項目养渴。
下面是一個簡單的分詞效果雷绢,僅做參考:
word 分詞是一個 Java 實現(xiàn)的分布式的中文分詞組件理卑,提供了多種基于詞典的分詞算法翘紊,并利用 ngram 模型來消除歧義。能準確識別英文藐唠、數(shù)字帆疟,以及日期鹉究、時間等數(shù)量詞,能識別人名踪宠、地名自赔、組織機構名等未登錄詞。能通過自定義配置文件來改變組件行為殴蓬,能自定義用戶詞庫匿级、自動檢測詞庫變化蟋滴、支持大規(guī)模分布式環(huán)境染厅,能靈活指定多種分詞算法,能使用refine功能靈活控制分詞結果津函,還能使用詞頻統(tǒng)計肖粮、詞性標注、同義標注尔苦、反義標注涩馆、拼音標注等功能。提供了10種分詞算法允坚,還提供了10種文本相似度算法魂那,同時還無縫和 Lucene、Solr稠项、ElasticSearch涯雅、Luke 集成。注意:word1.3 需要 JDK1.8 展运。
分詞算法效果評估: