基於python中jieba包的中文分詞中詳細使用

2021-09-21 07:34:31 字數 3621 閱讀 6885

為了教別人jieba庫的使用,順便自己把這個整理一下,記錄下來,省的之後使用又來找資料

jieba:中文分詞比較好,但是英文分詞就用其他的

3種分詞模式:

精確模式,將句子精確地切開,不存在冗餘,適合文字分析;

全模式,把句子中所有的可以成詞的詞語都掃瞄出來,速度非常快,但是不能解決歧義,有冗餘;

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

jieba.lcut(s)  精確模式,返回乙個列表型別的分詞結果

>>>jieba.lcut("中國是乙個偉大的國家")['中國', '是', '乙個', '偉大', '的', '國家']

jieba.lcut(s,cut_all=true)全模式,返回乙個列表型別的分詞結果,存在冗餘

>>>jieba.lcut("中國是乙個偉大的國家",cut_all=true)['中國', '國是', '乙個', '偉大', '的', '國家']

jieba.lcut_for_search(s)搜尋引擎模式,返回乙個列表型別的分詞結果,存在冗餘

>>>jieba.lcut_for_search(「中華人民共和國是偉大的")['中華', '華人', '人民', '共和', '共和國', '中華人民共和國', '是', '偉大', '的']

jieba.add_word(w)向分詞詞典增加新詞w>>>jieba.add_word("蟒蛇語言")

jieba.del_word('自定義詞')

#匯入詞性標註的包

import jieba.posseg as pseg

test_sent = (

"李小福是創新辦主任也是雲計算方面的專家; 什麼是八一雙鹿\n"

"例如我輸入乙個帶「韓玉賞鑑」的標題,在自定義詞庫中也增加了此詞為n類\n"

"「臺中」正確應該不會被切開。mac上可分出「石墨烯」;此時又可以分出來凱特琳了。"

)result = pseg.cut(test_sent)

for w in result:

print(w.word, "/", w.flag, ", ", end=' ')

李小福 / nr , 是 / v , 創新辦 / i , 主任 / b , 也 / d , 是 / v , 雲計算 / x , 方面 / n , 的 / uj , 專家 / n , ; / x , / x , 什麼 / r , 是 / v , 八一雙鹿 / nz , / x , 例如 / v , 我 / r , 輸入 / v , 乙個 / m , 帶 / v , 「 / x , 韓玉賞鑑 / nz , 」 / x , 的 / uj , 標題 / n , , / x , 在 / p , 自定義 / l , 詞庫 / n , 中 / f , 也 / d , 增加 / v , 了 / ul , 此 / r , 詞 / n , 為 / p , n / eng , 類 / q , / x , 「 / x , 臺中 / s , 」 / x , 正確 / ad , 應該 / v , 不 / d , 會 / v , 被 / p , 切開 / ad , 。 / x , mac / eng , 上 / f , 可 / v , 分出 / v , 「 / x , 石墨烯 / x , 」 / x , ; / x , 此時 / c , 又 / d , 可以 / c , 分出 / v , 來 / zg , 凱特琳 / nz , 了 / ul , 。 / x ,

# test frequency tune 

testlist = [ ('今天天氣不錯', ('今天', '天氣')), ('如果放到post中將出錯。', ('中', '將')), ('我們**了乙個叛徒', ('中', '出')), ]

for sent, seg in testlist:

print('/'.join(jieba.cut(sent, hmm=false)))

word = ''.join(seg)

print('%s before: %s, after: %s' % (word, jieba.get_freq(word),jieba.suggest_freq(seg, true)))

print('/'.join(jieba.cut(sent, hmm=false)))

print("-"*40)

今天天氣/不錯

今天天氣 before: 3, after: 0

今天/天氣/不錯

如果/放到/post/中將/出錯/。

中將 before: 763, after: 494

如果/放到/post/中/將/出錯/。

我們/中/出/了/乙個/叛徒

** before: 3, after: 3

我們/中/出/了/乙個/叛徒

---------------------

03.延遲載入

04.其他詞典

寫在最後

在基於python中jieba包的中文分詞中詳細使用(一)已經介紹了jieba分詞的一些基本內容,現在接著去介紹。

jieba 採用延遲載入,import jieba 和 jieba.tokenizer() 不會立即觸發詞典的載入,一旦有必要才開始載入詞典構建字首字典。如果你想手工初始 jieba,也可以手動初始化。

import jieba

jieba.initialize() # 手動初始化(可選)

官方使用案例

#encoding=utf-8

from __future__ import print_function

import sys

import jieba

def cuttest(test_sent):

result = jieba.cut(test_sent)

print(" ".join(result))

def testcase():

cuttest("這是乙個伸手不見五指的黑夜。我叫孫悟空,我愛北京,我愛python和c++。")

cuttest("我不喜歡日本和服。")

cuttest("雷猴回歸人間。")

cuttest("工信**幹事每月經過下屬科室都要親**代24**換機等技術性器件的安裝工作")

cuttest("我需要廉租房")

cuttest("永和服裝飾品****")

cuttest("我愛北京天安門")

cuttest("abc")

cuttest("隱馬爾可夫")

cuttest("雷猴是個好**")

if __name__ == "__main__":

testcase()

jieba.set_dictionary("foobar.txt")

print("******************************==")

testcase()

1.占用記憶體較小的詞典檔案

2.支援繁體分詞更好的詞典檔案

由於jieba分詞的內容比較多,功能也是比較強大的,筆者只是針對官方的文件進行了一定的解釋。有對自然語言處理的可以關注個人訂閱號,這裡有關於自然語言處理、機器學習等學習資料。

Python安裝jieba包,進行分詞

執行 cmd pip install jieba 2,實現全模式 精準模式和搜尋引擎模式的分詞 encoding utf 8 import jieba 匯入自定義詞典 jieba.load userdict dict.txt 全模式 text 故宮的著名景點包括乾清宮 太和殿和黃琉璃瓦等 seg l...

Python基於jieba的中文詞云

今日學習了python的詞云技術 from os import path from wordcloud import wordcloud import matplotlib.pyplot as plt d path.dirname file text open path.join d,data re...

Python基於jieba的中文詞云

python基於jieba的中文詞云。from os import path from wordcloud import wordcloud import matplotlib.pyplot as plt d path.dirname file text open path.join d,data ...