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 possegtext = "征戰四海只為今日一勝,我不會再敗了。"
# 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 analysetext = "征戰四海只為今日一勝,我不會再敗了。"
# 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 用刀...