词云图大揭秘:如何从文本中挖掘热点词汇?

随着互联网的普及,大量的文本信息在网络上被产生和传播。如何从这些海量的文本中提取出有价值的信息,成为了人们关注的焦点。在这个信息爆炸的时代,词云图作为一种直观、形象的数据可视化手段,越来越受到人们的喜爱。本文手把手教你如何实现词云图,快速对文字进行分析。废话不多说,直接上源码:

一、源码


import jieba
import matplotlib.pyplot as plt
import re
from wordcloud import WordCloud
from docx import Document
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号def read_text_from_file(file_path):doc = Document(file_path)text = ''for para in doc.paragraphs:text += para.text + ''return text# 使用jieba进行中文分词
# 示例文本文件路径
file_path = 'E:\\test\\123.docx' # 请替换为你的文本文件路径
text12321 = read_text_from_file(file_path)
print("text",text12321)words = jieba.lcut(text12321)# 统计词频
word_freq = {}
for word in words:if word in word_freq:word_freq[word] += 1else:word_freq[word] = 1filtered_word_freq = {word: freq for word, freq in word_freq.items() if freq > 1}# 过滤掉符号
filtered_word_freq = {re.sub(r'[^\w\s]', '', word): freq for word, freq in filtered_word_freq.items()}# 按词频降序排列
sorted_word_freq = sorted(filtered_word_freq.items(), key=lambda x: x[1], reverse=True)# 可视化结果(使用词云图)
font_path = 'C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Windows\\Fonts\\仿宋_GB2312.ttf'  # 修改为你的字体文件路径
plt.figure(figsize=(10, 5))
wordcloud = WordCloud(font_path=font_path, width=800, height=400).generate_from_frequencies(filtered_word_freq)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title("文本词频统计")
plt.show()

运行效果如下:

二、代码解释

以下是关键代码的详细讲解:

1. `import jieba, matplotlib.pyplot as plt, re, from wordcloud import WordCloud, Document`:这行代码导入了所需的库,包括jieba(用于中文分词),matplotlib.pyplot(用于绘制词云图),re(用于处理正则表达式)和WordCloud(用于生成词云)。2. `plt.rcParams['font.sans-serif'] = ['SimHei']` 和 `plt.rcParams['axes.unicode_minus'] = False`:这两行代码设置了matplotlib的字体参数,使其可以正常显示中文标签和负号。3. `def read_text_from_file(file_path):`:定义了一个函数,该函数接收一个文件路径作为参数,使用python-docx库读取该文件中的所有段落,并将所有段落的文本内容连接成一个字符串返回。4. `file_path = 'E:\\test\\123.docx'`:指定了一个.docx格式的文本文件路径。5. `text12321 = read_text_from_file(file_path)`:调用read_text_from_file函数读取该文件的内容,并打印出来。6. `words = jieba.lcut(text12321)`:使用jieba的lcut函数对读取到的文本内容进行分词,得到一个包含所有词的列表。7. `word_freq = {}`:创建一个空字典,用于统计每个词的出现频率。8. `for word in words:`:遍历分词后的词列表。9. `if word in word_freq:`:如果某个词已经在字典中,则将其对应的频率加一。10. `else:`:如果某个词不在字典中,则将其添加到字典中,并将其频率设置为1。11. `filtered_word_freq = {word: freq for word, freq in word_freq.items() if freq > 1}`:创建一个新的字典,只包含出现频率大于1的词及其频率。12. `filtered_word_freq = {re.sub(r'[^\w\s]', '', word): freq for word, freq in filtered_word_freq.items()}`:使用正则表达式将filtered_word_freq中的词的符号部分去掉。13. `sorted_word_freq = sorted(filtered_word_freq.items(), key=lambda x: x[1], reverse=True)`:将filtered_word_freq中的词按照其频率进行降序排序,得到一个列表sorted_word_freq。14. `font_path = 'C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Windows\\Fonts\\仿宋_GB2312.ttf'`:设置词云图的字体文件路径。15. `plt.figure(figsize=(10, 5))`:设置图形的大小。16. `wordcloud = WordCloud(font_path=font_path, width=800, height=400).generate_from_frequencies(filtered_word_freq)`:使用WordCloud的generate_from_frequencies方法,根据sorted_word_freq中的词频信息生成词云图。17. `plt.imshow(wordcloud, interpolation='bilinear')`:使用matplotlib的imshow函数将生成的词云图显示出来。设置插值方法为'bilinear',使得词云图中的文字更加清晰。18. `plt.axis('off')`:关闭坐标轴。19. `plt.title("文本词频统计")`:设置标题为"文本词频统计"。20. `plt.show()`:调用show函数显示整个图形。

三、词云图主要有以下应用场景

1、新闻报道

在新闻报道中,词云图可以帮助记者快速梳理出热点事件的核心词汇。通过对新闻标题中出现的关键词进行统计,词云图可以将这些关键词按照权重进行排序,形成一个视觉化的热点词汇分布图。这样,记者可以迅速了解新闻事件的焦点,为报道提供有力的依据。

2、社交媒体

在社交媒体中,用户发布的文字、图片和视频等内容构成了一个庞大的信息网络。通过词云图分析,我们可以发现用户关注的焦点、热门话题以及情感倾向等信息。例如,对于一场公益活动的宣传,我们可以通过词云图分析出用户关注的核心词汇,从而优化宣传策略,提高活动的影响力。

3、舆情监控

在企业和政府部门中,舆情监控是一项重要的工作。通过对网络上的用户评论、发帖等数据进行分析,可以及时发现潜在的危机,为企业决策提供有力支持。词云图可以帮助我们快速识别出舆情关注的焦点,从而采取相应的措施进行应对。

4、产品评价

在电商、旅游等行业中,用户对产品和服务的评价是影响购买决策的重要因素。通过词云图分析,我们可以发现用户关注的核心词汇,如产品质量、价格、服务等方面。这些信息对于企业改进产品和服务具有重要的参考价值。

5、教育培训

在教育培训领域,词云图可以帮助教师和学生更好地理解课程内容。通过对教材中的重点知识点进行词云分析,教师可以更好地把握教学重点,学生也可以更清晰地掌握知识点之间的关系。此外,词云图还可以用于知识竞赛、论文查重等场景,提高学习效率。

6、广告投放

在广告投放过程中,词云图可以帮助广告商更好地了解目标受众的需求和兴趣。通过对广告标题中的关键词进行统计,词云图可以将这些关键词按照权重进行排序,形成一个视觉化的热点词汇分布图。这样,广告商可以更精准地进行广告创意设计,提高广告效果。

7、 在数据分析报告中,词云图可以帮助分析师更直观地展示数据特征。通过对报告中的关键数据进行词云分析,分析师可以更好地把握数据的变化趋势和规律,为决策提供有力支持。

总之,词云图作为一种直观、形象的数据可视化手段,在文本分析中具有广泛的应用前景。通过词云图,我们可以快速了解文本中的热点词汇,挖掘出有价值的信息,为各类场景提供有力的支持。

如运行有问题,可联系我,乐意为你解决。一起共同研究大数据分析模型。下一期将为你讲解情感分析模型。

每日为你分享更多干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式 - 七大软件设计原则

目录 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 1.2.2、单一职责原则 1.2.3、里氏替换原则 1.2.4、迪米特原则 1.2.5、接口隔离原则 1.2.6、依赖倒转原则 1.2.7、合成/聚合复用原则 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 开闭原则:对扩…

双周赛114(模拟、枚举 + 哈希、DFS)

文章目录 双周赛114[2869. 收集元素的最少操作次数](https://leetcode.cn/problems/minimum-operations-to-collect-elements/)模拟 [2870. 使数组为空的最少操作次数](https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-empty/)哈希 枚举 [2871. 将数…

LeetCode-503-下一个更大元素Ⅱ

题目描述: 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数&am…

Docker--harbor私有仓库部署与管理

目录 一、Harbor简介 1、什么是Harbor 2、Harbor的特性 3、Haebor的构成 二、搭建本地私有仓库 1、本地私有仓库创建 2、将镜像上传至本地私有仓库 三、搭建Harbor仓库 1. 部署 Docker-Compose 服务 2、部署 Harbor 服务 3、启动Harbor 4、创建一个新项目 5、在其他…

Docker 容器管理

容器概念 docker容器相当于一个进程,性能接近于原生,几乎没有损耗; docker容器在单台主机上支持的数量成百上千; 容器与容器之间相互隔离; 镜像是创建容器的基础,可以理解镜像为一个压缩包 容器管理 …

并发、并行、同步、异步、阻塞、非阻塞

一、多核、多cpu (一)多核 Multicore 核是CPU最重要的部分。负责运算。核包括控制单元、运算单元、寄存器等单元。 多核就是指单个CPU中有多个核。 (二)多cpu Multiprocessor 多cpu就是一个系统拥有多个CPU。每个CPU可能有单个核…

5种排序算法

文章目录 一,排序算法时间复杂度比较二,插入排序三,冒泡排序四,快速排序五,堆排序六,二分归并排序 一,排序算法时间复杂度比较 算法最坏情况下平均情况下插入排序O(n )O(n)冒泡排序O(n)O(n)快速…

北京股票开户的佣金手续费是多少?北京股票开户选择哪家券商?

北京股票开户的佣金手续费是多少?北京股票开户选择哪家券商? 股票注册开户是非常简单的,在2015年前也就是互联网还不发达的时候,投资者只能去券商的营业部柜台办理,而自从各大券商都可以网上开户后,更多的投资者会选择网上开户…

【运维】一些团队开发相关的软件安装。

gitlab 安装步骤 (1) 下载镜像,并且上传到服务器 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.2.8-ce.0.el7.x86_64.rpm (2)rpm -i gitlab-ce-16.2.8-ce.0.el7.x86_64.rpm (3)安装成功后…

观察者模式 行为型设计模式之七

1.定义 在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样定义的:定义对象的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化&#xff0…

vue elementui <el-date-picker>日期选择框限制只能选择90天内的日期(包括今天)

之前也写过其他限制日期的语句,感觉用dayjs()的subtract()和add()也挺方便易懂的,以此记录 安装dayjs npm install dayjs --save dayjs().add(value : Number, unit : String); dayjs().add(7, day); //在当前的基础上加7天dayjs().subtract(value : N…

《TWS蓝牙耳机通信原理与接口技术》

+他V hezkz17进数字音频系统研究开发交流答疑群(课题组) 耳机BT与手机BT通信 主耳与从耳通信 耳机BLE盒手机BLE通信 充电盒与耳机通信 上位机与耳机通信 上位机与充电盒通信 1 耳机BT与手机BT通信 传输音频数据传递控制信息 (3) 耳机BLE与手机BLE通信 安卓/苹果app-耳机…

在硅云上主机搭建wordpress并使用Astra主题和avada主题

目录 前言 准备 操作 DNS解析域名 云主机绑定域名 安装wordpress网站程序 网站内Astra主题设计操作 安装主题 网站内avada主题安装 上传插件 上传主题 选择网站主题 前言 一开始以为云虚拟主机和云服务器是一个东西,只不过前者是虚拟的后者是不是虚拟的…

练[GYCTF2020]EasyThinking

[GYCTF2020]EasyThinking 文章目录 [GYCTF2020]EasyThinking掌握知识解题思路还得靠大佬正式开始 关键paylaod 掌握知识 ​ thinkphpV6任意文件操作漏洞,代码分析写入session文件的参数,源码泄露,使用蚁剑插件disable_functions绕过终端无回…

尚硅谷CSS学习笔记

什么是css css&#xff08;层叠样式表&#xff09; 它是一种标记语言&#xff0c;用于给HTML结构设置样式。简单理解css可以美化html&#xff0c;实现结构与样式的分离。 <link rel"shortcut icon" href"favicon.ico" type"image/x-icon"&g…

【调度算法】快速非支配排序算法

这段代码实现的是快速非支配排序算法&#xff08;Fast Non-dominated Sorting Algorithm&#xff09;。 算法输入和输出&#xff1a; 这个函数的输入是两个列表 values1 和 values2&#xff0c;分别表示多目标优化问题中每个解在两个目标函数下的取值。输入的两个列表应该具有…

encoding/json vs json-iterator

encoding/json vs json-iterator 100% Compatibility 默认情况下&#xff0c;jsoniter 不会像标准库那样对映射键进行排序。如果你想要 100% 的兼容性&#xff0c;就这样使用 m : map[string]interface{}{"3": 3,"1": 1,"2": 2, } json : json…

线性代数 --- 矩阵的QR分解,A=QR

矩阵的QR分解&#xff0c;格拉姆施密特过程的矩阵表示 首先先简单的回顾一下Gram-Schmidt正交化过程的核心思想&#xff0c;如何把一组线性无关的向量构造成一组标准正交向量&#xff0c;即&#xff0c;如何把矩阵A变成矩阵Q的过程。 给定一组线性无关的向量a,b,c&#xff0c;我…

Transformer预测 | Pytorch实现基于mmTransformer多模态运动预测(堆叠Transformer)

文章目录 文章概述程序设计参考资料文章概述 Transformer预测 | Pytorch实现基于mmTransformer多模态运动预测(堆叠Transformer) 程序设计 Initialize virtual environment: conda create -n mmTrans python=3.7# -*- coding: utf-8 -*- import argparse import os

推荐高效的电脑磁盘备份解决方案!

该怎样实现电脑磁盘备份&#xff1f; 接下来&#xff0c;我们将为你介绍两种磁盘备份方法。一种是利用操作系统自带的功能&#xff0c;另一种则是通过第三方工具实现。 方法一. Windows自带的备份还原功能 要在Windows 11/10/8/7中备份软件&#xff0c;你可以使…