結巴(jieba)分詞


一.介紹:

jieba:

“結巴”中文分詞:做最好的 Python 中文分詞組件

“Jieba” (Chinese for “to stutter”) Chinese text segmentation: built to be the best Python Chinese word segmentation module.

完整文檔見 :

GitHub: https://github.com/fxsjy/jieba

特點

  • 支持三種分詞模式:
    • 精確模式,試圖將句子最精確地切開,適合文本分析;
    • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
    • 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。
  • 支持繁體分詞
  • 支持自定義詞典
  • MIT 授權協議

在線演示: http://jiebademo.ap01.aws.af.cm/

安裝說明

代碼對 Python 2/3 均兼容

  • 全自動安裝: easy_install jieba 或者 pip install jieba / pip3 install jieba
  • 半自動安裝:先下載 https://pypi.python.org/pypi/jieba/ ,解壓后運行 python setup.py install
  • 手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄
  • 通過 import jieba 來引用

二.功能介紹及例子

  1.分詞主要功能:

             先介紹主要的使用功能,再展示代碼輸出。jieba分詞的主要功能有如下幾種:

      1. jieba.cut:該方法接受三個輸入參數:需要分詞的字符串; cut_all 參數用來控制是否采用全模式;HMM參數用來控制是否適用HMM模型

      2. jieba.cut_for_search:該方法接受兩個參數:需要分詞的字符串;是否使用HMM模型,該方法適用於搜索引擎構建倒排索引的分詞,粒度比較細。

      3. 待分詞的字符串可以是unicode或者UTF-8字符串,GBK字符串。注意不建議直接輸入GBK字符串,可能無法預料的誤解碼成UTF-8,

      4. jieba.cut 以及jieba.cut_for_search返回的結構都是可以得到的generator(生成器), 可以使用for循環來獲取分詞后得到的每一個詞語或者使用

      5. jieb.lcut 以及 jieba.lcut_for_search 直接返回list

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

  2.簡單模式:

    2.1.精確模式(返回結果是一個生成器,對大量數據分詞很重要,占內存小):

import jieba

s = '我想大口吃肉大碗喝酒!!!'
cut=jieba.cut(s)
print(cut)
#精確模式
print('精確模式輸出:')
print(''.join(cut))

 

              輸出為:

 

    2.2.全模式(返回結果也是生成器,特點是把文本分成盡可能多的詞):

import jieba

s = '我想大口吃肉大碗喝酒!!!'
print('全模式:')
result=jieba.cut(s, cut_all=True)
print(result)
print(' '.join(result))

 

    輸出為:

 

  

    2.3.搜索引擎模式:

import jieba

s = '我想大口吃肉大碗喝酒!!!'
print('搜索引擎模式:')
result=jieba.cut_for_search(s)
print(result)
print(''.join(result))

 

      輸出為:

  3.獲取詞性:每個詞都有其詞性,比如名詞、動詞、代詞等,結巴分詞的結果也可以帶上每個詞的詞性,要用到jieba.posseg

     分詞及輸出詞性:

import jieba.posseg as psg

s = '我想大口吃肉大碗喝酒!!!'
print('分詞及詞性:')
result=psg.cut(s)
print(result)
print([(x.word,x.flag) for x in result])

 

    過濾詞性,如獲取名詞:

import jieba.posseg as psg

s = '我想大口吃肉大碗喝酒!!!'
print('分詞及詞性:')
result=psg.cut(s)
print(result)
#篩選為名詞的
print([(x.word,x.flag) for x in result if x.flag=='n'])

 

    

  4.並行分詞:在文本數據量非常大的時候,為了提高分詞效率,開啟並行分詞就很有必要了。jieba支持並行分詞,基於python自帶的multiprocessing模塊,但要注意的是在Windows環境下不支持

# 開啟並行分詞模式,參數為並發執行的進程數
jieba.enable_parallel(5)

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

 

 

  5.獲取出現頻率Top n的詞(有些詞無實際意義,可篩選):

from collections import Counter
words_total=open('1',encoding='utf-8').read()
c = Counter(words_total).most_common(20)
print (c)

  6.使用用戶字典提高分詞准確性:

jieba分詞器還有一個方便的地方是開發者可以指定自己的自定義詞典,以便包含詞庫中沒有的詞,雖然jieba分詞有新詞識別能力,但是自行添加新詞可以保證更高的正確率。

使用命令:

jieba.load_userdict(filename) # filename為自定義詞典的路徑。在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,一個詞占一行,每一行分成三部分,一部分為詞語,一部分為詞頻,最后為詞性(可以省略),用空格隔開。

  7.關鍵詞抽取:

 

 

 

附:結巴分詞詞性對照表(按詞性英文首字母排序)

形容詞(1個一類,4個二類)

a 形容詞

ad 副形詞

an 名形詞

ag 形容詞性語素

al 形容詞性慣用語

區別詞(1個一類,2個二類)

b 區別詞

bl 區別詞性慣用語

連詞(1個一類,1個二類)

c 連詞

cc 並列連詞

副詞(1個一類)

d 副詞

嘆詞(1個一類)

e 嘆詞

方位詞(1個一類)

f 方位詞

前綴(1個一類)

h 前綴

后綴(1個一類)

k 后綴

數詞(1個一類,1個二類)

m 數詞

mq 數量詞

名詞 (1個一類,7個二類,5個三類)

名詞分為以下子類:

n 名詞

nr 人名

nr1 漢語姓氏

nr2 漢語名字

nrj 日語人名

nrf 音譯人名

ns 地名

nsf 音譯地名

nt 機構團體名

nz 其它專名

nl 名詞性慣用語

ng 名詞性語素

擬聲詞(1個一類)

o 擬聲詞

介詞(1個一類,2個二類)

p 介詞

pba 介詞“把”

pbei 介詞“被”

量詞(1個一類,2個二類)

q 量詞

qv 動量詞

qt 時量詞

代詞(1個一類,4個二類,6個三類)

r 代詞

rr 人稱代詞

rz 指示代詞

rzt 時間指示代詞

rzs 處所指示代詞

rzv 謂詞性指示代詞

ry 疑問代詞

ryt 時間疑問代詞

rys 處所疑問代詞

ryv 謂詞性疑問代詞

rg 代詞性語素

處所詞(1個一類)

s 處所詞

時間詞(1個一類,1個二類)

t 時間詞

tg 時間詞性語素

助詞(1個一類,15個二類)

u 助詞

uzhe 着

ule 了 嘍

uguo 過

ude1 的 底

ude2 地

ude3 得

usuo 所

udeng 等 等等 雲雲

uyy 一樣 一般 似的 般

udh 的話

uls 來講 來說 而言 說來

uzhi 之

ulian 連 (“連小學生都會”)

動詞(1個一類,9個二類)

v 動詞

vd 副動詞

vn 名動詞

vshi 動詞“是”

vyou 動詞“有”

vf 趨向動詞

vx 形式動詞

vi 不及物動詞(內動詞)

vl 動詞性慣用語

vg 動詞性語素

標點符號(1個一類,16個二類)

w 標點符號

wkz 左括號,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <

wky 右括號,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >

wyz 左引號,全角:“ ‘ 『

wyy 右引號,全角:” ’ 』

wj 句號,全角:。

ww 問號,全角:? 半角:?

wt 嘆號,全角:! 半角:!

wd 逗號,全角:, 半角:,

wf 分號,全角:; 半角: ;

wn 頓號,全角:、

wm 冒號,全角:: 半角: :

ws 省略號,全角:…… …

wp 破折號,全角:—— -- ——- 半角:--- ----

wb 百分號千分號,全角:% ‰ 半角:%

wh 單位符號,全角:¥ $ £ ° ℃ 半角:$

字符串(1個一類,2個二類)

x 字符串

xx 非語素字

xu 網址URL

語氣詞(1個一類)

y 語氣詞(delete yg)

狀態詞(1個一類)

z 狀態詞

 

參考:https://pypi.org/project/jieba/#history

     https://www.cnblogs.com/jiayongji/p/7119065.html

          https://blog.csdn.net/gzmfxy/article/details/78994396

   

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM