中文分詞中的戰鬥機 jieba庫

2022-06-21 10:54:11 字數 2887 閱讀 3210

英文分詞的第三方庫nltk不錯,中文分詞工具也有很多(盤古分詞、yaha分詞、jieba分詞等)。但是從載入自定義字典、多執行緒、自動匹配新詞等方面來看。

大jieba確實是中文分詞中的戰鬥機

請隨意**表演使用pip包傻瓜安裝:py -3 -m pip install jieba/pip install jiba(windows下推薦第一種,可以分別安裝python2和3對應jieba)

3種模式

精確模式:試圖將句子最精確地切開,適合文字分析

全模式:把句子中所有的可以成詞的詞語都掃瞄出來(速度快)

搜尋引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞

實現方式

精確模式:jieba.cut(sen)

全模式:jieba.cut(sen,cut_all=true)

搜尋引擎模式:jieba.cut_for_search(sen)

import jieba

sen = "我愛深圳大學"

sen_list = jieba.cut(sen)

sen_list_all = jieba.cut(sen,cut_all=true)

sen_list_search = jieba.cut_for_search(sen)

for i in sen_list:

print(i,end=" ")

print()

for i in sen_list_all:

print(i,end=" ")

print()

for i in sen_list_search:

print(i,end=" ")

print()

結果:附截圖

建立方式

載入字典

jieba.load_userdict(txtfile)

調整字典

新增詞:jieba.add_word(word,freq=none,tag=none)

刪除詞:jieba.del_word(word)

import jieba

sen = "膠州市市長江大橋"

sen_list = jieba.cut(sen)

for i in sen_list:

print(i,end=" ")

print()

膠州市 市 長江大橋
jieba.add_word('江大橋',freq=20000)

sen_list = jieba.cut(sen)

for i in sen_list:

print(i,end=" ")

print()

結果附截圖

之前發現,詞典不是一次性載入的,說明它採用的是延遲載入。即:當遇到應用的時候才會載入。有點類似於python高階特性中的yield(節省記憶體)

效果圖如下:

jieba.analyse.extract_tags(sentence,topk=20):返回topk個tf/idf權重最大的詞語

import jieba.analyse

sen_ana = jieba.analyse.extract_tags(sen,3)

for i in sen_ana:

print(i)

江大橋

膠州市市長

jieba.posseg.cut(sen):返回的每個迭代物件有兩個屬性-> word 詞語 + flag 詞性

import jieba.posseg

words = jieba.posseg.cut(sen)

for word in words:

print(word.flag," ",word.word)

ns   膠州市

n 市長

x 江大橋

jieba.tokenize(sen,mode):mode可以設定為search,開啟搜尋模式

index= jieba.tokenize(sen)

for i in index:

print(i[0],"from",i[1],"to",i[2])

膠州市 from 0 to 3

市長 from 3 to 5

江大橋 from 5 to 8

基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖(dag)

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

對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了viterbi演算法。

參考文獻

中文分詞中的戰鬥機

英文分詞的第三方庫nltk不錯,中文分詞工具也有很多 盤古分詞 yaha分詞 jieba分詞等 但是從載入自定義字典 多執行緒 自動匹配新詞等方面來看。大jieba確實是中文分詞中的戰鬥機。請隨意 表演使用pip包傻瓜安裝 py 3 m pip install jieba pip install j...

飛機中的戰鬥機

網管員必讀 系列從書第2版再出新 網管員必讀 超級網管經驗談 第2版 該書第一版是暢銷 網管員必讀 系列叢書中業績最好的一本,受到了無數讀者的充分肯定和高度認可!該書第一版獲得了多項榮譽 具體參見我的另一篇博文 url 第二版相對第一版來說,內容更加豐富,篇幅由原來的640頁增加到了700頁,去掉了...

JS中的戰鬥機

好久沒寫部落格了!也不知道為什麼,最近想用js做個遊戲的衝動。先來看下截圖吧!這個遊戲的內容很簡單,玩家可以通過w a s d控制飛機的方向,按j可以發射子彈,然後不要被其他 撞到即可。由於遊戲的來自一些手機遊戲,並且是東拼西湊來的,所以畫面比較小。這個遊戲我用的是ext的基礎上做的,其實可以不用,...