Python基于jieba库进行简单分词及词云功能实现方法


Posted in Python onJune 16, 2018

本文实例讲述了Python基于jieba库进行简单分词及词云功能实现方法。分享给大家供大家参考,具体如下:

目标:

1.导入一个文本文件
2.使用jieba对文本进行分词
3.使用wordcloud包绘制词云

环境:

Python 3.6.0 |Anaconda 4.3.1 (64-bit)

工具:

jupyter notebook

从网上下载了一篇小说《老九门》,以下对这篇小说进行分词,并绘制词云图。

分词使用最流行的分词包jieba,参考:https://github.com/fxsjy/jieba

或点击此处本站下载jieba库

词云使用wordcloud包,参考:https://github.com/amueller/word_cloud

或点击此处本站下载wordcloud库

这两个包都不是anaconda自带的,需要按官网的步骤安装。

import wordcloud as wc
import jieba
import matplotlib.pyplot as plt
from scipy.misc import imread
%matplotlib inline
plt.rc('figure', figsize=(15, 15))

首先读取文件,保存到一个字符串对象中。

all_text = open(file='老九门.txt', encoding='utf-8').read()

查看一下字符串的内容,发现其中有很多多余的字符:'\n'、'\u3000'。

all_text

'\ufeff《盗墓笔记》中,一段与二月红有关的故事。\n《老九门》壹:二月红①\n丝帐许久没有换过了。\n\u3000\u3000她半夜入不了眠,睁开眼睛,便看到床边垂下的帐面,在月光下看着有一死暗淡。原来可是丝丝的带着光亮,好像最白的银拉出来的丝一般。\n\u3000\u3000果然再好的东西,也总是由好往坏了去。\n\u3000\u3000以往一过立秋,... ...<以下省略>

在分词之前先把这些多余字符剔除掉。

all_text = all_text.replace('\n', '' )
all_text = all_text.replace('\u3000', '')

下面先尝试做一次分词,把所有分词用空格分开,输出看一下分词的结果:

seg_list = jieba.cut(all_text, cut_all=False)
words =' '
for seg in seg_list:
  words = words + seg + ' '
print(words)

  《 盗墓 笔记 》 中 , 一段 与 二月 红 有关 的 故事 。 《 老 九门 》 壹 : 二月 红 ① 丝帐 许久 没有 换过 了 。 她 半夜 入 不了 眠 , 睁开眼睛 , 便 看到 床边 垂下 的 帐面 , 在 月光 下 看着 有 一死 暗淡 。 原来 可是 丝丝 的 带 着 光亮 , 好像 最白 的 银拉 出来 的 丝 一般 。 果然 再 好 的 东西 , 也 总是 由 好 往坏 了 去 。 以往 一过 立秋 , 她 就 会 亲自 拆 下 这块 帐头 , 亲自 去 漂洗 , 她 知道 这 东西 的 脾气 , 得 小心 伺候 着 , 一寸 一寸 地过 水 。 如今 不让 她 下床 , 这 东西 没 人 伺候 了 , 倒 也 显得 越来越 不值 当 被 这么 细心 对待 起来 。 也许 , 下 一个 立秋 的 时候 , 才 有人 敢动 这个 东西 , 但 那个 人 , 必然 不是 自己 了 。 中午 大夫 和 他 说 的 那些 话 , 虽然 是 在 屋外 , 但是 她 还是 听到 了 几分 , 自己 的 病 , 不 知道 还有 多少 日子 可熬 。 她 舒 了 口气 , 胸中 的 那丝 痛楚 似乎 好 了 一些 。 多少 日
... ...<以下省略>

从分词结果里可以发现,有一些固定词语,例如“盗墓笔记”、“老九门”、“二月红”、“张大佛爷”、“齐铁嘴”等书名、人名被分开了。在这篇小说的环境下,这些才成为固定词语,而默认的分词策略根据通常的认识来分词的。

针对这个情况,jieba有一个“用户词典”的机制,把用户认为应该成为整词的,放到词典里,在分词的时遇到它们,就会当作一个整体。

在目录下新建一个文本文件dick.txt,输入以下词语:

老九门
二月红
盗墓笔记
张大佛爷
解九爷
解九
狗五

以下为jieba引入这个词典文件,再做一次分词:

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)

  《 盗墓笔记 》 中 , 一段 与 二月红 有关 的 故事 。 《 老九门 》 壹 : 二月红 ① 丝帐 许久 没有 换过 了 。 她 半夜 入 不了 眠 , 睁开眼睛 , 便 看到 床边 垂下 的 帐面 , 在 月光 下 看着 有 一死 暗淡 。 原来 可是 丝丝 的 带 着 光亮 , 好像 最白 的 银拉 出来 的 丝 一般 。 果然 再 好 的 东西 , 也 总是 由 好 往坏 了 去 。 以往 一过 立秋 , 她 就 会 亲自 拆 下 这块 帐头 , 亲自 去 漂洗 , 她 知道 这 东西 的 脾气 , 得 小心 伺候 着 , 一寸 一寸 地过 水 。 如今 不让 她 下床 , 这 东西 没 人 伺候 了 , 倒 也 显得 越来越 不值 当 被 这么 细心 对待 起来 。 也许 , 下 一个 立秋 的 时候 , 才 有人 敢动 这个 东西 , 但 那个 人 , 必然 不是 自己 了 。 中午 大夫 和 他 说 的 那些 话 , 虽然 是 在 屋外 , 但是 她 还是 听到 了 几分 , 自己 的 病 , 不 知道 还有 多少 日子 可熬 。 她 舒 了 口气 , 胸中 的 那丝 痛楚 似乎 好 了 一些 。 多少 日子 了 ?
... ...<以下省略>

从这个结果来看,就不会再把人名、书名分开了。

以下开始制作词云。

制作词云,使用的是wordcloud包,由两个参数需要特别注意,一个是字体,一个是背景图片。字体好理解,就不解释了。背景图片,是词云显示的背景形状。这里选用了一个心形图案。

Python基于jieba库进行简单分词及词云功能实现方法

以下是词云制作过程:

# 引入字体
font=r"C:\WINDOWS\Fonts\simhei.ttf"
#读取背景图片,生成矩阵
color_mask = imread("love.jpg")
# 生成词云对象,设置参数
cloud = wc.WordCloud( font_path=font,#设置字体
           background_color="black", #背景颜色
           max_words=2000,# 词云显示的最大词数
           mask=color_mask,#设置背景图片
           max_font_size=100, #字体最大值
           random_state=42)
# 绘制词云图
mywc = cloud.generate(all_word)
plt.imshow(mywc)

<matplotlib.image.AxesImage at 0x1ecebf5e588>

Python基于jieba库进行简单分词及词云功能实现方法

# 把词云图保存到磁盘文件中
mywc.to_file('老九门wordcloud.png')

<wordcloud.wordcloud.WordCloud at 0x1ece4b9bc88>

以上就是使用python进行分词,并绘制词云图的简单操作。对于jieba和wordcloud的更高级的使用方法,还需要进一步研究和学习。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python显示天气预报
Mar 02 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
python_tkinter弹出对话框创建
Mar 20 Python
Python实现简单的文本相似度分析操作详解
Jun 16 #Python
Django跨域请求问题的解决方法示例
Jun 16 #Python
Python for循环生成列表的实例
Jun 15 #Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 #Python
Python对象属性自动更新操作示例
Jun 15 #Python
numpy使用fromstring创建矩阵的实例
Jun 15 #Python
详解Python 协程的详细用法使用和例子
Jun 15 #Python
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
一个PHP的QRcode类与大家分享
2011/11/13 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
使用Python对Csv文件操作实例代码
2017/05/12 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
Python之修改图片像素值的方法
2019/07/03 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
MySQL面试题
2014/01/12 面试题
会计个人实习计划书
2014/08/15 职场文书
绿色小区申报材料
2014/08/22 职场文书
2014年物流工作总结
2014/11/25 职场文书
大学生求职意向书
2015/05/11 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
Python快速实现一键抠图功能的全过程
2021/06/29 Python
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript