分詞就是詞語切分了渠驼,關(guān)于分詞的理論實(shí)現(xiàn)蜈块,以后再繼續(xù)學(xué)習(xí)。此處用python的jieba分詞工具直接分詞迷扇。
jieba分詞庫(kù)的安裝
本人用的是python3.6百揭,windows環(huán)境,直接在cmd命令窗口下輸入:
pip install jieba
發(fā)現(xiàn)自動(dòng)下載安裝:jieba-0.38信峻,這個(gè)版本對(duì)python2和python3都兼容。
jieba分詞在python中使用
支持三種分詞模式:
- 精確模式瓮床,試圖將句子最精確地切開盹舞,適合文本分析;
- 全模式隘庄,把句子中所有的可以成詞的詞語都掃描出來, 速度非程卟剑快,但是不能解決歧義丑掺;
- 搜索引擎模式获印,在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分街州,提高召回率兼丰,適合用于搜索引擎分詞玻孟。
分詞算法
- 基于前綴詞典實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖 (DAG)
- 采用了動(dòng)態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合
- 對(duì)于未登錄詞鳍征,采用了基于漢字成詞能力的 HMM 模型黍翎,使用了 Viterbi 算法
分詞實(shí)現(xiàn)
jieba.cut
方法有三個(gè)輸入?yún)?shù):
- 分詞的字符串
- cut_all 參數(shù)用來控制是否采用全模式
- HMM參數(shù),是否使用HMM
jieba.cut_for_sesarch
方法接受兩個(gè)參數(shù) - 分詞的字符串
- 是否使用HMM
代碼實(shí)現(xiàn)艳丛,在python3環(huán)境下試了匣掸,沒問題
import jieba
seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我來到北京清華大學(xué)", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精確模式
seg_list = jieba.cut("他來到了網(wǎng)易杭研大廈") # 默認(rèn)是精確模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業(yè)于中國(guó)科學(xué)院計(jì)算所,后在日本京都大學(xué)深造") # 搜索引擎模式
print(", ".join(seg_list))
上面的 "/ "氮双,“碰酝, ” 斜杠空格,逗號(hào)空格戴差,是分詞以此來分來送爸,結(jié)果如下
分詞結(jié)果中,“杭州”一詞沒有在詞典中暖释,也被識(shí)別出來了
文檔中的分詞
文檔中分詞就是先讀文檔碱璃,然后再調(diào)用分詞,最后再保存了
import jieba
def readFile(path):
with open(path,'r',errors='ignore') as file:
content = file.read()
return content
def saveFile(path,result,errors='ignore'):
with open(path,'w') as file:
file.write(result)
content = readFile("E:/test.txt")#調(diào)用上面函數(shù)讀取文件的內(nèi)容
result = (str(content)).replace("\r\n","").strip()#刪除多余空行與空格
cutResult = jieba.cut(result)#默認(rèn)方式分詞饭入,分詞結(jié)果用空格隔開
saveFile("E:/result"," ".join(cutResult))#調(diào)用上面函數(shù)保存到文件
參考文獻(xiàn)
- (一)中說明的書籍
- https://github.com/fxsjy/jieba