推特数据的情感分析

590 阅读5分钟

在靠近用户的地方部署容器

本工程教育(EngEd)计划由科支持。

在全球范围内即时部署容器。Section是经济实惠、简单而强大的。

免费开始

推特数据的情感分析

2020年8月4日

社交网络是收集人们对不同主题的意见和情绪的主要资源,因为他们每天都会在社交媒体上花费数小时,并分享他们的意见。在这篇文章中,我们将讨论情感分析的应用以及如何连接到Twitter并运行情感分析查询。为了理解代码,需要有Python的基本知识。

情感分析是从一段文本中提取情感,并相应地将其分类为正面负面中性的过程。

为什么要在Twitter上进行情感分析?

情感分析在不同领域有许多应用。例如,公司可以通过社交媒体了解用户的反馈和评论--并获得关于其产品的实际反馈。社交网络是一个丰富的平台,可以在人们交流和分享意见时了解他们对不同主题的意见和情绪。

推特拥有13亿个账户,每月有3.3亿活跃用户,每天有1.45亿用户。推特数据是全世界最容易理解的现场公开对话的来源,因此可以作为了解客户情绪的宝贵工具,因为人们和市场对产品和商业决策做出了反应。

情绪分析可以预测即将发生的事件的结果,评估近期产品发布的影响,调整广告活动的方向或内容,等等。

用Python进行情绪分析

我们将使用Twitter的API来获取实时推文,进行情感分析,并将我们的发现可视化。

设置开发环境

使用pip ,安装所需的库。确保你安装了Python 3

pip install tweepy

pip install textblob
 
pip install nltk

你应该有一个Twitter账户。申请一个开发者账户。填写后续步骤中要求的细节。

img

提交申请并等待开发者访问。

获得访问权限后,我们需要创建一个应用程序和API密钥,以便验证和整合大多数Twitter开发者产品。

img

填写所需的细节。忽略你不需要的字段(这些字段用于与Twitter和其他用例进行认证。)

img

转到你的应用程序下的Keys and Tokens 标签,以获得API密钥和API秘钥。(不要与他人分享。)

img

让我们开始吧

让我们开始编码。我们使用一个叫做tweepy的Python库来验证并从Twitter API中获取信息。你也可以使用twitter

import tweepy

access_token = "xxxx"
access_token_secret = "xxxx"
consumer_key = "xxxx"
consumer_secret = "xxxx"

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

Tweepy的API类提供了对整个twitterRESTfulAPI方法的访问。每个方法都可以接受各种参数并返回响应。

我们将使用API.search,它返回与指定查询相匹配的相关tweet的集合。一条原始推文可能包含许多不需要的字符和信息,如表情符号、"@"提及、"#"标签等。这些可能在其他情况下是有用的。

img

query=""
count=""
tweets = api.search(q=query, count=count)
text = []
for i in tweets:
	text.append(i.text)
#we are extracting text and excluding metadata from the tweet
#this method is useful for getting tweets related to a particular topic

我们还可以使用API.mentions_timeline ,以获得您的组织在推特上被提及的最新推文。

接下来,我们在使用情感分析之前对文本进行清理。

import re
text = re.sub('@[A-Za-z0–9]+', '', text)
text = re.sub('#', '', text)
text = re.sub('RT[\s]+', '', text)
text = re.sub('https?:\/\/\S+', '', text)
#removed @mentions, #hastags and URLs

我们将使用TextBlob库来获取文本的情感。

from textblob import TextBlob
text = cleaned_tweet

blob = TextBlob(text)
sentiment = blob.sentiment.polarity
#blob.sentiment returns (polarity,  subjectivity)
#polarity is within the range [-1.0, 1.0]. -1 very negative. 0 neutral. 1 very positive
#The subjectivity is a float within the range [0.0, 1.0] where 0.0 is very objective and 1.0 is very subjective.

TextBlob有Naive-Bayes分类器,我们可以用它来对文本进行分类。

情感分析如何工作

让我们来研究两个语句。

  • 今天是个好日子,我很高兴。
  • 真是个可怕的人。

当我们阅读这些句子时,单词happy,beautiful 描述了句子1的积极性,单词horrible 描述了句子2的消极性。像is,a 这样的词没有表达任何特定的情绪,是中性的。

我们可以有基于规则的系统,根据一组手工制作的规则进行情感分析,或者有依靠机器学习技术从数据中学习的自动系统。这些系统学习哪些词代表积极的情绪,哪些代表消极的情绪。

当然,单词在不同的背景下和对不同的人有不同的含义。因此--我们可以训练一个有监督的机器学习算法来进行情感分析。如果你有兴趣,你可以看看我的代码,我在这里用神经网络实现了情感分析。

样本结果和结论

作为一个用例,我对与JavaScript有关的推文进行了分析。以下是结果。

  • 一个原始推文的例子。

RT @kennyrecruiter: Microsoft has released tutorials on building #Javascript applications using #nodejs. They look good and are easy to fol…

  • 在清理了文本之后

: Microsoft has released tutorials on building Javascript applications using nodejs. They look good and are easy to fol…

  • 我们的算法预测这是1 ,意味着积极。

  • 125条随机推文的情绪。

img

  • 词汇云是用来直观地表示文本中的词汇的,字体越大,一个词的重复程度越高。

没有清洗。

img

有清洗。

img

正如你所看到的,清洗文本是一个非常重要的步骤,因为它使我们能够获得文本试图传达的主要信息。

情感分析对于一个团队来说,以类似的方式找出他们的用户是如何喜欢他们的产品的。

参考资料和资源