為了教別人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 ...