Python 結巴分詞在使用過程中遇到的問題及對策

來源:互聯網
上載者:User

結巴分詞是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函數中卻沒有發現此類代碼。所以我猜想,前者有檢查編碼的代碼就出現亂碼,而後者沒有檢查編碼的代碼而正常顯示,所以就把前者檢查編碼的代碼給注釋了,結果程式執行報錯,只好又把人家的源碼還原,結果中文又正常顯示了!我靠  我非常的不理解這是為什麼!!

=============================節操分隔線========================================

以上只是對固定的中文字串變數進行分詞和詞性標註,明天我會嘗試從檔案中讀取中文進行分詞和詞性標註。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.