佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > python jieba庫(kù)的基本使用

python jieba庫(kù)的基本使用

熱門標(biāo)簽:企業(yè)做大做強(qiáng) 語(yǔ)音系統(tǒng) 呼叫中心市場(chǎng)需求 客戶服務(wù) 電話運(yùn)營(yíng)中心 Win7旗艦版 百度AI接口 硅谷的囚徒呼叫中心

一、jieba庫(kù)概述

jieba是優(yōu)秀的中文分詞第三方庫(kù)

  • 中文文本需要通過(guò)分詞獲得單個(gè)的詞語(yǔ)
  • jieba是優(yōu)秀的中文分詞第三方庫(kù),需要額外安裝
  • jieba庫(kù)提供三種分詞模式,最簡(jiǎn)單只需要掌握一個(gè)函數(shù)

二、jieba庫(kù)安裝

pip install jieba

三、jieba分詞的原理

jieba分詞依靠中文詞庫(kù)

  • 利用一個(gè)中文詞庫(kù),確定漢字之間的關(guān)聯(lián)概率
  • 漢字間概率大的組成詞組,形成分詞結(jié)果

四、jieba分詞的3種模式

  • 精確模式:把文本精確地切分開,不存在冗余單詞(最常用)
  • 全模式:把文本中所有可能的詞語(yǔ)都掃描出來(lái),有冗余
  • 搜索引擎模式:在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分

五、jieba庫(kù)常用函數(shù)

函數(shù) 描述
jieba.lcut(s) 精確模式,返回一個(gè)列表類型的分詞結(jié)果
jieba.lcut(s,cut_all=True) 全模式,返回一個(gè)列表類型的分詞結(jié)果,存在冗余
jieba.lcut_for_search(s) 搜索引擎模式,返回一個(gè)列表類型的分詞結(jié)果,存在冗余
jieba.lcut(s) 精確模式,返回一個(gè)列表類型的分詞結(jié)果
jieba.add_word(s) 向分詞詞典增加新詞w

例子:

>>> jieba.lcut("中國(guó)是一個(gè)偉大的國(guó)家")
['中國(guó)', '是', '一個(gè)', '偉大', '的', '國(guó)家']

>>> jieba.lcut("中國(guó)是一個(gè)偉大的國(guó)家", cut_all=True)
['中國(guó)', '國(guó)是', '一個(gè)', '偉大', '的', '國(guó)家']

>>> jieba.lcut_for_search("中華人民共和國(guó)是偉大的")
['中華', '華人', '人民', '共和', '共和國(guó)', '中華人民共和國(guó)', '是', '偉大', '的']

六、文本詞頻示例

問(wèn)題分析

  • 英文文本: Hamlet 分析詞頻

https://python123.io/resources/pye/hamlet.txt

  • 中文文本: 《三國(guó)演義》 分析人物

https://python123.io/resources/pye/threekingdoms.txt

代碼如下:

def getText():
 # 打開 hamlet.txt 這個(gè)文件
 txt = open("hamlet.txt", "r").read()
 # 避免大小寫對(duì)詞頻統(tǒng)計(jì)的干擾,將所有單詞轉(zhuǎn)換為小寫
 txt = txt.lower()
 # 將文中出現(xiàn)的所有特殊字符替換為空格
 for ch in '|"#$%^*()_+-=\\`~{}[];:>?/':
 txt = txt.replace(ch, " ")
 # 返回一個(gè)所以后單詞都是小寫的,單詞間以空格間隔的文本
 return txt

hamletTxt = getText()
# split() 默認(rèn)使用空格作為分隔符
words = hamletTxt.split()
counts = {}
for word in words:
 counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
 word, count = items[i]
 print("{0:10}{1:>5}".format(word,count))

上面代碼中的

items.sort(key=lambda x:x[1], reverse=True)

是根據(jù)單詞出現(xiàn)的次數(shù)進(jìn)行排序,其中使用了 lambda 函數(shù)。更多解釋請(qǐng)看:
https://www.runoob.com/python/att-list-sort.html

下面使用 jieba 庫(kù)來(lái)統(tǒng)計(jì)《三國(guó)演義》中任務(wù)出場(chǎng)的次數(shù):

import jieba
txt = open("threekingdoms.txt","r",encoding="utf-8").read()
words = jieba.lcut(txt)
counts = {}
for word in words:
 if len(word) == 1:
 continue
 else:
 counts[word] = counts.get(word, 0) + 1

items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(15):
 word, count = items[i]
 print("{0:10}{1:>5}".format(word,count))

運(yùn)行結(jié)果:

曹操  953
孔明  836
將軍  772
卻說(shuō)  656
玄德  585
關(guān)公  510
丞相  491
二人  469
不可  440
荊州  425
玄德曰  390
孔明曰  390
不能  384
如此  378
張飛  358

我們可以看到得出的結(jié)果與我們想象的有些差異,比如

  • “卻說(shuō)”、“二人”等與人名無(wú)關(guān)
  • “諸葛亮”、“孔明”都是同一個(gè)人
  • “孔明”和“孔明曰”分詞不符合我們的需求

所以我們需要對(duì)上面代碼進(jìn)行優(yōu)化,在詞頻統(tǒng)計(jì)的基礎(chǔ)上,面向問(wèn)題改造我們的程序。

下面是《三國(guó)演義》人物數(shù)量統(tǒng)計(jì)代碼的升級(jí)版,升級(jí)版中對(duì)于某些確定不是人名的詞,即使做了詞頻統(tǒng)計(jì),也要將它刪除掉。使用寄一個(gè)集合excludes來(lái)接收一些確定不是人名但是又排序比較靠前的單詞列進(jìn)去。

import jieba
txt = open("threekingdoms.txt","r",encoding="utf-8").read()
excludes = {"將軍","卻說(shuō)","荊州","二人","不可","不能","如此"}
words = jieba.lcut(txt)
counts = {}
for word in words:
 if len(word) == 1:
 continue
 elif word == "諸葛亮" or word == "孔明曰":
 rword == "孔明"
 elif word == "關(guān)公" or word == "云長(zhǎng)":
 rword == "關(guān)羽"
 elif word == "玄德" or word == "玄德曰":
 rword == "劉備"
 elif word == "孟德" or word == "丞相":
 rword == "曹操"
 else:
 rword = word
 counts[rword] = counts.get(rword, 0) + 1

items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(15):
 word, count = items[i]
 print("{0:10}{1:>5}".format(word,count))

運(yùn)行結(jié)果:

曹操  963
孔明  847
張飛  366
商議  359
如何  352
主公  340
軍士  320
呂布  303
左右  298
軍馬  297
趙云  283
劉備  282
引兵  279
次日  278
大喜  274

可以看出還是有像“商議”、“如何”等不是人物的詞出現(xiàn)在統(tǒng)計(jì)結(jié)果,我們將這些詞加入到 excludes 中,多次運(yùn)行程序后最后得到《三國(guó)演義》任務(wù)出場(chǎng)順序前20:

七、文本詞頻統(tǒng)計(jì)問(wèn)題舉一反三

應(yīng)用問(wèn)題擴(kuò)展

  • 《紅樓夢(mèng)》、《西游記》、《水滸傳》...等名著都可以統(tǒng)計(jì)它的任務(wù)出場(chǎng)次數(shù)
  • 政府工作報(bào)告、科研論文、新聞報(bào)道...中出現(xiàn)的大量的詞頻進(jìn)行分析,進(jìn)而找到每篇文章的重點(diǎn)內(nèi)容
  • 進(jìn)一步,對(duì)文本的詞語(yǔ)或詞匯繪制成詞云,使其展示的效果更加直觀

以上內(nèi)容資料均來(lái)源于中國(guó)大學(xué)MOOC網(wǎng)-北京理工大學(xué)Python語(yǔ)言程序設(shè)計(jì)課程
課程地址:https://www.icourse163.org/course/BIT-268001

以上就是python jieba庫(kù)的基本使用的詳細(xì)內(nèi)容,更多關(guān)于python jieba庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python jieba庫(kù)分詞模式實(shí)例用法
  • Python jieba庫(kù)用法及實(shí)例解析
  • Python基于jieba庫(kù)進(jìn)行簡(jiǎn)單分詞及詞云功能實(shí)現(xiàn)方法
  • Python中jieba庫(kù)的使用方法

標(biāo)簽:喀什 安康 山西 長(zhǎng)沙 濟(jì)南 山西 海南 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python jieba庫(kù)的基本使用》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    隆尧县| 霍林郭勒市| 灵石县| 谢通门县| 新和县| 宁陵县| 彭水| 丰城市| 象州县| 阿图什市| 新建县| 黄梅县| 宣恩县| 定陶县| 南昌市| 桦川县| 鹤峰县| 综艺| 亚东县| 栾城县| 晋宁县| 冕宁县| 上林县| 阿合奇县| 正宁县| 池州市| 新津县| 家居| 通州市| 克拉玛依市| 若尔盖县| 许昌县| 淮滨县| 南郑县| 隆安县| 蛟河市| 自贡市| 丰城市| 淅川县| 水城县| 望江县|