目前我常常使用的分詞有結巴分詞、nlpir分詞等等
最近是在使用結巴分詞,稍微做一下推薦,還是蠻好用的。
一、結巴分詞簡介
利用結巴分詞進行中文分詞,基本實現原理有三:
基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖(dag)
採用了動態規劃查詢最大概率路徑, 找出基於詞頻的最大切分組合
對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了viterbi演算法
二、安裝及使用(linux)
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)
"full mode:
", '
'.join(seg_list)
seg_list = jieba.cut("
我來到北京清華大學")
"default mode:
", '
'.join(seg_list)
輸出結果為:
full mode: 我/ 來/ 來到/ 到/ 北/ 北京/ 京/ 清/ 清華/ 清華大學/ 華/ 華大/ 大/ 大學/學三、結巴中文分詞的其他功能default mode: 我/ 來到/ 北京/ 清華大學
1、新增或管理自定義詞典
結巴的所有字典內容存放在dict.txt,你可以不斷的完善dict.txt中的內容。
結巴中文分詞使用學習(python)
精確模式 預設 試圖將句子最精確地切開,適合文字分析 全模式,把句子中所有的可以成詞的詞語都掃瞄出來,但是不能解決歧義 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,該方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細。注意 jieba.cut以及jieba.cut for sear...
Python 使用jieba進行分詞並計算詞權重
import jieba import xlrd import jieba.analyse defstopwordslist filepath stopwords line.strip for line in open filepath,r encoding utf 8 readlines retu...
「結巴」分詞 做最好的Python分詞元件
中文分詞是中文文字處理的乙個基礎性工作,然而長久以來,在python程式設計領域,一直缺少高準確率 高效率的分詞元件。結巴分詞正是為了滿足這一需求。特性 支援兩種分詞模式 用法 演算法 介面 示例 python encoding utf 8 import jieba seg list jieba.c...