jieba分詞的幾種形式

2022-06-28 21:15:12 字數 3567 閱讀 6651

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

seg_list = jieba.cut(test_text, cut_all=false)

seg_list = " ".join(seg_list)

print("cut_all=false:", seg_list)

輸出:

cut_all=false: 我 今天下午 打籃球

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

seg_list2 = jieba.cut(test_text, cut_all=true)

seg_list2 = " ".join(seg_list2)

print("cut_all=true:", seg_list2)

輸出:

cut_all=true: 我 今天 今天下午 天下 下午 打籃球 籃球

我們可以發現,分詞結果中有個 「天下」,顯然這不是我們想要的詞語,這屬於雜訊詞。

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

seg_list3 = jieba.cut_for_search(test_text)

seg_list3 = " ".join(seg_list3)

print("cut_for_search:", seg_list3)

輸出:

cut_for_search: 我 今天 天下 下午 今天下午 籃球 打籃球

命令列進行分詞

python -m jieba input.txt > output.txt

import jieba.posseg as posseg

text = "征戰四海只為今日一勝,我不會再敗了。"

# generator形式形如pair(『word』, 『pos』)的結果

seg = posseg.cut(text)

print([se for se in seg])

# list形式的結果

seg = posseg.lcut(text)

print(seg)

[pair('征戰', 'v'), pair('四海', 'ns'), pair('只', 'd'), pair('為', 'p'), pair('今日', 't'), pair('一', 'm'), pair('勝', 'v'), pair(',', 'x'), pair('我', 'r'), pair('不會', 'v'), pair('再敗', 'v'), pair('了', 'ul'), pair('。', 'x')]

[pair('征戰', 'v'), pair('四海', 'ns'), pair('只', 'd'), pair('為', 'p'), pair('今日', 't'), pair('一', 'm'), pair('勝', 'v'), pair(',', 'x'), pair('我', 'r'), pair('不會', 'v'), pair('再敗', 'v'), pair('了', 'ul'), pair('。', 'x')]

import jieba.analyse as analyse

text = "征戰四海只為今日一勝,我不會再敗了。"

# tf-idf

tf_result = analyse.extract_tags(text, topk=5) # topk指定數量,預設20

print(tf_result)

# textrank

tr_result = analyse.textrank(text, topk=5) # topk指定數量,預設20

print(tr_result)

['一勝', '再敗', '征戰', '四海', '今日']

['一勝', '再敗', '征戰', '四海', '今日']

jieba分詞有三種不同的分詞模式:精確模式、全模式和搜尋引擎模式

jieba.cut(sentence,cut_all=false,hmm=true) # 精確模式

jieba.cut(sentence,cut_all=true,hmm=true) # 全模式

jieba.cut_for_search (sentence, hmm=true) # 搜尋引擎模式

對應的,函式前加l即是對應得到list結果的函式:

jieba.lcut(sentence,cut_all=false,hmm=true) # 精確模式

jieba.lcut(sentence,cut_all=true,hmm=true) # 全模式

jieba.lcut_for_search (sentence, hmm=true) # 搜尋引擎模式

sentence = "征戰四海只為今日一勝,我不會再敗了。"

#---------------result----------------

'今天天氣 真 好' # 精確模式

'今天 今天天氣 天天 天氣 真好' # 全模式

'今天 天天 天氣 今天天氣 真 好' # 搜尋引擎模式

精確模式是最常用的分詞方法,全模式會將句子中所有可能的詞都列舉出來,搜尋引擎模式則適用於搜尋引擎使用。具體的差別可在下一節工作流程的分析中詳述。

另外分詞支援自定義字典,詞典格式和 dict.txt 一樣,乙個詞佔一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。

具體使用方法為:

jieba.load_userdict(file_name)  # 載入自定義詞典

jieba.add_word(word, freq=none, tag=none) # 在程式中動態修改詞典

jieba.del_word(word)

jieba.suggest_freq(segment, tune=true) # 調節單個詞語的詞頻,使其能/不能被分詞開

jieba.analyse.extract_tags(sentence, topk=20, withweight=false, allowpos=(), withflag=false)

# withweight表示是否返回權重,是的話返回(word,weight)的list

# allowpos僅包括指定詞性的詞,預設為空即不篩選。

jieba.analyse.textrank(self, sentence, topk=20, withweight=false, allowpos=('ns', 'n', 'vn', 'v'), withflag=false)

# 與tf-idf方法相似,但是注意allowpos有預設值,即會預設過濾某些詞性。

可以通過

jieba.enable_parallel(4) # 開啟並行分詞模式,引數為並行程序數,預設全部

jieba.disable_parallel() # 關閉並行分詞模式

來開啟或關閉並行分詞功能。

個人感覺一般用不到,大檔案分詞需要手動實現多程序並行,句子分詞也不至於用這個。

jieba 利用jieba分詞

目錄 三種分詞模式 新增自定義詞典進行分詞 jieba提供了三種分詞模式,分別是全模式,精確模式和搜尋引擎模式。全模式下會將所有可能的詞語都進行分詞,精確模式下會盡可能的將句子精確切開,搜尋引擎模式實在精確模式的基礎上,對長詞再進行劃分,提高分詞的召回率。使用cut和cut for search即可...

jieba分詞原理

關於jieba分詞的原理,在平時做文字方面的演算法時沒有仔細研究過,昨晚在網上看了一篇部落格,寫的很全面很詳細,其中有些深入的部分還並沒有完全看懂。jieba分詞系統介紹 涉及演算法 基於字首詞典實現詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 採用動態規劃查詢最大概率路徑,找...

Jieba分詞簡介

jieba分詞官網 jieba提供了三種分詞模式 精確模式,試圖將句子最精確地切開,適合文字分析 全模式,把句子中所有的可以成詞的詞語都掃瞄出來,速度非常快,但是不能解決歧義 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。import jieba sent 用刀...