Python :文本数据挖掘并绘制词云图

  • 前言
  • 材料准备
  • 导包
  • 对文章预处理
  • 分词
  • 去停用词
  • 词频统计
  • 制作词云图
  • 结果展示及主函数

前言

绘制词云图的目的是方便快捷有效的掌握一篇文中的中心概要或了解大致方向与内容。
本文我将以《摆渡人》这本书为例,进行对文本中文字的统计,并绘制词云图。
另: 本人采用python编写,本文中我是用的是pycharm进行的编译过程,配置的Anaconda环境。因为本文中涉及很多的包,单独下载过于麻烦,所以建议下载anaconda,使用anaconda中的Spyder或者Jupyter均可,使用软件不同可能在某些输出或编写上有所不同,但是不影响大致方法过程的套用。

*我是用的方法是分函数写每一个过程,这样思路也很清晰,最后主函数里在分别调用就行,读者在观看时我写的每一步都只是对应的我编写的函数,主函数内容在最后展示。 *

材料准备

《摆渡人》原文txt
《摆渡人》词库txt
停用词txt
词云图背景图片png(后续用于美化词云图)

导包

import pandas as pd
import jieba
import nltk
import jieba.analyse as ana
import wordcloud
import matplotlib.pyplot as plt
from imageio import imread

上面有一些包,例如:jieba,是anaconda环境也未带的包,有的你需要单独下载,建议参考CSDN的一些教程。
(不要惊慌,这确实是多多少少在处理中都会用到的包,你没看错,就是这么多)

对文章预处理

这个处理看情况,如果你涉及到对文章每个章节的定位到话,可以调用,如果只是简单的分词处理就OK的话,这一步便可以省略。
我找的《摆渡人》原文txt文档打开大概是这样的:

每一章开头就会顶行开始,这样也方便我们定位。

#加入章节标识
def m_head(tmpstr):return tmpstr[:1]  #截取每一行开头的第一个字符
def m_mid(tmpstr):    #为了定位章节而设立的return tmpstr.find("章")#章节判断
def j_chap(raw):chapnum = 0  #获取总的章节数for i in range(len(raw)):if raw['head'][i] == "第" and raw['mid'][i] > 0 and raw['len'][i] < 8:   #定位寻找“第~~章”开头的地方chapnum += 1if raw['txt'][i] =="致谢":   #文末有致谢,不算入章节总数chapnum = -1raw.loc[i, 'chap'] = chapnum  #del raw['head']del raw['mid']del raw['len']

分词

这一步导入《摆渡人》词库,直接使用jieba()函数,分词即可。
另:导入词库的目的是为了对文章分词更准确,不同文章里设定的词有所不一样,例如文章里特定的任务名称,这些都是jieba库它自身所不能识别到的。

def separate_words(raw):dict = '《摆渡人》原文.txt路径'jieba.load_userdict(dict)  #读入文件for i in range(len(raw)):  #分行分词' '.join(jieba.cut(raw['txt'][i]))

去停用词

一些常用的语气词、标点符号,完全可以除去,更加优化最后词云图重点词汇的展示。

#去除停用词
def delete_words(raw):ana.set_stop_words('停用词.txt路径')word_list = []for i in range(len(raw)):list = ana.extract_tags(raw['txt'][i])  word_list.extend(list)   #,topK=300)#print(word_list)return word_list

词频统计

这一步最好让统计好的词频以字典或字符串的形式输出,这样都是为了后面生成词云图做准备。不过,本人这里输出的word_list是DataFrame型,在下一步操作时,本人会将此转化。

#词频统计
def tj_words(word_list):df =pd.DataFrame(word_list,columns=['word'])result = df.groupby(['word']).size()frequentlist = result.sort_values(ascending=False)   #降序排列

制作词云图

这一步我添加了对词云图的美化

#制作词云图
def word_cloud(word_list):fdict = nltk.FreqDist(word_list)  #转化格式为字典类型image = imread('背景图片路径')  #导入背景图片#imagecolors = wordcloud.ImageColorGenerator(np.array(image))#读取背景图片是颜色,本人选的背景图片背景色不好看,所以没有使用这一步,有需要的可以使用cloudobj = wordcloud.WordCloud(font_path="simkai.ttf", width=2000, height=2000, mode="RGBA", background_color=None,mask=image)cloudobj.generate_from_frequencies(fdict) #生成词云图#cloudobj.recolor(color_func=imagecolors)#将背景图颜色设置成词云图颜色plt.imshow(cloudobj)plt.axis("off")plt.show()cloudobj.to_file("词云图" + ".png") #储存生成的图片

结果展示及主函数

主函数内没有太复杂的操作,主要就是调用函数,实现函数之间的连接。

if __name__ == '__main__':raw = pd.read_csv("E://小司同学的文件//text_mining//摆渡人//摆渡人原文.txt", names=['txt'], sep='aaa', encoding="GBK") #读入原文文件 print(len(raw))  #获取本文总行数raw['head'] = raw.txt.apply(m_head)raw['mid'] = raw.txt.apply(m_mid)raw['len'] = raw.txt.apply(len)j_chap(raw)separate_words(raw)word_list = delete_words(raw)tj_words(word_list)word_cloud(word_list)

Python :文本数据挖掘并绘制词云图相关推荐

  1. [python] 基于wordcloud库绘制词云图

    词云Wordcloud是文本数据的一种可视化表示方式.它通过设置不同的字体大小或颜色来表现每个术语的重要性.词云在社交媒体中被广泛使用,因为它能够让读者快速感知最突出的术语.然而,词云的输出结果没有统 ...

  2. 利用python进行tf-idf算法绘制词云图_利用python实现通过TF-IDF和BM25提取文章关键词...

    使用TF-IDF和BM25提取文章关键词 评估方法: 人工从文章中提取1-5个关键词,和机器提取的关键词做比较 召回 = 机器提词∩人工提词 / 人工提词 准确 = 机器提词∩人工提词 / 机器提词 ...

  3. echarts词云图形状_用Python 3.8绘制词云图就这么20行代码

    艾莎为了寻找父母遇难的真相,以及自己魔力的来源,她与安娜.克斯托夫.驯鹿斯特与雪宝一行远走阿伦戴尔王国,去北方寻找这两个问题的答案,途中发生了一些冒险故事-- 电影<冰雪奇缘2>无论是美轮 ...

  4. 实战|Python轻松实现绘制词云图(附详细源码)

    项目背景虽然现在已经有很多现成的制作词云图的工具了,但一般存在以下几个问题:问题一:工具太多,眼花缭乱,质量参差不齐,选择困难症: 问题二:大多词云工具或多或少有一些限制,自定义的空间有限:问题三:有 ...

  5. python绘制词云图转换图_(数据科学学习手札71)利用Python绘制词云图

    1 简介 词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词: 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

  6. Python爬取《哆啦A梦-伴我同行2》影评,手把手带你绘制词云图!

    本文简介 <哆啦A梦:伴我同行2>是纪念<哆啦A梦>50周年的作品之一,于2021年5月28日在中国内地上映. 哆啦A梦系列,是陪伴我,乃至陪伴了几代人成长的故事.50年来,藤 ...

  7. python画字符形状的词云图_python根据词频字典或字符串绘制词云图

    由于工作需要,要根据现有的新闻数据统计词频,绘制词云图,比较擅长python,因此没有用可以生成云图的网页工具.由于我的数据量比较大,因此根据字符串自动进行统计并绘制云图的方式并不适合我.我需要手动从 ...

  8. 用Python做中文分词和绘制词云图

    用Python做中文分词和绘制词云图 Python窗体布局 def __init__(self):self.root=Tk()self.root.wm_title('绘制词云')self.root.r ...

  9. Python pyecharts绘制词云图

    一.pyecharts绘制词云图WordCloud.add()方法简介 WordCloud.add()方法简介 add(name,attr,value, shape="circle" ...

  10. python 制作高斯mask_【趣味案例】用Python制作各种酷炫词云图,原来这么简单!...

    一.简介词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:! 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

最新文章

  1. 目标检测实战:4种YOLO目标检测的C++和Python两种版本实现
  2. 【BZOJ4236】JOIOJI [DP]
  3. 从无到有:微信后台系统的演进之路
  4. java泛型学习一:解惑继承
  5. 2020Alibaba数学预选赛第1轮试题
  6. 网络层:构成超网(CIDR)
  7. C 温故知新 之 指针:数组指针、字符串指针、函数指针
  8. 1.1 字符串的旋转+1.2 字符串的包含
  9. node cluster 数据共享_深入理解Node.js 中的进程与线程
  10. PKU《程序设计导引及在线实践》刷题记录(上)
  11. cad缩放_mac有没有好用的cad看图软件?CAD迷你看图 for Mac4.4.1激活版分享给大家...
  12. python 常微分方程 画向量场_千里积于跬步——流,向量场,和微分方程[转载]...
  13. linux学习笔记:06-ubuntu中挂载U盘
  14. 布兰迪斯大学计算机科学专业,美国布兰迪斯大学计算机科学博士专业介绍
  15. 人工神经网络基本构成有哪些具有什么特征
  16. 手游开发攻防——二、基础篇(更新完)
  17. 用MySQL绘制新年祝福图形_2020年春节,你有哪些与众不同的祝福语?
  18. 第一章 老虎Linux简介
  19. 利用Python打造短链接服务
  20. CSS的all(属性) 笔记

热门文章

  1. 元旦给计算机老师发贺词,给老师的元旦祝福语
  2. 企业级架构的价值体现在哪里?
  3. mysql查询表升序降序_创建一个按钮,对MYSQL查询进行升序和降序排序
  4. phpmyadmin 下载
  5. 泡泡龙游戏开发系列教程(二)
  6. RabbitMQ使用教程
  7. 基于 mini2440 电阻式触摸屏(四):mini2440触摸屏驱动分析
  8. 急!有谁知道如何截获WebBrowser控件的 ie脚本错误提示 吗?
  9. [程序人生]--深度思考比勤奋更重要
  10. Python实现基于ClipCap的看图说话Image Caption模型