中国文化之光:微博数据的探索与可视化分析

大家好,我是八块腹肌的小胖

下面我们针对主题“中国文化”相关的微博数据进行爬取

使用LDA、情感分析、情感演化、词云等可视化操作进行相关的展示

1、导包

第一步我们开始导包工作

下面这段代码,首先,pandas被请来了,因为它是处理数据的高手,能把数据弄得井井有条。然后,gensim也加入了,它擅长于自然语言处理,就像是让数据说话的魔术师。

接着,咱们用了simple_preprocess,这个就像是个文本切割机,能把长长的文本切成小块,便于后面的处理。还有corpora,它的任务是建立词袋模型,就像是给每个词分个类,整理得井井有条。

然后轮到了LDA模型出场,它的任务是把那些看起来杂乱无章的文本变成有意义的主题,就像是个魔法师,能从一堆文字中找出隐藏的秘密。

最后,为了让分析更加精准,nltk里的stopwords也来帮忙了,它负责去除那些像“的”、“和”这样的常见但不太有意义的词。

import pandas as pd
import gensim
from gensim import corpora
from gensim.models import LdaModel
from gensim.models import CoherenceModel
from gensim.utils import simple_preprocess
import pandas as pd
from gensim.utils import simple_preprocess
from gensim import corpora
from gensim.models import LdaModel
from nltk.corpus import stopwords

2、读取数据、数据预处理、构建LDA模型

下面这段代码

首先,咱们用pandas读取了一个叫data.csv的文件,就像是把一箱宝藏打开,准备好挖掘里面的珍宝。

接下来,用jieba来进行分词。这就像是用小刀把文字切成一块块,方便咱们更好地理解它们。

同时,咱们还读取了一个叫stop_words.txt的文件,里面有一堆停用词,这些词就像是箱子里的沙子,咱们把它们筛出去,留下的就是更有价值的内容。

然后,咱们用gensimcorpora来创建词袋模型。这就像是给每个词贴上标签,分好类。

每个词都变成了一个有编号的小盒子,整整齐齐。

现在来到了最激动人心的部分!咱们用LDA模型来分析这些词。

设定了10个主题,这模型就会告诉咱们,在这些文本里,有哪些热门的话题。就像是个神奇的放大镜,能让咱们看到文字背后的世界。

最后,通过打印出来的主题,咱们可以看到每个主题下最重要的20个词。这就像是从混沌中找到了秩序,一切都变得清晰可见。

# 读取数据
data = pd.read_csv('data.csv')  # 替换成你的数据文件路径# 分词去停用词
import jieba
with open('stop_words.txt', 'r', encoding='utf-8') as file:stop_words = [line.strip() for line in file]
processed_data = data['text'].map(lambda x: [word for word in simple_preprocess(x) if word not in stop_words])# 创建词袋模型
dictionary = corpora.Dictionary(processed_data)
corpus = [dictionary.doc2bow(text) for text in processed_data]# 构建LDA模型
num_topics = 10  # 主题数量,可以根据需求进行调整
lda_model = LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics)# 查看主题词
topics = lda_model.print_topics(num_words=20)
for topic in topics:print(topic)

它们的输出如下:

3、主题词可视化展示

这次咱们的主角是可视化!

这段代码的大意是,把那些通过LDA模型找到的热门话题变成一幅幅好看的柱状图。

首先,定义了一个叫visualize_topics_bar_chart的函数,这个函数就像是个画家,专门负责画柱状图。lda_modelnum_words=20是它的画笔和颜料,用来确定要画什么和怎么画。

函数里首先提取了每个主题的前20个关键词。这些关键词和它们的频率就像是画布上的主角,每个都有自己的位置和重要性。

然后,代码把这些词按频率排序,确保最重要的词能被突出显示。接着,用matplotlib(一个绘图大师)来绘制柱状图,把这些词和它们的频率以柱子的形式展示出来。

因为处理的是中文数据,所以还特别设置了中文字体,确保图表上的文字清晰、美观。

最后,函数会展示出一幅幅柱状图,每一幅都代表一个主题,柱子的高矮显示了各个词的重要性。让人一目了然。

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontPropertiesdef visualize_topics_bar_chart(lda_model, num_words=20):topics = lda_model.print_topics(num_words=num_words)for topic in topics:topic_words = {}words = topic[1].split(" + ")for word in words:freq, term = word.split("*")term = term.replace('"', '').strip()topic_words[term] = float(freq)sorted_words = sorted(topic_words.items(), key=lambda x: x[1], reverse=True)terms = [w[0] for w in sorted_words]frequencies = [w[1] for w in sorted_words]# 指定中文字体文件路径font_path = 'SimHei.ttf'# 加载中文字体font_prop = FontProperties(fname=font_path)plt.figure(figsize=(10, 5))plt.bar(range(len(terms)), frequencies)plt.xticks(range(len(terms)), terms, rotation=45, ha="right", fontproperties=font_prop)plt.xlabel("Words", fontproperties=font_prop)plt.ylabel("Frequencies", fontproperties=font_prop)plt.title("Topic Keywords", fontproperties=font_prop)plt.tight_layout()plt.show()# 使用示例
visualize_topics_bar_chart(lda_model, num_words=20)

4、词云展示

咱们接着来看这段代码,这回是要制作一幅词云图!

首先,这段代码从LDA模型的主题中提取了所有的关键词。

然后,把这些挑选出来的词连成一串,用空格隔开。这就像是在准备画布,把所有的“颜料”(也就是词汇)摆好位置。

接下来,用WordCloud这个工具来创建词云。这个工具就像是个神奇的画笔,能把单调的文字变成有趣的图形。

这里还特别设置了词云的大小和背景颜色,还有中文字体,确保一切看起来既美观又清晰。

用matplotlib来展示这幅词云图。词云里的每个词都有不同的大小,这表示它们在主题中的重要程度。

5、情感倾向性分析饼状图展示

咱们这段代码,给数据做了个情感检查,然后用一幅饼图来展示结果!

首先,用pandas读取了data.csv文件,里面装的是一些文本数据。

接下来,用SnowNLP来分析这些文本的情感倾向。这个过程就像是对每段文字进行情感测量,看看它们是开心的、悲伤的,还是居中的。

然后,根据情感分数,统计出积极、消极和中立的文本数量。这就像是把情感分成三个篮子,看看每个篮子里有多少故事。

接着,用matplotlibseaborn把这些统计结果绘制成一幅饼图。这幅图用不同的颜色和大小展示了每种情感的比例,还特别标注了百分比,让人一眼就能看明白。

最后,还对图表进行了美化,比如设置了中文字体、图表标题和图例。然后展示出这幅图,让人一眼就能感受到这些数据背后的情感色彩。

6、情感分值随时间变化的展示

下面的diamond首先,用pandas读取了data.csv文件,里面装着一堆数据。然后,把created_at字段中的日期字符串转换成了真正的日期格式,这样就方便咱们后面按日期来分析情感了。

SnowNLP来分析每段文本的情感。这个过程就像是给每段故事打个情感标签,比如高兴、伤心或者是中立。

然后,把这些情感分数加到数据表里,每一行数据都有了自己的情感得分。这就像是给数据表每个单元格贴上了情感小贴纸。

这里有意思了,咱们按照日期来分组,计算每天的情感得分平均值。这就像是把每天的情感做了个总结,看看每天的整体心情怎么样。

最后,用matplotlib来画一幅折线图,展示了情感得分随时间的变化。每个点都代表一天的平均情感得分,线条连接着这些点,就像是在时间轴上跳舞的心情线。图表上还有标题、日期标签和情感分数标签。

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

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

相关文章

2024年美赛 (A题MCM)| 海蟒鳗鱼 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看美赛的A题! 完整内容可以在文章末尾领…

Camunda流程引擎概念

💖专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧😘 💖流程定义 …

服务器C盘突然满了,是什么问题

随着时代的发展、互联网的普及,加上近几年云计算服务的诞生以及大规模普及,对于服务器的使用目前是非常普遍的,用户运维的主要对象一般也主要是服务器方面。在日常使用服务器的过程中,我们也会遇到各式各样的问题。最近就有遇到用…

【2024美赛C题】网球大佬带你无背景压力分析解题思路!

2024美赛数学建模c题思路分享 加群可以享受定制等更多服务,或者搜索B站:数模洛凌寺 联络组织企鹅:936670395 以下是C题老师的解题思路(企鹅内还会随时更新文档): 1背景介绍 2024MCM问题C:网…

LeetCode:42. 接雨水

42. 接雨水 1)题目2)思路3)代码4)结果 1)题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height …

强化学习 - Monte Carlo Tree Search (MCTS)

什么是机器学习 强化学习中的Monte Carlo Tree Search (MCTS) 是一种用于决策制定和搜索的算法,特别在不确定环境下表现出色。 1. 强化学习背景 在强化学习中,一个智能体通过与环境的交互学习,以便在某个任务上获得最大的奖励。MCTS是一种…

2024美国大学生数学建模美赛选题建议+初步分析

总的来说&#xff0c;去年算是美赛环境题元年&#xff0c;去年的开放度是较高的&#xff0c;今年每种赛题类型相对而言平均了起来 提示&#xff1a;DS C君认为的难度&#xff1a;E<BCF<AD&#xff0c;开放度&#xff1a;DBCE<A<F。 以下为A-F题选题建议及初步分析…

【ArcGIS Pro】从0开始

1.导入excel&#xff0c;需要安装驱动程序 安装用于 Microsoft Excel 文件的驱动程序 https://pro.arcgis.com/zh-cn/pro-app/latest/help/data/excel/prepare-to-work-with-excel-in-arcgis-pro.htm 2.修改投影坐标系 点到地图图标上&#xff0c;右键才能设置坐标系。 3.…

前端通过nginx,访问一个文件夹里面的全部数据,nginx 咋配置

目录 1 问题2 实现 1 问题 前端通过nginx,访问一个文件夹里面的全部数据&#xff0c;nginx 咋配置 2 实现 location /logs {alias /mnt/www/logs/;autoindex on; }

【QT+QGIS跨平台编译】之二十二:【FontConfig+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、FontConfig介绍二、文件下载三、文件分析四、pro文件五、编译实践 一、FontConfig介绍 FontConfig 是一个用于配置和定制字体的库&#xff0c;广泛应用于基于X Window系统的操作系统中&#xff0c;尤其是在Linux和Unix-like系统中。它为应用程序提供了一种统一的…

JavaWeb前端——HTML/CSS

HTML/CSS概述 HTML&#xff1a;学习标签&#xff0c;CSS&#xff1a;学习样式 HTML 1. 不区分大小写。 2. 属性可以使用单引号/双引号 3. 在记事本/编辑器中编写html语言&#xff0c;通过浏览器解析渲染语言 4. 语法结构松散&#xff08;编写时要尽量严谨&#xff09; VSc…

搭建 idea 插件仓库私服

正常情况下&#xff0c;我们开发的 idea 插件会发布到 idea 官方商城中&#xff0c;这样用户就可以在 idea 的 Marketplace 中搜索安装。 但是在企业内部&#xff0c;有可能我们开发了很多内部插件&#xff0c;而不能发布到公共市场中&#xff0c;这种情况下我们就需要搭建一个…

探索微服务治理:从发展到实践构建高效稳定的系统|负载均衡技术解析

二、微服务治理的相关技术 微服务治理涉及多个方面&#xff0c;包括服务注册与发现、负载均衡、容错处理、服务配置管理等&#xff0c;这些技术共同确保微服务架构的稳定运行。 2、负载均衡 负载均衡作为服务治理中的核心技术之一&#xff0c;对于提高系统的可用性、性能和扩…

网络空间测绘在安全领域的应用(上)

近年来&#xff0c;网络空间测绘已经跻身为网络通信技术、网络空间安全、地理学等多学科融合的前沿领域。 该领域聚焦于构建网络空间信息的“全息地图”&#xff0c;致力于建立面向全球网络的实时观测、准确采样、映射和预测的强大基础设施。 通过采用网络探测、数据采集、信…

华为FreeClip耳机可以调节音量大小吗?附教程!

不会只有我一个人吧&#xff1f;都用华为FreeClip耳机一段时间了&#xff0c;才发现它竟然不支持在耳机上直接调节音量&#xff0c;也是没谁了&#xff01;但是后来自己摸索了一下&#xff0c;发现了华为FreeClip耳机原来是几个简单有效的调节音量大小的方法滴~不得不说&#x…

在Android Studio中配置OpenCV

在Android Studio中配置OpenCV 1 下载OpenCV2 导入OpenCV模块3 修改配置4 增加依赖5 拷贝libopencv_java.so6 Activity中加入代码1 下载OpenCV 下载OpenCV的Android包并解压。 2 导入OpenCV模块 在Android应用中,导入OpenCV模块。 导入目录时选择Opencv Android中的sdk目…

TiDB架构设计和实践:高性能分布式数据库解决方案

摘要&#xff1a;TiDB是一个开源的分布式NewSQL数据库&#xff0c;具备强大的水平扩展能力和高性能查询能力。本文将介绍TiDB的架构设计和实践经验&#xff0c;帮助读者了解如何利用TiDB构建可靠、高性能的分布式数据库系统。 正文&#xff1a; ### 1. 引言 随着互联网规模的…

鸿蒙ArkUI下拉列表组件

鸿蒙ArkUI下拉列表组件&#xff0c;官方提供的只是基础使用&#xff0c;在使用过程非常不方便&#xff0c;我们进行了组件的封装。 import {IDynamicObject} from ./IType /*** 自定义颜色*/ Component export default struct DiygwSelect{//绑定的值Link Watch(onValue) val…

如何做好员工离职风险防范和离职危机处理工作

员工退出与离职是企业发展中都会面临的一个普遍现象&#xff0c;这种现象本身没有什么问题&#xff0c;但是如果企业退出与离职管理不善&#xff0c;就会增加企业的管理成本&#xff0c;影响企业的正常经营活动。该电子科技有限公司在发展中也遇到员工离职管理不善带来的问题。…

151基于matlab的齿轮-轴-轴承系统的含间隙非线性动力学模型

基于matlab的齿轮-轴-轴承系统的含间隙非线性动力学模型&#xff0c;根据牛顿第二定律&#xff0c;建立齿轮系统啮合的非线性动力学方程&#xff0c;同时也主要应用修正Capone模型的滑动轴承无量纲化雷诺方程&#xff0c;利用这些方程推到公式建模&#xff1b;用MATLAB求解画出…