使用python進行漢語分詞

ybw8 9年前發布 | 19K 次閱讀 Python開發 Python

目前我常常使用的分詞有結巴分詞、NLPIR分詞等等最近是在使用結巴分詞,稍微做一下推薦,還是蠻好用的。一、結巴分詞簡介利用結巴分詞進行

目前我常常使用的分詞有結巴分詞、NLPIR分詞等等

最近是在使用結巴分詞,稍微做一下推薦,還是蠻好用的。

一、結巴分詞簡介

利用結巴分詞進行中文分詞,基本實現原理有三:

基于Trie樹結構實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)

采用了動態規劃查找最大概率路徑, 找出基于詞頻的最大切分組合

對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法

二、安裝及使用(Linux)

1.下載工具包,解壓后進入目錄下,運行:python setup.py install

Hint:a.一個良好的習慣是,對于下載下來的軟件,先看readme ,再進行操作。(沒有閱讀readme,直接嘗試+百度,會走很多彎路);

  b.當時運行安裝命令時,出現錯誤:no permission!  (有些人可能會遇見這種問題,這是因為權限不夠的。 執行:sudo !!   其中“!!”表示上一條命令,這里指的就是上面的安裝命令),使用sudo后便可正常運行。


2.在使用結巴做分詞的時候,一定會用的函數是:jieba.cut(arg1,arg2);這是用于分詞的函數,我們只需要了解以下三點,便可使用

a.cut方法接受兩個輸入參數:第一個參數(arg1)為需要進行分詞的字符串,arg2參數用來控制分詞模式。

分詞模式分為兩類:默認模式,試圖將句子最精確地切開,適合文本分析;全模式,把句子中所有的可以成詞的詞語都掃描出來,適合搜索引擎

   b.待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode

使用Python的人要注意編碼問題,Python是基于ASCII碼來處理字符的,當出現不屬于ASCII的字符時(比如在代碼中使用漢字),會出現錯誤信息:“ASCII codec can't encode character”,解決方案是在文件頂部加入語句: #! -*- coding:utf-8 -*-  來告訴Python的編譯器:“我這個文件是用utf-8進行編碼的,你要進行解碼的時候,請用utf-8”。(這里記住,這個命令一定要加在文件的最頂部,如果不在最頂部,編碼問題就依然存在,得不到解決)關于編碼的轉換,可以參考博文(ps:個人理解“import sys    reload(sys)   sys.setdefaultencoding('utf-8')”這幾句話與“#! -*- coding:utf-8 -*- ”等價)

    c.jieba.cut返回的結構是一個可迭代的generator,可以使用for循環來獲得分詞后得到的每一個詞語(unicode),也可以用list(jieba.cut(...))轉化為list  

3.以下舉例jieba中提供的一個使用方法作為說明:

#! -*- coding:utf-8 -*-
import jieba
seg_list = jieba.cut("我來到北京清華大學", cut_all = True)
print "Full Mode:", ' '.join(seg_list)
 
seg_list = jieba.cut("我來到北京清華大學")
print "Default Mode:", ' '.join(seg_list)

輸出結果為:

Full Mode: 我/ 來/ 來到/ 到/ 北/ 北京/ 京/ 清/ 清華/ 清華大學/ 華/ 華大/ 大/ 大學/ 學  
Default Mode: 我/ 來到/ 北京/ 清華大學

三、結巴中文分詞的其他功能

1、添加或管理自定義詞典

結巴的所有字典內容存放在dict.txt,你可以不斷的完善dict.txt中的內容。

2、關鍵詞抽取

通過計算分詞后的關鍵詞的TF/IDF權重,來抽取重點關鍵詞。


</div>

 本文由用戶 ybw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!