1. jieba中文處理

jieba中文處理

1. 中文分詞

jieba是一個(gè)在中文自然語言處理中用的最多的工具包之一看疙,它以分詞起家,目前已經(jīng)能夠?qū)崿F(xiàn)包括分詞直奋、詞性標(biāo)注以及命名實(shí)體識別等多種功能能庆。既然Jieba是以分詞起家,我們自然要首先學(xué)習(xí)Jieba的中文分詞功能帮碰。Jieba提供了三種分詞模式:

  • 精確模式 在該模式下相味,Jieba會將句子進(jìn)行最精確的切分
  • 全模式 把句子中所有可以成詞的詞語都掃描出來,優(yōu)點(diǎn)在于該模式非逞惩欤快丰涉,缺點(diǎn)也很明顯,就是不能有效解決歧義的問題
  • 搜索引擎模式 在精確模式的基礎(chǔ)上斯碌,對長詞進(jìn)行再次切分一死,該模式適合用于搜索引擎構(gòu)建索引的分詞

在jieba分詞中,最常用的分詞函數(shù)有兩個(gè)傻唾,分別是cutcut_for_search投慈,分別對應(yīng)于“精確模式/全模式”和“搜索引擎模式”。

當(dāng)然冠骄,兩者的輸入?yún)?shù)也不一樣伪煤,cut函數(shù)的輸入主要有三個(gè),分別是:

  • 需要分詞的字符串
  • cut_all用來控制是否采用全模式
  • HMM參數(shù)用來控制是否使用HMM模型

cut_for_search函數(shù)主要有兩個(gè)參數(shù):

  • 需要分詞的字符串
  • HMM參數(shù)用來控制是否使用HMM模型
# coding:utf-8
import jieba

sent = "抑郁癥已成為全球頭號致殘?jiān)獌戳堇保曰疾茁蔬h(yuǎn)高于男性抱既。三個(gè)年齡群體的人最容易患上抑郁癥,包括年輕人扁誓,孕婦及產(chǎn)后婦女防泵,老年人。由抑郁癥引發(fā)的冷漠情緒蝗敢、動(dòng)力不足等精神狀態(tài)捷泞,會導(dǎo)致人無法適應(yīng)日常生活。關(guān)注心理健康寿谴,別讓抑郁打倒你锁右!"

# 精確模式
seg_list = jieba.cut(sent)
print("精確模式:", '/ '.join(seg_list))

print('-'*100)

# 全模式
seg_list = jieba.cut(sent, cut_all=True)
print("全模式:", '/ '.join(seg_list))

print('-'*100)

# 搜索引擎模式
seg_list = jieba.cut_for_search(sent)
print("搜索引擎模式:", '/ '.join(seg_list))
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/4z/5wdk0_qx6pv3zbbsdj0s4ys40000gn/T/jieba.cache
Loading model cost 1.022 seconds.
Prefix dict has been built succesfully.


精確模式: 抑郁癥/ 已/ 成為/ 全球/ 頭號/ 致殘/ 元兇/ ,/ 女性/ 患病/ 幾率/ 遠(yuǎn)高于/ 男性/ 。/ 三個(gè)/ 年齡/ 群體/ 的/ 人/ 最/ 容易/ 患上/ 抑郁癥/ 骡湖,/ 包括/ 年輕人/ 贱纠,/ 孕婦/ 及/ 產(chǎn)后/ 婦女/ ,/ 老年人/ 响蕴。/ 由/ 抑郁癥/ 引發(fā)/ 的/ 冷漠/ 情緒/ 谆焊、/ 動(dòng)力/ 不足/ 等/ 精神狀態(tài)/ ,/ 會/ 導(dǎo)致/ 人/ 無法/ 適應(yīng)/ 日常生活/ 浦夷。/ 關(guān)注/ 心理健康/ 辖试,/ 別/ 讓/ 抑郁/ 打倒/ 你/ !
----------------------------------------------------------------------------------------------------
全模式: 抑郁/ 抑郁癥/ 已成/ 成為/ 全球/ 頭號/ 致殘/ 元兇/ / / 女性/ 患病/ 幾率/ 遠(yuǎn)高于/ 高于/ 男性/ / / 三個(gè)/ 年齡/ 群體/ 的/ 人/ 最/ 容易/ 患上/ 抑郁/ 抑郁癥/ / / 包括/ 年輕/ 年輕人/ / / 孕婦/ 及/ 產(chǎn)后/ 婦女/ / / 老年/ 老年人/ / / 由/ 抑郁/ 抑郁癥/ 引發(fā)/ 的/ 冷漠/ 情緒/ / / 動(dòng)力/ 不足/ 等/ 精神/ 精神狀態(tài)/ 狀態(tài)/ / / 會/ 導(dǎo)致/ 人/ 無法/ 適應(yīng)/ 日常/ 日常生活/ 常生/ 生活/ / / 關(guān)注/ 注心/ 心理/ 心理健康/ 健康/ / / 別/ 讓/ 抑郁/ 打倒/ 你/ / 
----------------------------------------------------------------------------------------------------
搜索引擎模式: 抑郁/ 抑郁癥/ 已/ 成為/ 全球/ 頭號/ 致殘/ 元兇/ 劈狐,/ 女性/ 患病/ 幾率/ 高于/ 遠(yuǎn)高于/ 男性/ 罐孝。/ 三個(gè)/ 年齡/ 群體/ 的/ 人/ 最/ 容易/ 患上/ 抑郁/ 抑郁癥/ ,/ 包括/ 年輕/ 年輕人/ 肥缔,/ 孕婦/ 及/ 產(chǎn)后/ 婦女/ 莲兢,/ 老年/ 老年人/ 。/ 由/ 抑郁/ 抑郁癥/ 引發(fā)/ 的/ 冷漠/ 情緒/ 续膳、/ 動(dòng)力/ 不足/ 等/ 精神/ 狀態(tài)/ 精神狀態(tài)/ 改艇,/ 會/ 導(dǎo)致/ 人/ 無法/ 適應(yīng)/ 日常/ 常生/ 生活/ 日常生活/ 。/ 關(guān)注/ 心理/ 健康/ 心理健康/ 坟岔,/ 別/ 讓/ 抑郁/ 打倒/ 你/ 谒兄!

需要注意的是,cutcut_for_search返回的都是generator社付,如果想直接返回列表承疲,需要使用lcutlcut_for_search

如果在一些特定場景中,需要使用一些特殊詞匯進(jìn)行分詞鸥咖,就需要加載自定義的分詞詞典:

jieba.load_userdict(filename)

其中燕鸽,用戶字典的格式為:

朝三暮四 3 i
朝秦暮楚 1
湯姆
公主墳

每一行表示一個(gè)單詞,每行最多由三部分組成

詞語 詞頻(可省略) 詞性(可省略)

如果只是少量詞匯啼辣,可以使用

add_word(word, freq=None, tag=None)

需要注意的是绵咱,如果沒有給出詞頻和詞性信息,在后續(xù)的處理中可能會造成一定的影響熙兔。

2. 關(guān)鍵詞提取

jieba提供了兩種關(guān)鍵詞提取算法,分別是TF-IDF以及TextRank

2.1 基于TF-IDF算法的關(guān)鍵詞提取

關(guān)于TF-IDF的原理艾恼,可以參考吳軍老師的《數(shù)學(xué)之美》住涉,里面給出了很詳細(xì)的說明。本文只介紹利用TF-IDF算法提取關(guān)鍵詞钠绍。

from jieba import analyse
analyse.extract_tags(sentence, topK = 20, withWeight = False, allowPOS=())

其中:

  • sentence 表示待提取的文本
  • topK 表示返回的TF-IDF最大的前n個(gè)詞語的數(shù)量
  • withWeight 表示是否返回權(quán)重值舆声,默認(rèn)為False
  • allowPOS 僅包括特定詞性的單詞,默認(rèn)值為空,即不篩選
from jieba import analyse
with open('./西游記.txt') as f:
    lines = f.read()
    words = analyse.extract_tags(lines, allowPOS=('n'))
    print(' '.join(words))
行者 八戒 師父 菩薩 妖精 長老 呆子 悟空 徒弟 國王 小妖 妖怪 鐵棒 不題 師徒 老者 妖魔 兄弟 妖王 意思

2.2 基于TextRank算法的關(guān)鍵詞提取

TextRank的用法與extract_tags的函數(shù)定義完全一致

from jieba import analyse
with open('./西游記.txt') as f:
    lines = f.read()
    words = analyse.textrank(lines, allowPOS=('n'))
    print(' '.join(words))
行者 師父 八戒 菩薩 妖精 國王 長老 意思 悟空 形容 呆子 徒弟 小妖 鐵棒 問道 兄弟 公主 弟子 道士 貧僧

3. 詞性標(biāo)注

詞性標(biāo)注主要是在分詞的基礎(chǔ)上媳握,對詞的詞性進(jìn)行判別碱屁,在jieba中可以使用如下方式進(jìn)行:

from jieba import posseg as psg
words = psg.cut(sent)
for word, tag in words:
    print(f"{word} {tag}")
抑郁癥 i
已 d
成為 v
全球 n
頭號 n
致殘 v
元兇 n
, x
女性 n
患病 n
幾率 n
遠(yuǎn)高于 nr
男性 n
蛾找。 x
三個(gè) m
年齡 n
群體 n
的 uj
人 n
最 d
容易 a
患上 n
抑郁癥 i
娩脾, x
包括 v
年輕人 n
, x
孕婦 n
及 c
產(chǎn)后 n
婦女 n
打毛, x
老年人 n
柿赊。 x
由 p
抑郁癥 i
引發(fā) v
的 uj
冷漠 n
情緒 n
、 x
動(dòng)力 n
不足 a
等 u
精神狀態(tài) n
幻枉, x
會 v
導(dǎo)致 v
人 n
無法 n
適應(yīng) v
日常生活 i
碰声。 x
關(guān)注 v
心理健康 n
, x
別 d
讓 v
抑郁 a
打倒 v
你 r
熬甫! x

其他

并行分詞

在jieba中采用將目標(biāo)文檔按行分割胰挑,對每一行采用一個(gè)Python進(jìn)程進(jìn)行分詞處理,然后將結(jié)果歸并到一起(有點(diǎn)類似于MapReduce)椿肩。據(jù)說目前尚不支持Windows瞻颂,僅支持Linux和MacOS。

啟動(dòng)并行分詞使用如下命令:

jieba.enable_parallel(n)
  • n 表示并行的進(jìn)程數(shù)量覆旱。

關(guān)閉并行分詞使用如下命令:

jieba.disable_parallel()
%%time
jieba.enable_parallel(6)
with open('./西游記.txt') as f:
    content = f.read()
    words = ' '.join(jieba.cut(content))
CPU times: user 274 ms, sys: 88.6 ms, total: 363 ms
Wall time: 1.66 s
%%time
jieba.disable_parallel()
with open('./西游記.txt') as f:
    content = f.read()
    words = ' '.join(jieba.cut(content))
CPU times: user 5.91 s, sys: 73.8 ms, total: 5.98 s
Wall time: 6.02 s

返回詞語在原文的起止位置

使用tokenize函數(shù)后蘸朋,會獲得一個(gè)詞語信息的元組,元組中的第一個(gè)元素是分詞得到的結(jié)果扣唱,第二個(gè)元素是詞的起始位置藕坯,第三個(gè)元素是詞的終止位置。

result = jieba.tokenize(sent)
for tk in result:
    print(f"word {tk[0]}\t\t start: {tk[1]} \t\t end:{tk[2]}")
word 抑郁癥         start: 0        end:3
word 已       start: 3        end:4
word 成為      start: 4        end:6
word 全球      start: 6        end:8
word 頭號      start: 8        end:10
word 致殘      start: 10       end:12
word 元兇      start: 12       end:14
word 噪沙,       start: 14       end:15
word 女性      start: 15       end:17
word 患病      start: 17       end:19
word 幾率      start: 19       end:21
word 遠(yuǎn)高于         start: 21       end:24
word 男性      start: 24       end:26
word 炼彪。       start: 26       end:27
word 三個(gè)      start: 27       end:29
word 年齡      start: 29       end:31
word 群體      start: 31       end:33
word 的       start: 33       end:34
word 人       start: 34       end:35
word 最       start: 35       end:36
word 容易      start: 36       end:38
word 患上      start: 38       end:40
word 抑郁癥         start: 40       end:43
word ,       start: 43       end:44
word 包括      start: 44       end:46
word 年輕人         start: 46       end:49
word 正歼,       start: 49       end:50
word 孕婦      start: 50       end:52
word 及       start: 52       end:53
word 產(chǎn)后      start: 53       end:55
word 婦女      start: 55       end:57
word 辐马,       start: 57       end:58
word 老年人         start: 58       end:61
word 。       start: 61       end:62
word 由       start: 62       end:63
word 抑郁癥         start: 63       end:66
word 引發(fā)      start: 66       end:68
word 的       start: 68       end:69
word 冷漠      start: 69       end:71
word 情緒      start: 71       end:73
word 局义、       start: 73       end:74
word 動(dòng)力      start: 74       end:76
word 不足      start: 76       end:78
word 等       start: 78       end:79
word 精神狀態(tài)        start: 79       end:83
word 喜爷,       start: 83       end:84
word 會       start: 84       end:85
word 導(dǎo)致      start: 85       end:87
word 人       start: 87       end:88
word 無法      start: 88       end:90
word 適應(yīng)      start: 90       end:92
word 日常生活        start: 92       end:96
word 。       start: 96       end:97
word 關(guān)注      start: 97       end:99
word 心理健康        start: 99       end:103
word 萄唇,       start: 103          end:104
word 別       start: 104          end:105
word 讓       start: 105          end:106
word 抑郁      start: 106          end:108
word 打倒      start: 108          end:110
word 你       start: 110          end:111
word 檩帐!       start: 111          end:112

其他分詞器

除了本文介紹的jieba分詞工具包以外,還有很多好用的中文分詞工具另萤,比如

  • NLPIR湃密,又名ICTCLAS(據(jù)說是要收費(fèi)的诅挑,但是我看文檔,并沒有提到收費(fèi))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泛源,一起剝皮案震驚了整個(gè)濱河市拔妥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌达箍,老刑警劉巖没龙,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幻梯,居然都是意外死亡兜畸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門碘梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咬摇,“玉大人,你說我怎么就攤上這事煞躬「嘏簦” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵恩沛,是天一觀的道長在扰。 經(jīng)常有香客問我,道長雷客,這世上最難降的妖魔是什么芒珠? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮搅裙,結(jié)果婚禮上皱卓,老公的妹妹穿的比我還像新娘。我一直安慰自己部逮,他們只是感情好娜汁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兄朋,像睡著了一般掐禁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颅和,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天傅事,我揣著相機(jī)與錄音,去河邊找鬼峡扩。 笑死蹭越,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的有额。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巍佑!你這毒婦竟也來了茴迁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萤衰,失蹤者是張志新(化名)和其女友劉穎堕义,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脆栋,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倦卖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椿争。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怕膛。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秦踪,靈堂內(nèi)的尸體忽然破棺而出褐捻,到底是詐尸還是另有隱情,我是刑警寧澤椅邓,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布柠逞,位于F島的核電站,受9級特大地震影響景馁,放射性物質(zhì)發(fā)生泄漏板壮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一合住、第九天 我趴在偏房一處隱蔽的房頂上張望绰精。 院中可真熱鬧,春花似錦聊疲、人聲如沸茬底。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阱表。三九已至,卻和暖如春贡珊,著一層夾襖步出監(jiān)牢的瞬間最爬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工门岔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爱致,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓寒随,卻偏偏與公主長得像糠悯,于是被迫代替她去往敵國和親帮坚。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • jieba分詞互艾,學(xué)習(xí)试和,為了全面了解該模塊,纫普,預(yù)設(shè)學(xué)習(xí)路線:官方文檔——優(yōu)秀博客文章——實(shí)踐學(xué)習(xí) 官方文檔部分 (文...
    竹林徒兒閱讀 4,129評論 1 12
  • 0 引言 ??jieba 是目前最好的 Python 中文分詞組件阅悍,它主要有以下 3 種特性: 支持 3 種分詞模...
    Gaius_Yao閱讀 117,679評論 3 82
  • 在接下來的分詞練習(xí)中將使用到四川大學(xué)公共管理學(xué)院的一篇新聞進(jìn)行練習(xí),文本如下: 為貫徹落實(shí)黨的十九大精神昨稼,不斷提升...
    nicokani閱讀 1,233評論 0 4
  • 參考:Python 中文分詞組件 jiabaPython中文分詞 jieba 十五分鐘入門與進(jìn)階jieba完整文檔...
    領(lǐng)悟悟悟閱讀 4,301評論 1 1
  • 昨天是五一假期后第一天上班节视,下午上班時(shí)間改到了三點(diǎn),也就是說假栓,中午可以多休息一會兒了寻行。我準(zhǔn)備中午寫一...
    海藍(lán)26閱讀 649評論 0 0