基於 Python 的中文分詞方案那種比較好?


"結巴"中文分詞:做最好的Python中文分片語件 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module.

https://github.com/fxsjy/jieba


歡迎嘗試我們thunlp組發布的THULAC中文詞法分析工具包,包括中文分詞和詞性標註功能,目前包括C++、Python和Java版本。與各常用工具包的性能和效果比較可以參考:THULAC:一個高效的中文詞法分析工具包 。


其實我沒有用過python或其他任何語言的分詞庫,不過恰好在OSChina上看到了幾個python的中文分詞庫,有幾個也是前面一些知友提到的,我把鏈接轉過來吧:

  • http://www.oschina.net/project/tag/264/segment?sort=viewlang=25os=0


python調用c庫,可以使用中科院的分詞,感覺還行,就是導入用戶自定義的詞庫存在失敗率,然後還無法調試出原因

今天剛給四款python中文分詞的做了簡單測試

http://hi.baidu.com/fooying/item/6ae7a0e26087e8d7eb34c9e8


推薦jiebas分詞,支持Python,Java,C++等版本。三種模式:精準,全模式和搜索模式。在使用過程中發現精準模式更為準確,之前寫過一個詞雲的應用,就是用的jieba分詞寫了一個詞雲的應用:地址:https://zhuanlan.zhihu.com/p/30061051

源碼:https://github.com/fxsjy/jieba

引用三種模式的介紹和使用:

精確模式

import jieba

s = u"我想和女朋友一起去北京故宮博物院參觀和閑逛。"

cut = jieba.cut(s)

print "【Output】"

print cut

print ",".join(cut)

【Output】

我,想,和,女朋友,一起,去,北京故宮博物院,參觀,和,閑逛,。

可見分詞結果返回的是一個生成器(這對大數據量數據的分詞尤為重要)。

全模式

print "【Output】"

print ",".join(jieba.cut(s,cut_all = True))

【Output】

我,想,和,女朋友,朋友,一起,去,北京,北京故宮,北京故宮博物院,故宮,故宮博物院,博物,博物院,參觀,和,閑逛,,

可見全模式就是把文本分成儘可能多的詞。

搜索引擎模式

print "【Output】"

print ",".join(jieba.cut_for_search(s))

【Output】

我,想,和,朋友,女朋友,一起,去,北京,故宮,博物,博物院,北京故宮博物院,參觀,和,閑逛,。


閑來無事,寫了兩個分詞程序,一個是基於mmseg的另一個是基於CRF的,目前已經上傳pypi.

pip install scseg

pip install genius


中科院和哈工大的兩個分詞包就挺好

網上有人做了總結,發來給大家參考

幾種開源分詞工具的比較


smallseg ;

輕量級,容易使用。


可以試試jieba_fast, 我覺得python jieba太慢,使用 c 重寫了jieba分詞庫中的核心函數,速度得到大幅提升。

特點

  • 對兩種分詞模式進行的加速:精確模式,搜索引擎模式
  • 利用cpython重新實現了 viterbi 演算法,使默認帶 HMM 的切詞模式速度提升 60%左右
  • 利用cpython重新實現了生成 DAG 以及從 DAG 計算最優路徑的演算法,速度提升 50%左右
  • 基本只是替換了核心函數,對源代碼的侵入型修改很少
  • 使用import jieba_fast as jieba 可以無縫銜接原代碼。

安裝說明

代碼目前對 Python 2/3 兼容,對*unix 兼容良好,對 windows 不能保證

  • 全自動安裝:pip install jieba_fast
  • 半自動安裝:先下載 http://pypi.python.org/pypi/jieba_fast/ ,解壓後運行 python setup.pyinstall

性能測試

測試機器 mbp17,i7,16G

測試過程: 先按行讀取文本《圍城》到一個數組裡,然後循環對《圍城》每行文字作為一個句子進行分詞。然後循環對圍城這本書分詞 50 次。分詞演算法分別採用 [開啟 HMM 的精確模式] 、 [關閉 HMM 的精確模式] 、 [開啟 HMM 的搜索引擎模式] 、 [開啟 HMM 的搜索引擎模式] 具體測試數據如下:

可以看出在開啟 HMM 模式下時間縮減了 60%左右,關閉 HMM 時時間縮減了 50%左右。

一致性測試

為了保證 jieba_fast 和 jieba 分詞結果相同,做了如下測試。

對《圍城》,《紅樓夢》分詞結果進行比較,其分詞結果完全一致

---- Test of 圍城 ----
nums of jieba results: 164821
nums of jieba_fast results: 164821
Are they exactly the same? True
----Test of 紅樓夢 ----
nums of jieba results: 597151
nums of jieba_fast results: 597151
Are they exactly the same? True

鳴謝

"結巴"中文分詞原作者: SunJunyi


github: https://github.com/deepcs233/jieba_fast (求 star 哈哈哈 ) 源代碼在 source/ 下

blog: http://deepcs.me


Thulac python 版,但比起java,C++版,還有好幾個重要功能不支持,比如自定義詞典,但基本夠用了


jieba 路過。。。


pynlpir,對ictclas的封裝,最近做畢設正在用,速度和準確率都很好~


hanlp

你甚至可以根據作者博客自己寫一個分詞出來


jieba,用過,很不錯


有個 mmseg for python 分詞


我沒用過python語言寫的分詞程序。

分詞這種功能屬於計算密集型功能,需要大量計算,python不適合這種場合,可以考慮python調用c庫。


推薦閱讀:

Python 多線程效率不高嗎?
Python 開發中有哪些高級技巧?
excel中想實現使用Python代替VBA,請問應該怎麼做?
如何優雅的安裝Python的pandas?

TAG:Python | 中文分詞 |