【Python数据分析五十个小案例】使用自然语言处理(NLP)技术分析 Twitter 情感

news2024/12/26 21:56:31

在这里插入图片描述

博客主页:小馒头学python

本文专栏: Python爬虫五十个小案例

专栏简介:分享五十个Python爬虫小案例

在这里插入图片描述

项目简介

什么是情感分析

情感分析(Sentiment Analysis)是文本分析的一部分,旨在识别文本中传递的情感信息,例如正面、负面或中立情绪。

为什么选择 Twitter 数据

数据丰富:Twitter 上每天产生数百万条推文,内容多样。
即时性:适合实时分析。
公开可用:提供 API 可轻松访问。

NLP 在情感分析中的作用

通过 NLP 技术,可以将非结构化文本数据转化为结构化信息,提取情绪、关键词等有价值的内容。

项目准备

环境配置

  • 操作系统:Windows/Linux/MacOS
  • Python:版本 3.8+
  • 库依赖:tweepy,nltk,scikit-learn,pandas,matplotlib,seaborn,TensorFlow
pip install tweepy nltk scikit-learn pandas matplotlib seaborn tensorflow

必备库介绍

  • tweepy:用于访问 Twitter API
  • nltk:提供 NLP 工具,如分词、停用词处理
  • scikit-learn:模型训练与评估
  • TensorFlow:深度学习框架

数据获取与预处理

获取 Twitter 数据

import tweepy

# 设置 API 密钥
api_key = "YOUR_API_KEY"
api_secret = "YOUR_API_SECRET"
access_token = "YOUR_ACCESS_TOKEN"
access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"

# 连接 Twitter API
auth = tweepy.OAuthHandler(api_key, api_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# 获取推文数据
tweets = api.search_tweets(q="AI", lang="en", count=100)
tweet_texts = [tweet.text for tweet in tweets]

print(tweet_texts[:5])  # 打印前5条推文

可视化

数据分布分析

import pandas as pd
from collections import Counter

# 加载推文数据
df = pd.DataFrame(tweet_texts, columns=["Tweet"])
df['Length'] = df['Tweet'].apply(len)

# 分析推文长度分布
print(df['Length'].describe())

数据可视化示例

import matplotlib.pyplot as plt
import seaborn as sns

# 可视化推文长度分布
sns.histplot(df['Length'], bins=20, kde=True)
plt.title("Tweet Length Distribution")
plt.xlabel("Length")
plt.ylabel("Frequency")
plt.show()

自然语言处理管道

数据清洗与预处理

import re
import nltk
from nltk.corpus import stopwords

nltk.download('stopwords')
stop_words = set(stopwords.words('english'))

def clean_text(text):
    text = re.sub(r"http\S+", "", text)  # 移除URL
    text = re.sub(r"@\w+", "", text)    # 移除@用户
    text = re.sub(r"#", "", text)       # 移除话题符号
    text = re.sub(r"[^a-zA-Z]", " ", text)  # 保留字母
    text = text.lower()                # 转为小写
    text = " ".join(word for word in text.split() if word not in stop_words)  # 移除停用词
    return text

df['Cleaned_Tweet'] = df['Tweet'].apply(clean_text)

词向量化

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer(max_features=1000)
X = vectorizer.fit_transform(df['Cleaned_Tweet']).toarray()

模型训练与评估

模型选择

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# 模拟情感标签
import numpy as np
df['Sentiment'] = np.random.choice(['Positive', 'Negative', 'Neutral'], len(df))

# 数据拆分
X_train, X_test, y_train, y_test = train_test_split(X, df['Sentiment'], test_size=0.2, random_state=42)

# 训练模型
model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# 评估模型
print(classification_report(y_test, y_pred))

案例展示与结果分析

情感分类结果可视化

from sklearn.metrics import confusion_matrix
import seaborn as sns

cm = confusion_matrix(y_test, y_pred, labels=['Positive', 'Negative', 'Neutral'])
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Positive', 'Negative', 'Neutral'], yticklabels=['Positive', 'Negative', 'Neutral'])
plt.title("Confusion Matrix")
plt.xlabel("Predicted")
plt.ylabel("True")
plt.show()

示例 Tweet 的情感预测

sample_tweets = ["I love this product!", "This is the worst service ever."]
sample_cleaned = [clean_text(tweet) for tweet in sample_tweets]
sample_vectorized = vectorizer.transform(sample_cleaned).toarray()

print(model.predict(sample_vectorized))

总结

社交媒体情感分析利用自然语言处理(NLP)技术对平台上的用户文本进行情感分类,旨在识别推文或评论中的情绪倾向,如正面、负面或中立。这项技术在商业、舆情监控和社会研究等领域有广泛应用。例如,通过分析 Twitter 上的推文,企业可以了解用户对其品牌或产品的情感反应,从而优化市场营销策略。情感分析过程通常包括数据采集、文本清洗、特征提取以及模型训练等步骤,而现代深度学习模型(如 LSTM 和 BERT)在准确性和情感分类能力上表现尤为出色,感兴趣的同学可以自行去看看

若感兴趣可以访问并订阅我的专栏:Python数据分析五十个小案例

请添加图片描述

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

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

相关文章

网络安全防护指南:筑牢网络安全防线(5/10)

一、网络安全的基本概念 (一)网络的定义 网络是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息收集、存储、传输、交换、处理的系统。在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。它连接了世…

宏海科技募资额有所缩减,最大销售和采购都重度依赖美的集团

《港湾商业观察》施子夫 11月29日,北交所上市审核委员会将召开2024年第24次上市委审议会议,届时将审议武汉宏海科技股份有限公司(以下简称,宏海科技)的首发上会事项。 在上会之前,宏海科技共收到北交所下…

算法日记 36-38day 动态规划

今天把动态规划结束掉,包括子序列以及编辑距离 题目:最长公共子序列 1143. 最长公共子序列 - 力扣(LeetCode) 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &…

Gopeed 1.6.3 | 不限速下载工具附百度网盘不限速教程

Gopeed是一款高效且易于使用的下载软件。它具有加速下载速度的功能,可以帮助用户更快地下载文件。此外,Gopeed还支持多线程下载,可以同时下载多个文件,提高下载效率。它提供了简洁的界面和简单的操作,方便用户操作和管…

K8S版本和istio版本的对照关系

版本对照关系 下载地址1 下载地址2

【大数据学习 | Spark-SQL】关于RDD、DataFrame、Dataset对象

1. 概念: RDD: 弹性分布式数据集; DataFrame: DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型…

如何调用百度文心一言API实现智能问答

诸神缄默不语-个人CSDN博文目录 百度需要先认证个人信息才能使用LLM API。 文章目录 1. 获得 API Key2. 撰写代码并实现提问和回答2.1 用openai包实现调用2.2 用openai包实现流式调用2.3 用openai包实现工具调用2.4 构建智能体2.5 文生图2.6 图生图 3. 用gradio建立大模型问答…

python除了熟悉的pandas,openpyxl库也很方便的支持编辑Excel表

excel表格是大家经常用到的文件格式,各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据,使用xlwt库创建和编辑excel表,在办公自动化方面可以方便我们快速处理数据,帮助我们提升效率。 python之open…

JMeter 并发策略-针对准点秒杀场景的压测实现

一、场景的压测实现 1,创建线程组,10并发用户执行5次; 2,创建 Synchronizing Timer 元件,用于同步线程,设置同步元件 Synchronizing Timer 3,创建 http 请求4,创建 view results in table 元件…

损失函数分类

1. NLLLoss(负对数似然损失) 定义: 直接对预测的概率 p(yi) 的负对数求平均。通常配合 Softmax 使用,输入为对数概率。 优点: 对离散分类问题效果良好。更灵活,用户可以自行计算 Softmax。 缺点&#x…

【热门主题】000072 分布式数据库:开启数据管理新纪元

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…

算法笔记:力扣148. 排序链表

思路: 将链表中的节点一一取出放到list集合中,然后通过Comparator实现排序,对排序好的list节点一一取出,组成排序好的新链表。 关键思路: Comparator实现对ListNode的排序; 💡注意&#xff…

Kafka知识体系

一、认识Kafka 1. kafka适用场景 消息系统:kafka不仅具备传统的系统解耦、流量削峰、缓冲、异步通信、可扩展性、可恢复性等功能,还有其他消息系统难以实现的消息顺序消费及消息回溯功能。 存储系统:kafka把消息持久化到磁盘上&#xff0c…

MacOS安装MySQL数据库和Java环境以及Navicat

安装MySQL 去官网下载:MySQL 下载好后安装,在设置里往下滑,出现了这样,就代表安装成功了 接下来配置环境: 首先在我们的设备上找到终端并打开,输入 vim ~/.bash_profile(注意vim后面的空格),输入完成后点击…

Css、less和Sass(SCSS)的区别详解

文章目录 Css、less和Sass(SCSS)的区别详解一、引言二、CSS 简介1.1、CSS 示例 三、Less 简介2.1、Less 特性2.2、Less 示例 四、Sass(SCSS)简介3.1、Sass 特性3.2、SCSS 示例 五、总结 Css、less和Sass(SCSS&#xff…

misc-好久不见17

wireshark_secret Ctrlshirtv 8、热心助人的小明同学 使用工具volatility查看镜像的信息 volatility_2.6_win64_standalone -f image.raw imageinfo 列出所有用户和密码: volatility_2.6_win64_standalone -f image.raw --profileWin7SP1x86_23418 hashdump Xi…

利用PyTorch Profiler实现大模型的性能分析和故障排查

本文介绍PyTorch Profiler结合TensorBoard分析模型性能,分别从数据加载、数据传输、GPU计算、模型编译等优化思路去提升模型训练的性能。最后总结了一些会导致CPU和GPU同步的常见的PyTorch API,在使用这些API时需要考虑是否会带来性能影响。 PyTorch Pr…

关于IDE的相关知识之三【插件安装、配置及推荐的意义】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于ide插件安装、配置及推荐意义的相关内容…

ECharts柱状图-交错正负轴标签,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…

预处理详解(完结篇)

⽬录 一. 什么是预处理 c 1 预定义符号 2. #define定义常量 3 . #define定义宏 4. 带有副作⽤的宏参数 5. 宏替换的规则 6 宏函数的对⽐ 三 #和## 四 命名约定 五. #undef 一 什么是预处理 有许多文件中都内容我们是看不懂的,那怎么才能令…