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 27 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
对pandas replace函数的使用方法小结
May 18 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
Python 旋转打印各种矩形的方法
Jul 09 Python
flask 实现token机制的示例代码
Nov 07 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
Django操作cookie的实现
May 26 Python
bat批处理之字符串操作的实现
Mar 16 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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
php实现图片缩略图的方法
2016/03/29 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
js charAt的使用示例
2014/02/18 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
Node.js学习入门
2017/01/03 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
Python将xml和xsl转换为html的方法
2015/03/10 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python Flask-web表单使用详解
2017/11/18 Python
python中Apriori算法实现讲解
2017/12/10 Python
简单实现python画圆功能
2018/01/25 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
利用python修改json文件的value方法
2018/12/31 Python
Django的Modelforms用法简介
2019/07/27 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
有针对性的求职自荐信
2013/11/14 职场文书
医学类导师推荐信范文
2013/11/19 职场文书
绿色环保演讲稿
2014/05/10 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
大学生求职意向书
2015/05/11 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android