jieba分詞4種模式示例

jieba分詞

jieba分詞可以參考官方提供的github地址:https://github.com/fxsjy/jieba
結巴分詞0.4版本以上支持四種分詞模式

  • 精確模式:試圖將句子最精確地切開,適合文本分析;
  • 全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義
  • 搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞
  • paddle模式:利用PaddlePaddle深度學習框架,訓練序列標註(雙向GRU)網絡模型實現分詞。同時支持詞性標註。(應該是百度提供的分詞模型)

結巴的安裝

pip install jieba
# 舊版本升級
pip install jieba --upgrade
# 使用paddle模式:結巴版本大於0.4且安裝paddlepaddle-tiny模塊
pip install paddlepaddle-tiny==1.6.1

結巴的參數設置
jieba.cut 方法接受四個輸入參數: 需要分詞的字符串;

  • cut_all 參數用來控制是否採用全模式;
  • HMM 參數用來控制是否使用 HMM 模型;
  • use_paddle參數用來控制是否使用paddle模式下的分詞模式
  • paddle模式採用延遲加載方式,通過enable_paddle接口安裝paddlepaddle-tiny,並且import相關代碼;

jieba.cut_for_search 方法接受兩個參數:

  • 需要分詞的字符串;
  • 是否使用 HMM 模型
    該方法適合用於搜索引擎構建倒排索引的分詞,粒度比較細待分詞的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建議直接輸入 GBK 字符串,可能無法預料地錯誤解碼成 UTF-8

jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的generator,可以使用 for 循環來獲得分詞後得到的每一個詞語(unicode),或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list

jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器,可用於同時使用不同詞典。jieba.dt 爲默認分詞器,所有全局分詞相關函數都是該分詞器的映射。

結巴的測試示例:

# -*- coding:utf-8 -*-
import jieba

jieba.enable_paddle()  # 開啓paddle模式
sentences = ["2015年我畢業於西安建築科技大學",
             "2015年我畢業於西安科技大學",
             "2015年我畢業於西安電子科技大學",
             "2015年我畢業於西安建築科技大學",
             "2015年我畢業於西安交通大學",
             "2015年我畢業於北京大學"]

for sentence in sentences:
    # 全模式
    words = jieba.cut(sentence, cut_all=True)
    print("全模式:  %s" % " ".join(words))

    words = jieba.cut(sentence, use_paddle=True)
    print("新詞模式:  %s" % " ".join(words))
    # 默認精確模式
    words = jieba.cut(sentence)
    print("精確模式:  %s" % " ".join(words))

    # 搜索模式
    words = jieba.cut_for_search(sentence)
    print("搜索模式:  %s" % " ".join(words))

不同模式下的分詞結果:

全模式:  2015 年 我 畢業 於 西安 建築 科技 大學
新詞模式:  2015年 我 畢業 於 西安建築科技大學
精確模式:  2015 年 我 畢業 於 西安 建築 科技 大學
搜索模式:  2015 年 我 畢業 於 西安 建築 科技 大學

全模式:  2015 年 我 畢業 於 西安 科技 大學
新詞模式:  2015年 我 畢業 於 西安科技大學
精確模式:  2015 年 我 畢業 於 西安 科技 大學
搜索模式:  2015 年 我 畢業 於 西安 科技 大學

全模式:  2015 年 我 畢業 於 西安 西安電子科技大學 電子 電子科 電子科技 科技 大學
新詞模式:  2015年 我 畢業 於 西安電子科技大學
精確模式:  2015 年 我 畢業 於 西安電子科技大學
搜索模式:  2015 年 我 畢業 於 西安 電子 科技 大學 電子科 西安電子科技大學

全模式:  2015 年 我 畢業 於 西安 建築 科技 大學
新詞模式:  2015年 我 畢業 於 西安建築科技大學
精確模式:  2015 年 我 畢業 於 西安 建築 科技 大學
搜索模式:  2015 年 我 畢業 於 西安 建築 科技 大學

全模式:  2015 年 我 畢業 於 西安 西安交通 西安交通大學 交通 大學
新詞模式:  2015年 我 畢業 於 西安交通大學
精確模式:  2015 年 我 畢業 於 西安交通大學
搜索模式:  2015 年 我 畢業 於 西安 交通 大學 西安交通大學

全模式:  2015 年 我 畢業 於 北京 北京大學 大學
新詞模式:  2015年 我 畢業 於 北京大學
精確模式:  2015 年 我 畢業 於 北京大學
搜索模式:  2015 年 我 畢業 於 北京 大學 北京大學

從測試的情況中可以簡單的推測:paddle模式對於機構團體名的解析比較準確,而精確模式對部分詞語的解析不太正確,搜索和全模式也是一樣,主要是jieba默認的詞典dict.txt中包含了北京大學和西安交通大學,不包含其他學校的名稱,所以精確模式沒有正確的分詞,需要自定義詞典添加這些詞彙應該就可以正確的切分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章