目前我常常使用的分詞有結(jié)巴分詞、NLPIR分詞等等
最近是在使用結(jié)巴分詞,稍微做一下推薦,還是蠻好用的。
一、結(jié)巴分詞簡介
利用結(jié)巴分詞進(jìn)行中文分詞,基本實(shí)現(xiàn)原理有三:
基于Trie樹結(jié)構(gòu)實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG)
采用了動(dòng)態(tài)規(guī)劃查找最大概率路徑,找出基于詞頻的最大切分組合
對(duì)于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法
二、安裝及使用(Linux)
1.下載工具包,解壓后進(jìn)入目錄下,運(yùn)行:pythonsetup.pyinstall
Hint:a.一個(gè)良好的習(xí)慣是,對(duì)于下載下來的軟件,先看readme,再進(jìn)行操作。(沒有閱讀readme,直接嘗試+百度,會(huì)走很多彎路);
b.當(dāng)時(shí)運(yùn)行安裝命令時(shí),出現(xiàn)錯(cuò)誤:nopermission!(有些人可能會(huì)遇見這種問題,這是因?yàn)闄?quán)限不夠的。執(zhí)行:sudo!!其中“!!”表示上一條命令,這里指的就是上面的安裝命令),使用sudo后便可正常運(yùn)行。
2.在使用結(jié)巴做分詞的時(shí)候,一定會(huì)用的函數(shù)是:jieba.cut(arg1,arg2);這是用于分詞的函數(shù),我們只需要了解以下三點(diǎn),便可使用
a.cut方法接受兩個(gè)輸入?yún)?shù):第一個(gè)參數(shù)(arg1)為需要進(jìn)行分詞的字符串,arg2參數(shù)用來控制分詞模式。
分詞模式分為兩類:默認(rèn)模式,試圖將句子最精確地切開,適合文本分析;全模式,把句子中所有的可以成詞的詞語都掃描出來,適合搜索引擎
b.待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode
使用Python的人要注意編碼問題,Python是基于ASCII碼來處理字符的,當(dāng)出現(xiàn)不屬于ASCII的字符時(shí)(比如在代碼中使用漢字),會(huì)出現(xiàn)錯(cuò)誤信息:“ASCIIcodeccan'tencodecharacter”,解決方案是在文件頂部加入語句:#!-*-coding:utf-8-*-來告訴Python的編譯器:“我這個(gè)文件是用utf-8進(jìn)行編碼的,你要進(jìn)行解碼的時(shí)候,請(qǐng)用utf-8”。(這里記住,這個(gè)命令一定要加在文件的最頂部,如果不在最頂部,編碼問題就依然存在,得不到解決)關(guān)于編碼的轉(zhuǎn)換,可以參考博文(ps:個(gè)人理解“importsysreload(sys)sys.setdefaultencoding('utf-8')”這幾句話與“#!-*-coding:utf-8-*-”等價(jià))
c.jieba.cut返回的結(jié)構(gòu)是一個(gè)可迭代的generator,可以使用for循環(huán)來獲得分詞后得到的每一個(gè)詞語(unicode),也可以用list(jieba.cut(...))轉(zhuǎn)化為list
3.以下舉例jieba中提供的一個(gè)使用方法作為說明:
#!-*-coding:utf-8-*-
importjieba
seg_list=jieba.cut("我來到北京清華大學(xué)",cut_all=True)
print"FullMode:",''.join(seg_list)
seg_list=jieba.cut("我來到北京清華大學(xué)")
print"DefaultMode:",''.join(seg_list)
輸出結(jié)果為:
FullMode:我/來/來到/到/北/北京/京/清/清華/清華大學(xué)/華/華大/大/大學(xué)/學(xué)
DefaultMode:我/來到/北京/清華大學(xué)
三、結(jié)巴中文分詞的其他功能
1、添加或管理自定義詞典
結(jié)巴的所有字典內(nèi)容存放在dict.txt,你可以不斷的完善dict.txt中的內(nèi)容。
2、關(guān)鍵詞抽取
通過計(jì)算分詞后的關(guān)鍵詞的TF/IDF權(quán)重,來抽取重點(diǎn)關(guān)鍵詞。
以上內(nèi)容為大家介紹了使用python進(jìn)行漢語分詞,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/