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利用datetime模块计算时间差
Aug 04 Python
Python上下文管理器和with块详解
Sep 09 Python
Python hashlib模块用法实例分析
Jun 12 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
PyTorch中topk函数的用法详解
Jan 02 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
什么是python类属性
Jun 10 Python
windows系统Tensorflow2.x简单安装记录(图文)
Jan 18 Python
python tkinter实现定时关机
Apr 21 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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php smarty的预保留变量总结
2008/12/04 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript的面向对象(二)
2006/11/09 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
原生js无缝轮播插件使用详解
2020/03/09 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python爬取youtube视频的示例代码
2021/03/03 Python
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
优秀女职工事迹材料
2014/02/06 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
捐资助学倡议书
2014/04/15 职场文书
听课评语大全
2014/04/30 职场文书
学生干部培训方案
2014/06/12 职场文书
干部个人对照检查材料
2014/08/25 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
一篇文章带你复习java知识点
2021/06/28 Java/Android