Python結巴中文分詞工具使用過程中遇到的問題及解決方法

本文實例講述了Python結巴中文分詞工具使用過程中遇到的問題及解決方法。分享給大家供大家參考,具體如下:

結巴分詞是Python語言中效果最好的分詞工具,其功能包括:分詞、詞性標註、關鍵詞抽取、支持用戶詞表等。這幾天一直在研究這個工具,在安裝與使用過程中遇到一些問題,現在把自己的一些方法帖出來分享一下。
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-8
import jieba
seg_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 pseg
words = 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函數中卻沒有發現此類代碼。所以我猜想,前者有檢查編碼的代碼就出現亂碼,而後者沒有檢查編碼的代碼而正常顯示,所以就把前者檢查編碼的代碼給註釋了,結果程序執行報錯,只好又把人家的源碼還原,結果中文又正常顯示了!

運行效果如下圖:在這裏插入圖片描述

寫到這裏,給大家推薦一個資源很全的python學習聚集地,點擊進入,這裏有資深程序員分享以前學習心得,學習筆記,還有一線企業的工作經驗,且給大家精心整理一份python零基礎到項目實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
以上只是對固定的中文字符串變量進行分詞和詞性標註,接下來的文章裏我會嘗試從文件中讀取中文進行分詞和詞性標註。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章