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

news2024/10/5 19:17:57

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

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

使用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 FontProperties

def 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.coloradmin.cn/o/1426854.html

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

相关文章

睿尔曼超轻量仿人机械臂——外置按钮一键启停程序配置

在睿尔曼超轻量仿人机械臂—外置按钮盒使用说明一文中,介绍了外置按钮盒的安装及使用。它能够使机械臂的使用变得更加编辑,仅需按钮即可完成运动程序的启停等控制,而无需进入示教界面操作。 在示教界面中,我们可以完成运动程序的…

从用户行为到数据:数据采集全景解析【主流电商平台API接口数据采集方式】

电商数据采集是数据体系建设的最上游,是非常重要的一个环节,除了专业的数据人员,人们普遍对数据采集的认知度不高。如果你提起埋点,应该很多人都熟悉它。它应该也是绝大部分人对数据采集的认知了。数据上报其实是一个系统性工程&a…

vmware网络配置,VMware的三种网络模式详解与配置

vmware为我们提供了三种网络工作模式 vmware为我们提供了三种网络工作模式, 它们分别是: Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 VMware虚拟机的三种网络类型的适用场景如下…

设备的层次结构 - 驱动程序的垂直层次结构

Windows操作系统是分层调用。其实在驱动程序中也可以是分层调用的。 驱动程序的垂直层次结构 不仅是WDM驱动,NT式驱动也可以分层,这主要是通过一个设备附加在另一个设备之上。因此,可以将WDM驱动模型看成是NT驱动模型的延伸。 设备的创建顺序…

一文掌握SpringBoot注解之@Configuration知识文集(2)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

Flink 1.18.1的基本使用

系统示例应用 /usr/local/flink-1.18.1/bin/flink run /usr/local/flies/streaming/SocketWindowWordCount.jar --port 9010nc -l 9010 asd asd sdfsf sdf sdfsdagd sdf单次统计示例工程 cd C:\Dev\IdeaProjectsmvn archetype:generate -DarchetypeGroupIdorg.apache.flink -…

【Qt】—— 项⽬⽂件解析

目录 (一).pro⽂件解析 (二)widget.h⽂件解析 (三)main.cpp⽂件解析 (四)widget.cpp⽂件解析 (五)widget.ui⽂件解析 (一).pro⽂…

HiveSQL题——array_contains函数

目录 一、原创文章被引用次数 0 问题描述 1 数据准备 2 数据分析 ​编辑 3 小结 二、学生退费人数 0 问题描述 1 数据准备 2 数据分析 3 小结 一、原创文章被引用次数 0 问题描述 求原创文章被引用的次数,注意本题不能用关联的形式求解。 1 数据准备 i…

物联网可视化平台:赋能企业数字化转型

在数字化转型的大潮中,企业面临着如何更好地理解和利用海量数据的挑战。物联网技术的快速发展,为企业提供了一个全新的视角和解决方案。通过物联网可视化平台,企业能够实时监控、分析和展示物联网数据,从而加速数字化转型的进程。…

深度揭秘:代理IP的工作原理及其在网络安全中的关键角色

代理IP的工作原理及其在网络安全中的关键角色是一个相对复杂但非常重要的主题。以下是对这一内容的深度揭秘: 代理IP的工作原理 1. 请求转发 当一个客户端(如浏览器或爬虫程序)使用代理IP时,它不是直接与目标网站通信&#xff0c…

【无刷电机学习】电流采样电路硬件方案

【仅作自学记录,不出于任何商业目的】 目录 AD8210 INA282 INA240 INA199 AD8210 【AD8210数据手册】 在典型应用中,AD8210放大由负载电流通过分流电阻产生的小差分输入电压。AD8210抑制高共模电压(高达65V),并提供接地参考缓冲输出&…

从0搭建react+ts+redux+axios+antd项目

文章目录 一、安装及初始化二、TypeScript配置三、Webpack配置四、Prettier统一编码风格五、使用less六、Antd 安装及使用七、添加Router及配置八、安装axios九、添加redux及使用 本文介绍了如何用creat-react-app脚手架搭建一个react项目的基本结构,同时配置webpac…

书客、米家、柏曼大路灯哪款好?多维度实测对比推荐!

每到寒暑假,各个论坛上出现“大路灯怎么选”的类似话题非常频繁,因为现在的孩子出来上学期间需要读写之外,在寒暑假时也在不断的学习,许多家长关注到孩子学习时的光线问题,担心影响到孩子的视力状况,都纷纷…

Java的Mysql使用

Java的Mysql使用 说明 通过Java的方式连接Mysql中的数据库,并对数据库中的数据进行增加 查询操作 ​ 使用Mysql所提供的第三方库中的类(Mysql的API) 对其进行操作 ​ 将Mysql Jar包添加到lib目录后,就可以使用其中的类对其Mysql数据库进行操作 Mysq…

代码随想录算法训练营第五十九天|503.下一个更大元素II 、42. 接雨水

代码随想录算法训练营第五十九天|503.下一个更大元素II 、42. 接雨水 下一个更大元素II 503.下一个更大元素II 文章讲解:https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0II.html 题目链接:https://…

2024年美赛 (C题MCM)| 温网积分 |数学建模完整代码+建模过程全解全析

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

2024美赛数学建模F题思路分析 - 减少非法野生动物贸易

1 赛题 问题F:减少非法野生动物贸易 非法的野生动物贸易会对我们的环境产生负面影响,并威胁到全球的生物多样性。据估计,它每年涉及高达265亿美元,被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目,…

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

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

SpringBoot RestTemplate 设置挡板

项目结构 代码 BaffleConfig /*** Description 记录配置信息* Author wjx* Date 2024/2/1 14:47**/ public interface BaffleConfig {// 是否开启挡板的开关public static boolean SWITCH true;// 文件根目录public static String ROOT_PATH "D:\\TIS\\mock";// …

Attack Lab:Phase1~Phase5【缓冲区溢出实验】

注:本实验所用文件不是csapp官网给出的,是学校下发的。可以参考我的思路。 phase 1 本阶段目标是使getbuf调用结束后,控制权交给touch1函数。 则我们要知道两件事:一是缓冲区大小,二是touch1在虚拟内存中的位置。 用…