1. 介紹
jieba 是目前最好的 python 中文分詞元件,它主要有以下 3 種特性:
importjieba
import
jieba.posseg as pseg
import jieba.analyse as anls
2. 分詞
可使用jieba.cut
和jieba.cut_for_search
方法進行分詞,兩者所返回的結構都是乙個可迭代的 generator,可使用 for 迴圈來獲得分詞後得到的每乙個詞語(unicode),或者直接使用jieba.lcut
以及jieba.lcut_for_search
直接返回 list。其中:
jieba.cut_for_search
和jieba.lcut_for_search
接受 2 個引數:
2.1 全模式和精確模式
#全模式seg_list = jieba.cut("
他來到上海交通大學
", cut_all=true)
print("
【全模式】:
" + "
/ ".join(seg_list))
#精確模式
seg_list = jieba.cut("
他來到上海交通大學
", cut_all=false)
print("
【精確模式】:
" + "
/ ".join(seg_list))
2.2 搜尋引擎模式
#搜尋引擎模式
seg_list = jieba.cut_for_search("
他畢業於上海交通大學機電系,後來在一機部上海電器科學研究所工作
")
print("
【搜尋引擎模式】:
" + "
/ ".join(seg_list))
2.3 hmm模型
hmm 模型,即隱馬爾可夫模型(hidden markov model, hmm),是一種基於概率的統計分析模型,用來描述乙個系統隱性狀態的轉移和隱性狀態的表現概率。在 jieba 中,對於未登入到詞庫的詞,使用了基於漢字成詞能力的 hmm 模型和 viterbi 演算法,其大致原理是:
#未啟用 hmm
seg_list = jieba.cut("
他來到了網易杭研大廈
", hmm=false) #
預設精確模式和啟用 hmm
print("
【未啟用 hmm】:
" + "/ "
.join(seg_list))
【未啟用 hmm】:他/ 來到/ 了/ 網易/ 杭/ 研/大廈
#識別新詞
seg_list = jieba.cut("
他來到了網易杭研大廈
") #
預設精確模式和啟用 hmm
print("
【識別新詞】:
" + "/ "
.join(seg_list))
【識別新詞】:他/ 來到/ 了/ 網易/ 杭研/ 大廈
3 新增自定義字典
3.1 載入字典
使用jieba.load_userdict(file_name)
即可載入詞典。
#示例文字
sample_text = "
周大福是創新辦主任也是雲計算方面的專家"#
未載入詞典
print("
【未載入詞典】:
" + '/ '
.join(jieba.cut(sample_text)))
【未載入詞典】:周大福/ 是/ 創新/ 辦/ 主任/ 也/ 是/ 雲/ 計算/ 方面/ 的/專家
#載入詞典
jieba.load_userdict("
userdict.txt")
#載入詞典後
print("
【載入詞典後】:
" + '/ '
.join(jieba.cut(sample_text)))
【載入詞典後】:周大福/ 是/ 創新辦/ 主任/ 也/ 是/ 雲計算/ 方面/ 的/ 專家
3.2 調整字典
使用add_word(word, freq=none, tag=none)
和del_word(word)
可在程式中動態修改詞典。
jieba.add_word('石墨烯') #
增加自定義詞語
jieba.add_word('
凱特琳', freq=42, tag='
nz') #
設定詞頻和詞性
jieba.del_word('
自定義詞
') #
刪除自定義詞語
使用suggest_freq(segment, tune=true)
可調節單個詞語的詞頻,使其能(或不能)被分出來。
#調節詞頻前
print("
【調節詞頻前】:
" + '
/'.join(jieba.cut('
如果放到post中將出錯。
', hmm=false)))
4.2 基於text-rank
4.3 自定義語料庫
5 詞性標註
jieba.posseg.postokenizer(tokenizer=none)
新建自定義分詞器,tokenizer
引數可指定內部使用的jieba.tokenizer
分詞器。jieba.posseg.dt
為預設詞性標註分詞器。
words = pseg.cut("他改變了中國")
for word, flag in
words:
print(" "
.format(word, flag))
他 r改變 v
了 ul
中國 ns
6 並行分詞
將目標文字按行分隔後,把各行文字分配到多個 python 程序並行分詞,然後歸併結果,從而獲得分詞速度的可觀提公升。用法:
7 返回文字原始的位置
使用jieba.tokenize
方法可以返回詞語在原文的起止位置。
result = jieba.tokenize(u'上海益民食品一廠****')
print("
【普通模式】")
for tk in
result:
print("
word: \t\t start: \t\t end:
".format(tk[0],tk[1],tk[2]))
NLP 使用jieba分詞
相比於機械法分詞法,jieba聯絡上下文的分詞效果更好。同時使用hmm模型對片語的分類更加準確。測試對如下文字的分詞效果 南門街前段時間經過整改勸阻擺攤佔道的情況改善了很多,但是情況好了幾天又慢慢的和以前一樣了,只要有人帶頭 後面慢慢又擺出來,很多商戶現在乾脆用鉤子把一些貨物掛門口屋簷下的電線上,上...
jieba分詞使用記錄
jieba分詞核心分詞由兩部分組成。對於在詞典裡的字詞建立字典樹 trie 在搜尋的時候必須從根節點搜尋到葉子節點才算乙個詞 對於不在字典裡的字詞使用hmm模型根據最大可能性進行分詞 每次執行jieba分詞時程式會先檢查是否存在jieba.cache這個檔案。如果存在直接使用這個檔案中的資訊,否則重...
jieba 利用jieba分詞
目錄 三種分詞模式 新增自定義詞典進行分詞 jieba提供了三種分詞模式,分別是全模式,精確模式和搜尋引擎模式。全模式下會將所有可能的詞語都進行分詞,精確模式下會盡可能的將句子精確切開,搜尋引擎模式實在精確模式的基礎上,對長詞再進行劃分,提高分詞的召回率。使用cut和cut for search即可...