Twitter 情感分析入门
情感分析是一种自动分类文本数据极性的过程,如正面、负面和中立。公司利用推文的情感分析来了解客户如何谈论他们的产品和服务,获取洞察力以推动业务决策,并及早发现产品问题和潜在的公关危机。
在本指南中,我们将涵盖您开始进行Twitter情感分析所需学习的一切。我们将分享一个分步过程,适用于编码人员和非编码人员的情感分析。如果您是编码人员,您将学习如何使用推理API,这是一个即插即用的机器学习API,只需几行代码即可大规模进行推文情感分析。如果您不知道如何编写代码,请不要担心!我们还将介绍如何使用Zapier进行情感分析,Zapier是一个无代码工具,它将使您能够收集推文,使用推理API分析它们,最后将结果发送到Google表格⚡️
请继续阅读,或跳转到您感兴趣的章节🌟
系好安全带,尽情享受吧!🤗
什么是情感分析?
情感分析利用机器学习自动识别人们如何谈论某个特定话题。情感分析最常见的用途是检测文本数据的极性,即自动识别一条推文、产品评论或支持工单是积极、消极还是中立地谈论某个事物。
例如,让我们看看一些提到@Salesforce的推文,并看看它们如何被情感分析模型标记
“我用@salesforce越久越不喜欢它。它很慢,bug很多。用户界面的一些元素看起来像是2006年以来就没有更新过。当前遇到的问题:应用程序交易页面每10秒就会刷新一次。”——>这条推文将被标记为“负面”。
“这就是我喜欢@salesforce的地方。它关乎人际关系,关乎对人的关怀,而不仅仅关乎商业和金钱。感谢您关爱#TrailblazerCommunity”——>相比之下,这条推文将被归类为“正面”。
“回家了:#Dreamforce 重返旧金山,庆祝20周年。了解更多:http://bit.ly/3AgwO0H via @Salesforce”——>最后,这条推文将被标记为“中性”,因为它不包含观点或极性。
直到最近,分析提及某个品牌、产品或服务的推文仍然是一个非常手动、困难且繁琐的过程;它需要有人手动查看相关推文,并根据其情感进行阅读和标记。正如您所能想象的,这不仅无法扩展,而且成本高昂且耗时,同时也很容易出现人为错误。
幸运的是,人工智能的最新进展使得公司能够使用与人类一样优秀的情感分析机器学习模型。通过使用机器学习,公司可以全天候实时分析推文,大规模地在几秒钟内分析数千条推文,更重要的是,在需要时获取他们正在寻找的洞察力。
为什么要在Twitter上进行情感分析?公司将此用于各种用例,但最常见的两个用例是分析用户反馈和监控提及以尽早发现潜在问题。
分析Twitter上的反馈
倾听客户是发现如何改进产品或服务的关键。尽管有多种反馈来源,如调查或公开评论,但Twitter提供了关于您的受众对您的产品或服务的看法,未经筛选的原始反馈。
通过分析人们在Twitter上如何谈论您的品牌,您可以了解他们是否喜欢您刚刚发布的新功能。您还可以了解您的定价对于目标受众是否清晰。您还可以查看您的产品或服务哪些方面最受喜爱和最不受喜爱,以便做出业务决策(例如,客户喜欢用户界面的简洁性,但讨厌客户支持的速度慢)。
监控推文提及以发现问题
Twitter已成为分享糟糕客户体验和在使用产品或服务时出现问题时表达不满的默认方式。这就是为什么公司会监控用户在Twitter上提及他们品牌的方式,以便及早发现任何问题。
通过实施一个实时分析传入提及的情感分析模型,您可以自动收到负面提及突然激增的警报。大多数情况下,这都是由于需要尽快解决的正在进行的问题(例如,应用程序因服务器中断而无法工作,或与客户支持代表的体验非常糟糕)。
现在我们已经介绍了什么是情感分析以及它为何有用,让我们动手实践,真正地对推文进行情感分析吧!💥
如何用代码进行Twitter情感分析?
如今,在Twitter上开始进行情感分析变得非常简单直接🙌
只需几行代码,您就可以自动获取推文,运行情感分析并可视化结果。而且您只需几分钟即可学会所有这些操作!
在本节中,我们将向您展示如何通过一个很酷的小项目来实现它:我们将对提及Notion的推文进行情感分析!
首先,您将使用Tweepy,一个开源的Python库,通过Twitter API获取提及@NotionHQ的推文。然后您将使用推理API进行情感分析。一旦您获得情感分析结果,您将创建一些图表来可视化结果并发现一些有趣的见解。
您可以使用此Google Colab笔记本来遵循本教程。
让我们开始吧!💪
- 安装依赖
第一步,您需要安装所需的依赖项。您将使用Tweepy来收集推文,Matplotlib来构建一些图表,以及WordCloud来构建最常用关键词的可视化效果。
!pip install -q transformers tweepy matplotlib wordcloud
- 设置Twitter凭据
然后,您需要设置Twitter API凭据,以便您可以使用Twitter进行身份验证,然后通过其API自动收集推文。
import tweepy
# Add Twitter API key and secret
consumer_key = "XXXXXX"
consumer_secret = "XXXXXX"
# Handling authentication with Twitter
auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)
# Create a wrapper for the Twitter API
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
- 使用Tweepy搜索推文
现在您已准备好开始从Twitter收集数据了!🎉 您将使用Tweepy Cursor自动收集1,000条提及Notion的推文。
# Helper function for handling pagination in our search and handle rate limits
def limit_handled(cursor):
while True:
try:
yield cursor.next()
except tweepy.RateLimitError:
print('Reached rate limite. Sleeping for >15 minutes')
time.sleep(15 * 61)
except StopIteration:
break
# Define the term you will be using for searching tweets
query = '@NotionHQ'
query = query + ' -filter:retweets'
# Define how many tweets to get from the Twitter API
count = 1000
# Search for tweets using Tweepy
search = limit_handled(tweepy.Cursor(api.search,
q=query,
tweet_mode='extended',
lang='en',
result_type="recent").items(count))
# Process the results from the search using Tweepy
tweets = []
for result in search:
tweet_content = result.full_text
tweets.append(tweet_content) # Only saving the tweet content.
- 使用情感分析推文
现在你有了数据,你已经准备好用情感分析来分析推文了!💥
您将使用推理API,这是一个易于使用的API,可通过简单的API调用集成机器学习模型。使用推理API,您可以使用最先进的情感分析模型,而无需费力地构建机器学习基础设施或处理模型可扩展性。您可以部署最新(最棒!)的开源情感分析模型,同时无需进行MLOps。🤩
要使用推理API,首先您需要定义您的`model id`和您的`Hugging Face API Token`
`模型ID`用于指定您要用于预测的模型。Hugging Face拥有超过400个多语言情感分析模型,包括专门为推文情感分析进行微调的各种模型。对于本教程,您将使用twitter-roberta-base-sentiment-latest,这是一个在约1.24亿条推文上训练并为情感分析进行微调的情感分析模型。
model = "cardiffnlp/twitter-roberta-base-sentiment-latest"
hf_token = "XXXXXX"
接下来,您将使用`model id`和`hf_token`创建API调用
API_URL = "https://api-inference.huggingface.co/models/" + model
headers = {"Authorization": "Bearer %s" % (hf_token)}
def analysis(data):
payload = dict(inputs=data, options=dict(wait_for_model=True))
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
现在,您已准备好对每条推文进行情感分析。🔥🔥🔥
tweets_analysis = []
for tweet in tweets:
try:
sentiment_result = analysis(tweet)[0]
top_sentiment = max(sentiment_result, key=lambda x: x['score']) # Get the sentiment with the higher score
tweets_analysis.append({'tweet': tweet, 'sentiment': top_sentiment['label']})
except Exception as e:
print(e)
- 探索情感分析结果
想知道Twitter上的人们是积极还是消极地谈论Notion?或者用户在积极或消极谈论Notion时讨论了什么?我们将使用一些数据可视化来探索情感分析的结果并找出一些有趣的见解!
首先,让我们看一些被标记为每种情感的推文示例,以了解这些推文的不同极性
import pandas as pd
# Load the data in a dataframe
pd.set_option('max_colwidth', None)
pd.set_option('display.width', 3000)
df = pd.DataFrame(tweets_analysis)
# Show a tweet for each sentiment
display(df[df["sentiment"] == 'Positive'].head(1))
display(df[df["sentiment"] == 'Neutral'].head(1))
display(df[df["sentiment"] == 'Negative'].head(1))
结果
@thenotionbar @hypefury @NotionHQ That’s genuinely smart. So basically you’ve setup your posting queue to by a recurrent recycling of top content that runs 100% automatic? Sentiment: Positive
@itskeeplearning @NotionHQ How you've linked gallery cards? Sentiment: Neutral
@NotionHQ Running into an issue here recently were content is not showing on on web but still in the app. This happens for all of our pages. https://#/3J3AnGzDau. Sentiment: Negative
接下来,您将统计被标记为积极、消极和中性的推文数量
sentiment_counts = df.groupby(['sentiment']).size()
print(sentiment_counts)
值得注意的是,关于Notion的大部分推文都是正面的。
sentiment
Negative 82
Neutral 420
Positive 498
然后,我们创建一个饼图来以相对方式可视化每种情感
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6,6), dpi=100)
ax = plt.subplot(111)
sentiment_counts.plot.pie(ax=ax, autopct='%1.1f%%', startangle=270, fontsize=12, label="")
令人欣慰的是,所有推文中有50%是正面的,而只有8.2%是负面的。
最后一步,让我们创建一些词云来查看每种情感最常用的词。
from wordcloud import WordCloud
from wordcloud import STOPWORDS
# Wordcloud with positive tweets
positive_tweets = df['tweet'][df["sentiment"] == 'Positive']
stop_words = ["https", "co", "RT"] + list(STOPWORDS)
positive_wordcloud = WordCloud(max_font_size=50, max_words=50, background_color="white", stopwords = stop_words).generate(str(positive_tweets))
plt.figure()
plt.title("Positive Tweets - Wordcloud")
plt.imshow(positive_wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# Wordcloud with negative tweets
negative_tweets = df['tweet'][df["sentiment"] == 'Negative']
stop_words = ["https", "co", "RT"] + list(STOPWORDS)
negative_wordcloud = WordCloud(max_font_size=50, max_words=50, background_color="white", stopwords = stop_words).generate(str(negative_tweets))
plt.figure()
plt.title("Negative Tweets - Wordcloud")
plt.imshow(negative_wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
奇怪的是,在正面推文中,一些突出显示的词包括“notes”、“cron”和“paid”。
相反,“figma”、“enterprise”和“account”是负面推文中一些最常用的词。
那很有趣,对吧?
只需几行代码,您就可以使用Tweepy自动收集提及Notion的推文,使用推理API通过情感分析模型对其进行分析,最后创建一些可视化来分析结果。💥
您有兴趣做更多吗?下一步,您可以使用第二个文本分类器按主题或话题对每条推文进行分类。这样,每条推文都将同时标记情感和话题,您可以获得更细致的见解(例如,用户是在称赞Notion易用性,还是在抱怨其定价或客户支持?)。
如何在不编写代码的情况下进行Twitter情感分析?
要开始进行情感分析,您不需要成为开发人员或了解如何编写代码。🤯
有一些很棒的无代码解决方案,可以帮助您在几分钟内轻松完成情感分析。
在本节中,您将使用Zapier,一个无代码工具,允许用户通过易于使用的界面连接5,000多个应用程序。您将创建一个Zap,当有人在Twitter上提及Notion时触发。然后Zap将使用推理API分析推文的情感,最后将结果保存到Google表格中。
- 步骤1(触发器):获取推文。
- 步骤2:通过情感分析推文。
- 步骤3:将结果保存到Google表格。
别担心,这不会花费太多时间;在不到10分钟的时间内,您将创建并激活zap,并开始在Google表格中看到情感分析结果。
让我们开始吧!🚀
步骤1:获取推文
首先,您需要创建一个Zap,并配置Zap的第一步,也称为“触发器”步骤。在您的情况下,您需要将其设置为在有人在Twitter上提及Notion时触发Zap。要进行设置,请遵循以下步骤:
- 首先选择“Twitter”,然后在“选择应用和事件”中选择“搜索提及”作为事件。
- 然后将您的Twitter账户连接到Zapier。
- 将“NotionHQ”设置为此触发器的搜索词,以设置触发器。
- 最后测试触发器,确保它能收集推文并正常运行。
步骤2:通过情感分析推文
现在你的Zap可以收集提及Notion的推文了,让我们添加第二步来进行情感分析。🤗
您将使用推理API,这是一个易于使用的机器学习模型集成API。要使用推理API,您需要定义您的“模型ID”和“Hugging Face API令牌”。
`模型ID`用于告知推理API您想使用哪个模型进行预测。本指南中,您将使用twitter-roberta-base-sentiment-latest,这是一个在约1.24亿条推文上训练并为情感分析进行微调的情感分析模型。如果您想使用不同的模型(例如,对不同语言的推文进行情感分析),您可以探索Hugging Face Hub上可用的400多个情感分析模型。
获取模型ID和Hugging Face令牌ID后,返回Zap并按照以下说明设置Zap的第二步。
- 首先选择“Zapier代码”,然后在“选择应用程序和事件”中选择“运行python”。
- 在“设置动作”中,您首先需要将推文的“完整文本”添加为“input_data”。然后您需要将这28行python代码添加到“代码”部分。此代码将允许Zap调用推理API并进行情感分析预测。在将此代码添加到您的Zap之前,请确保您执行以下操作:
- 更改第5行并添加您的Hugging Face令牌,即,将`hf_token = "ADD_YOUR_HUGGING_FACE_TOKEN_HERE"`更改为类似`hf_token = "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"`。
- 如果您想使用不同的情感分析模型,您需要更改第4行并在此处指定新模型的ID。例如,您可以通过将此行`model = "cardiffnlp/twitter-roberta-base-sentiment-latest"`更改为`model = "finiteautomata/beto-sentiment-analysis"`来使用此模型对西班牙语推文进行情感分析。
- 最后,测试此步骤以确保它能进行预测并正确运行。
步骤3:将结果保存到Google表格
作为Zap的最后一步,您会将情感分析的结果保存到Google表格中的电子表格,并可视化结果。📊
首先,在Google表格中创建一个新的电子表格,并定义以下列:
- 推文:此列将包含推文的文本。
- 情感:将包含情感分析结果的标签(例如,正面、负面和中立)。
- 分数:将存储反映模型预测置信度的值。
- 日期:将包含推文的日期(这对于随着时间创建图表很有用)。
然后,按照以下说明配置最后一步:
- 选择Google表格作为应用,并在“选择应用和事件”中选择“创建电子表格行”作为事件。
- 然后将您的Google表格账户连接到Zapier。
- 接下来,您需要设置操作。首先,您需要指定Google Drive的值(例如,我的云端硬盘),然后选择电子表格,最后选择您希望Zapier自动写入新行的工作表。完成此操作后,您需要将电子表格中的每一列映射到您希望在Zap自动写入新行时使用的值。如果您已创建我们之前建议的列,则会如下所示(列 → 值):
- 推文 → 完整文本(来自zap第1步的值)
- 情感 → 情感标签(来自步骤2的值)
- 情感分数 → 情感分数(来自步骤2的值)
- 日期 → 创建时间(来自步骤1的值)
- 最后,测试这最后一步,确保它可以在您的电子表格中添加新行。确认其正常工作后,您可以删除电子表格中的这一行。
4. 开启您的Zap
至此,您已完成Zap的所有步骤!🔥
现在,您只需开启它,它就可以开始收集推文,进行情感分析,并将结果存储在Google表格中。⚡️
要开启它,只需点击屏幕底部的“发布”按钮。
几分钟后,您将看到您的电子表格开始填充推文和情感分析结果。您还可以创建一个图表,该图表可以随着推文的传入而实时更新。
超酷,对吧?🚀
总结
Twitter是一个公共的市政厅,人们在这里分享他们对各种话题的看法。从谈论政治、体育或科技的人,到分享对新奇应用反馈的用户,再到抱怨航班取消的乘客对航空公司的不满,Twitter上的数据量是巨大的。情感分析可以实时理解所有这些数据,以发现能够推动业务决策的洞察力。
幸运的是,像推理API这样的工具让Twitter上的情感分析变得超级简单。无论您是否会编程,也无论您是否具有机器学习经验,在几分钟内,您都可以建立一个能够实时收集推文、使用最先进的情感分析模型对其进行分析,并通过一些酷炫的可视化探索结果的过程。🔥🔥🔥
如果您有任何问题,可以在Hugging Face论坛提问,这样Hugging Face社区可以帮助您,其他人也可以从讨论中受益。您也可以加入我们的Discord服务器,与我们和整个Hugging Face社区交流。