結巴分詞支援三種分詞模式:1.精確模式,試圖將句子最精確的切開,適合文字分析;2.全模式,把句子中所有的可以成詞的詞語都掃瞄出來,速度非常快,但是不能解釋歧義;3.搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
一、分詞
from __future__ import unicode_literals
import sys
import jieba
import jieba.posseg
import jieba.analyse
# 分詞,可以使用cut()和lcut()兩種方法
seg_list = jieba.lcut("我來到北京清華大學", cut_all=true)
print("full mode:", ",".join(seg_list)) # 全模式
seg_list = jieba.cut("我來到北京清華大學", cut_all=false)
print("default mode:", ",".join(seg_list)) # 精確模式
seg_list = jieba.cut("他來到了網易杭研大廈") # 預設是精確模式
print(", ".join(seg_list))
seg_list = jieba.cut_for_search("小明碩士畢業於中國科學院計算所,後在日本京都大學深造") # 搜尋引擎模式
print(", ".join(seg_list))
full mode: 我,來到,北京,清華,清華大學,華大,大學
default mode: 我,來到,北京,清華大學
他, 來到, 了, 網易, 杭研, 大廈
小明, 碩士, 畢業, 於, 中國, 科學, 學院, 科學院, 中國科學院, 計算, 計算所, ,, 後, 在, 日本, 京都, 大學, 日本京都大學, 深造
二、新增詞典
# 新增詞典
jieba.load_userdict("d:/data/dict.txt")
三、調整詞典
# 調整詞典
print(','.join(jieba.cut('如果放到post中將出錯。', hmm=false)))
jieba.suggest_freq(('中', '將'), true)
print(','.join(jieba.cut('如果放到post中將出錯。', hmm=false)))
print(','.join(jieba.cut('「臺中」正確應該不會被切開', hmm=false)))
jieba.suggest_freq('臺中', true)
print(','.join(jieba.cut('「臺中」正確應該不會被切開', hmm=false)))
如果,放到,post,中將,出錯,。
如果,放到,post,中,將,出錯,。
「,臺,中,」,正確,應該,不會,被,切開
「,臺中,」,正確,應該,不會,被,切開
s = '''
此外,公司擬對全資子公司吉林歐亞置業****增資4.3億元,增資後,吉林歐亞置業註冊
資本由7000萬元增加到5億元。吉林歐亞置業主要經營範圍為房地產開發及百貨零售等業務。
目前在建吉林歐亞城市商業綜合體專案。2023年,實現營業收入0萬元,實現淨利潤-139.13萬元。
'''# tf-idf
print('%s %s' % (x, w))
# textrank
for x, w in jieba.analyse.textrank(s, withweight=true):
print('%s %s' % (x, w))
歐亞 0.7148056394033334
吉林 0.6453082221991667
置業 0.478531921956875
萬元 0.33220407634875
增資 0.3288276861054167
4.3 0.24905765631041665
7000 0.24905765631041665
2013 0.24905765631041665
139.13 0.24905765631041665
實現 0.19486376152458332
綜合體 0.19074469840854166
經營範圍 0.18985803977479165
億元 0.18745378397625
在建 0.17176428835750002
全資 0.16822244884583334
百貨 0.163858254571875
註冊 0.15190267518354167
零售 0.14443267604520835
子公司 0.14291960962
營業 0.13630174790083333
歐亞 1.0
吉林 0.8789102185873989
置業 0.6632552273555545
實現 0.5594840789490926
收入 0.41421237233070557
增資 0.38649739942877126
子公司 0.3369458567319608
城市 0.3336549476141939
商業 0.3321326523190795
在建 0.30622998871047585
零售 0.2909936174579653
百貨 0.290324963335001
資本 0.2884140004696881
營業 0.28780582798670107
全資 0.28655198294847095
綜合體 0.2804051042482387
開發 0.27110208243505346
業務 0.2685461768277592
**** 0.26500710953857665
經營範圍 0.25427993286840744
五、詞性標註
# 詞性標註
words = jieba.posseg.cut("我愛北京天安門")
for word, flag in words:
print('%s %s' % (word, flag))
我 r
愛 v北京 ns
天安門 ns
六、tokenize
# tokenize
result = jieba.tokenize(u'永和服裝飾品****')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0], tk[1], tk[2]))
result = jieba.tokenize(u'永和服裝飾品****', mode='search')
for tk in result:
print("word %s\t\t start: %d \t\t end:%d" % (tk[0], tk[1], tk[2]))
word 永和 start: 0 end:2
word 服裝 start: 2 end:4
word 飾品 start: 4 end:6
word **** start: 6 end:10
word 永和 start: 0 end:2
word 服裝 start: 2 end:4
word 飾品 start: 4 end:6
word 有限 start: 6 end:8
word 公司 start: 8 end:10
word **** start: 6 end:10
此外,結巴分詞還可以通過呼叫jieba.analyse.set_idf_path(file_name)和jieba.analyse.set_stop_words(file_name)兩個方法來實現設定idf路徑和設定停用詞的功能。 python中文分詞 結巴分詞
中文分詞是中文文字處理的乙個基礎性工作,結巴分詞利用進行中文分詞。其基本實現原理有三點 基於trie樹結構實現高效的詞圖掃瞄,生成句子中漢字所有可能成詞情況所構成的有向無環圖 dag 採用了動態規劃查詢最大概率路徑,找出基於詞頻的最大切分組合 對於未登入詞,採用了基於漢字成詞能力的hmm模型,使用了...
結巴中文分詞
人工智慧領域文字分類中最基本的就是分詞,分詞中最基礎的莫過於結巴分詞。分詞,顧名思義就是把一句話劃分成若干的詞語,只不過如今我們是讓電腦自動進行分詞。結巴中文分詞支援的三種模式分別為 1.全模式 把句子中所有成詞的詞語都掃瞄出來,速度非常快,但不能消除歧義。分詞結果 jieba.cut 文字名稱,c...
中文分詞概述及結巴分詞原理
詞是中文表達語義的最小單位,自然語言處理的基礎步驟就是分詞,分詞的結果對中文資訊處理至為關鍵。本文先對中文分詞方法進行一下概述,然後簡單講解一下結巴分詞背後的原理。中文分詞概述 簡單來說,中文分詞根據實現特點大致可分為兩個類別 基於詞典的分詞方法 基於統計的分詞方法。基於詞典的分詞方法 基於詞典的分...