Python基于jieba庫(kù)進(jìn)行簡(jiǎn)單分詞及詞云功能實(shí)現(xiàn)方法
本文實(shí)例講述了Python基于jieba庫(kù)進(jìn)行簡(jiǎn)單分詞及詞云功能實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
目標(biāo):
1.導(dǎo)入一個(gè)文本文件
2.使用jieba對(duì)文本進(jìn)行分詞
3.使用wordcloud包繪制詞云
環(huán)境:
Python 3.6.0 |Anaconda 4.3.1 (64-bit)
工具:
jupyter notebook
從網(wǎng)上下載了一篇小說《老九門》,以下對(duì)這篇小說進(jìn)行分詞,并繪制詞云圖。
分詞使用最流行的分詞包jieba,參考:https://github.com/fxsjy/jieba
或點(diǎn)擊此處本站下載jieba庫(kù)。
詞云使用wordcloud包,參考:https://github.com/amueller/word_cloud
或點(diǎn)擊此處本站下載wordcloud庫(kù)。
這兩個(gè)包都不是anaconda自帶的,需要按官網(wǎng)的步驟安裝。
import wordcloud as wc
import jieba
import matplotlib.pyplot as plt
from scipy.misc import imread
%matplotlib inline
plt.rc('figure', figsize=(15, 15))
首先讀取文件,保存到一個(gè)字符串對(duì)象中。
all_text = open(file='老九門.txt', encoding='utf-8').read()
查看一下字符串的內(nèi)容,發(fā)現(xiàn)其中有很多多余的字符:'\n'、'\u3000'。
all_text
'\ufeff《盜墓筆記》中,一段與二月紅有關(guān)的故事。\n《老九門》壹:二月紅①\n絲帳許久沒有換過了。\n\u3000\u3000她半夜入不了眠,睜開眼睛,便看到床邊垂下的帳面,在月光下看著有一死暗淡。原來可是絲絲的帶著光亮,好像最白的銀拉出來的絲一般。\n\u3000\u3000果然再好的東西,也總是由好往壞了去。\n\u3000\u3000以往一過立秋,... ...<以下省略>
在分詞之前先把這些多余字符剔除掉。
all_text = all_text.replace('\n', '' )
all_text = all_text.replace('\u3000', '')
下面先嘗試做一次分詞,把所有分詞用空格分開,輸出看一下分詞的結(jié)果:
seg_list = jieba.cut(all_text, cut_all=False) words =' ' for seg in seg_list: words = words + seg + ' ' print(words)
《 盜墓 筆記 》 中 , 一段 與 二月 紅 有關(guān) 的 故事 。 《 老 九門 》 壹 : 二月 紅 ① 絲帳 許久 沒有 換過 了 。 她 半夜 入 不了 眠 , 睜開眼睛 , 便 看到 床邊 垂下 的 帳面 , 在 月光 下 看著 有 一死 暗淡 。 原來 可是 絲絲 的 帶 著 光亮 , 好像 最白 的 銀拉 出來 的 絲 一般 。 果然 再 好 的 東西 , 也 總是 由 好 往壞 了 去 。 以往 一過 立秋 , 她 就 會(huì) 親自 拆 下 這塊 帳頭 , 親自 去 漂洗 , 她 知道 這 東西 的 脾氣 , 得 小心 伺候 著 , 一寸 一寸 地過 水 。 如今 不讓 她 下床 , 這 東西 沒 人 伺候 了 , 倒 也 顯得 越來越 不值 當(dāng) 被 這么 細(xì)心 對(duì)待 起來 。 也許 , 下 一個(gè) 立秋 的 時(shí)候 , 才 有人 敢動(dòng) 這個(gè) 東西 , 但 那個(gè) 人 , 必然 不是 自己 了 。 中午 大夫 和 他 說 的 那些 話 , 雖然 是 在 屋外 , 但是 她 還是 聽到 了 幾分 , 自己 的 病 , 不 知道 還有 多少 日子 可熬 。 她 舒 了 口氣 , 胸中 的 那絲 痛楚 似乎 好 了 一些 。 多少 日
... ...<以下省略>
從分詞結(jié)果里可以發(fā)現(xiàn),有一些固定詞語,例如“盜墓筆記”、“老九門”、“二月紅”、“張大佛爺”、“齊鐵嘴”等書名、人名被分開了。在這篇小說的環(huán)境下,這些才成為固定詞語,而默認(rèn)的分詞策略根據(jù)通常的認(rèn)識(shí)來分詞的。
針對(duì)這個(gè)情況,jieba有一個(gè)“用戶詞典”的機(jī)制,把用戶認(rèn)為應(yīng)該成為整詞的,放到詞典里,在分詞的時(shí)遇到它們,就會(huì)當(dāng)作一個(gè)整體。
在目錄下新建一個(gè)文本文件dick.txt,輸入以下詞語:
老九門
二月紅
盜墓筆記
張大佛爺
解九爺
解九
狗五
以下為jieba引入這個(gè)詞典文件,再做一次分詞:
jieba.load_userdict('dict.txt')
all_seg = jieba.cut(all_text, cut_all=False)
all_word =' '
for seg in all_seg:
all_word = all_word + seg + ' '
print(all_word)
《 盜墓筆記 》 中 , 一段 與 二月紅 有關(guān) 的 故事 。 《 老九門 》 壹 : 二月紅 ① 絲帳 許久 沒有 換過 了 。 她 半夜 入 不了 眠 , 睜開眼睛 , 便 看到 床邊 垂下 的 帳面 , 在 月光 下 看著 有 一死 暗淡 。 原來 可是 絲絲 的 帶 著 光亮 , 好像 最白 的 銀拉 出來 的 絲 一般 。 果然 再 好 的 東西 , 也 總是 由 好 往壞 了 去 。 以往 一過 立秋 , 她 就 會(huì) 親自 拆 下 這塊 帳頭 , 親自 去 漂洗 , 她 知道 這 東西 的 脾氣 , 得 小心 伺候 著 , 一寸 一寸 地過 水 。 如今 不讓 她 下床 , 這 東西 沒 人 伺候 了 , 倒 也 顯得 越來越 不值 當(dāng) 被 這么 細(xì)心 對(duì)待 起來 。 也許 , 下 一個(gè) 立秋 的 時(shí)候 , 才 有人 敢動(dòng) 這個(gè) 東西 , 但 那個(gè) 人 , 必然 不是 自己 了 。 中午 大夫 和 他 說 的 那些 話 , 雖然 是 在 屋外 , 但是 她 還是 聽到 了 幾分 , 自己 的 病 , 不 知道 還有 多少 日子 可熬 。 她 舒 了 口氣 , 胸中 的 那絲 痛楚 似乎 好 了 一些 。 多少 日子 了 ?
... ...<以下省略>
從這個(gè)結(jié)果來看,就不會(huì)再把人名、書名分開了。
以下開始制作詞云。
制作詞云,使用的是wordcloud包,由兩個(gè)參數(shù)需要特別注意,一個(gè)是字體,一個(gè)是背景圖片。字體好理解,就不解釋了。背景圖片,是詞云顯示的背景形狀。這里選用了一個(gè)心形圖案。

以下是詞云制作過程:
# 引入字體
font=r"C:\WINDOWS\Fonts\simhei.ttf"
#讀取背景圖片,生成矩陣
color_mask = imread("love.jpg")
# 生成詞云對(duì)象,設(shè)置參數(shù)
cloud = wc.WordCloud( font_path=font,#設(shè)置字體
background_color="black", #背景顏色
max_words=2000,# 詞云顯示的最大詞數(shù)
mask=color_mask,#設(shè)置背景圖片
max_font_size=100, #字體最大值
random_state=42)
# 繪制詞云圖
mywc = cloud.generate(all_word)
plt.imshow(mywc)
<matplotlib.image.AxesImage at 0x1ecebf5e588>

# 把詞云圖保存到磁盤文件中
mywc.to_file('老九門wordcloud.png')
<wordcloud.wordcloud.WordCloud at 0x1ece4b9bc88>
以上就是使用python進(jìn)行分詞,并繪制詞云圖的簡(jiǎn)單操作。對(duì)于jieba和wordcloud的更高級(jí)的使用方法,還需要進(jìn)一步研究和學(xué)習(xí)。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用Python實(shí)現(xiàn)從各個(gè)子文件夾中復(fù)制指定文件的方法
今天小編就為大家分享一篇使用Python實(shí)現(xiàn)從各個(gè)子文件夾中復(fù)制指定文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
對(duì)Python協(xié)程之異步同步的區(qū)別詳解
今天小編就為大家分享一篇對(duì)Python協(xié)程之異步同步的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊
這篇文章主要為大家介紹了python實(shí)現(xiàn)emoji對(duì)齊特殊字符對(duì)齊高級(jí)文本對(duì)齊方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Python Metaclass原理與實(shí)現(xiàn)過程詳細(xì)講解
MetaClass元類,本質(zhì)也是一個(gè)類,但和普通類的用法不同,它可以對(duì)類內(nèi)部的定義(包括類屬性和類方法)進(jìn)行動(dòng)態(tài)的修改??梢赃@么說,使用元類的主要目的就是為了實(shí)現(xiàn)在創(chuàng)建類時(shí),能夠動(dòng)態(tài)地改變類中定義的屬性或者方法2022-11-11
Python+Pygame實(shí)現(xiàn)之走四棋兒游戲的實(shí)現(xiàn)
大家以前應(yīng)該都聽說過一個(gè)游戲:叫做走四棋兒。直接在家里的水泥地上用燒完的炭火灰畫出幾條線,擺上幾顆石頭子即可。當(dāng)時(shí)的火爆程度可謂是達(dá)到了一個(gè)新的高度。本文將利用Pygame實(shí)現(xiàn)這一游戲,需要的可以參考一下2022-07-07
社區(qū)版pycharm創(chuàng)建django項(xiàng)目的方法(pycharm的newproject左側(cè)沒有項(xiàng)目選項(xiàng))
pycharm的newproject左側(cè)沒有出現(xiàn)項(xiàng)目選項(xiàng)的情況下,創(chuàng)建Django項(xiàng)目的解決方法./社區(qū)版pycharm創(chuàng)建django項(xiàng)目的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-09-09
Python實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例
下面小編就為大家?guī)硪黄狿ython實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12

