本文實例講述了Python結巴中文分詞工具使用過程中遇到的問題及解決方法。分享給大家供大家參考,具體如下:
結巴分詞是Python語言中效果最好的分詞工具,其功能包括:分詞、詞性標注、關鍵詞抽取、支持用戶詞表等。這幾天一直在研究這個工具,在安裝與使用過程中遇到一些問題,現在把自己的一些方法帖出來分享一下。
官網地址:https://github.com/fxsjy/jieba
1、安裝。
按照官網上的說法,有三種安裝方式,
第一種是全自動安裝:easy_install jieba 或者 pip install jieba,可是并沒有找到它提供這個安裝程序。
第二種方法是半自動安裝:先下載http://pypi.python.org/pypi/jieba/ ,解壓后在cmd命令行中運行 python setup.py install。這里需要注意的是,默認情況下,不能在cmd中直接運行python命令,需要把它的路徑加入到環境變量path中方可。我試過,可行。但是 這種方法安裝之后,結巴分詞功能只能在Python自帶的IDLE中使用。在含有PyDEV的MyEclipse中不能執行“import jieba”命令,所以繼續嘗試第三種方法。
第三種方法是手動安裝:將jieba目錄放置于當前目錄或者site-packages目錄。把下載到的jieba-0.30.zip解壓后,里面有個jibba的文件夾,把它復制到與你的Python程序相同的位置,這樣在程序中就可以執行“import jieba”了。
2、關于分詞的實現
官網提供了分詞的基本用法示例 :
#encoding=utf-8import jiebaseg_list = jieba.cut("我來到北京清華大學", cut_all=True)print "Full Mode:", "/ ".join(seg_list) # 全模式seg_list = jieba.cut("我來到北京清華大學", cut_all=False)print "Default Mode:", "/ ".join(seg_list) # 精確模式seg_list = jieba.cut("他來到了網易杭研大廈") # 默認是精確模式print ", ".join(seg_list)seg_list = jieba.cut_for_search("小明碩士畢業于中國科學院計算所,后在日本京都大學深造") # 搜索引擎模式print ", ".join(seg_list)
程序可以執行,但是在MyEclipse中顯示中文為Unicode編碼,這不科學。
但是繼續執行另一個詞性標注的示例卻非常正常:
import jieba.posseg as psegwords = pseg.cut("我愛北京天安門")for w in words: print w.word, w.flag
所以我就想去分析一下它的源代碼,結果發現在jiba/_init_.py文件(這是實現分詞的文件)的第209行(cut函數)中有關于檢查編碼的語句塊:
if not isinstance(sentence, unicode): try: sentence = sentence.decode('utf-8') except UnicodeDecodeError: sentence = sentence.decode('gbk','ignore')
而在jieba/posseg/_init_.py文件(這是實現詞性標注的文件)第158行的cut函數中卻沒有發現此類代碼。所以我猜想,前者有檢查編碼的代碼就出現亂碼,而后者沒有檢查編碼的代碼而正常顯示,所以就把前者檢查編碼的代碼給注釋了,結果程序執行報錯,只好又把人家的源碼還原,結果中文又正常顯示了!
新聞熱點
疑難解答