Press "Enter" to skip to content

在Twitter上开始进行情感分析

情感分析是根据文字数据的极性(如正面、负面和中性)自动分类的过程。公司利用推文的情感分析来了解客户对其产品和服务的讨论情况,获得洞察力以推动业务决策,并及早发现产品问题和潜在的公关危机。

在本指南中,我们将介绍一切您需要学习的内容,以在Twitter上开始进行情感分析。我们将分享一种逐步进行情感分析的过程,适用于编码人员和非编码人员。如果您是编码人员,您将学习如何使用推断API,这是一个即插即用的机器学习API,可在几行代码中对推文进行情感分析。如果您不会编码,不用担心!我们还将介绍如何使用Zapier进行情感分析,这是一个无代码工具,可以帮助您收集推文,使用推断API对其进行分析,最后将结果发送到Google Sheets⚡️

跟随教程或者直接跳到您感兴趣的部分:

  1. 什么是情感分析?
  2. 如何使用代码进行Twitter情感分析?
  3. 如何在不编写代码的情况下进行Twitter情感分析?

准备好了吗?开始享受这段旅程吧!🤗

什么是情感分析?

情感分析使用机器学习自动识别人们对特定主题的讨论方式。情感分析最常见的用途是检测文本数据的极性,即自动确定推文、产品评论或支持票据是否对某个事物持积极、消极或中立的态度。

举个例子,让我们看一些提到 @Salesforce 的推文,并看看它们如何被情感分析模型标记:

  • “我使用 @salesforce 的时间越长,越讨厌它。它很慢,充满了错误。界面上的一些元素看起来好像自从2006年以来都没有更新过。目前的困扰是应用程序交换页面每隔10秒就会刷新” –> 这条推文将被标记为”负面”。

  • “这就是我喜欢 @salesforce 的原因。它关注关系,关心人们,不仅仅是业务和金钱。感谢您关心 #TrailblazerCommunity” –> 相比之下,这条推文将被分类为”积极”。

  • “回家了:#Dreamforce 第20周年重返旧金山。了解更多信息:http://bit.ly/3AgwO0H via @Salesforce” –> 最后,这条推文将被标记为”中立”,因为它不包含任何意见或极性。

直到最近,分析提到品牌、产品或服务的推文是一项非常手动、艰难和繁琐的过程;需要有人手动查看相关推文,并根据它们的情感进行标记。可以想象,不仅这种方法不可扩展,而且昂贵且非常耗时,而且容易出错。

幸运的是,人工智能领域的最新进展使得公司能够使用机器学习模型进行与人类一样出色的推文情感分析。通过使用机器学习,公司可以实时、全天候地分析推文,进行大规模分析,几秒钟内分析成千上万条推文,并且更重要的是,在需要时获得所需的洞察力。

为什么要在Twitter上进行情感分析?公司使用情感分析有各种各样的用途,但最常见的两种用途是分析用户反馈和监控提及以及早发现潜在问题。

分析Twitter上的反馈

倾听客户对于检测如何改进产品或服务的见解至关重要。尽管有多种反馈来源,例如调查或公开评论,但Twitter提供了关于您的产品或服务的原始、未经过滤的反馈。

通过分析人们在Twitter上如何谈论您的品牌,您可以了解他们是否喜欢您刚推出的新功能。您还可以了解您的定价是否对目标受众清晰。您还可以查看您的产品或服务中最受欢迎和最不受欢迎的方面,以做出业务决策(例如,客户喜欢用户界面的简洁性,但讨厌客户支持的响应速度慢)。

监控Twitter提及以便检测问题

Twitter已成为分享糟糕的客户体验和表达对产品或服务出现问题时的挫折的默认方式。这就是为什么公司会监控用户在Twitter上提到他们的品牌以及早发现任何问题。

通过实现一个实时分析提及的情感分析模型,您可以自动收到关于负面提及突然上升的警报。大多数情况下,这是由持续发生的情况引起的,需要尽快解决(例如由于服务器故障导致应用程序无法工作,或与客户支持代表的非常糟糕的经历)。

现在我们已经讨论了什么是情感分析以及为什么它有用,让我们动手实际进行推文的情感分析!💥

如何使用代码进行推特情感分析?

如今,在推特上开始进行情感分析非常容易和直接 🙌

只需几行代码,您就可以自动获取推文,运行情感分析并可视化结果。您只需几分钟就可以学会如何做到这些!

在本节中,我们将向您展示如何使用一个很酷的小项目:我们将对提及Notion的推文进行情感分析!

首先,您将使用Tweepy,这是一个开源的Python库,使用Twitter API 获取提及 @NotionHQ 的推文。然后,您将使用推理API进行情感分析。获得情感分析结果后,您将创建一些图表来可视化结果并发现一些有趣的见解。

您可以使用此Google Colab笔记本来按照本教程进行操作。

让我们开始吧!💪

  1. 安装依赖项

首先,您需要安装所需的依赖项。您将使用Tweepy来收集推文,使用Matplotlib来构建一些图表,使用WordCloud来构建一个可视化结果中最常见关键字的可视化效果:

!pip install -q transformers tweepy matplotlib wordcloud
  1. 设置Twitter凭据

然后,您需要设置Twitter API凭据,以便您可以使用它们进行身份验证,并使用其API自动获取推文:

import tweepy
 
# 添加Twitter API密钥和密钥
consumer_key = "XXXXXX"
consumer_secret = "XXXXXX"
 
# 使用Twitter进行身份验证
auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)
 
# 创建Twitter API的包装器
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
  1. 使用Tweepy搜索推文

现在您已经准备好从Twitter收集数据了!🎉您将使用Tweepy Cursor自动收集提及Notion的1000条推文:

# 用于处理搜索分页和处理速率限制的辅助函数
def limit_handled(cursor):
    while True:
        try:
            yield cursor.next()
        except tweepy.RateLimitError:
            print('已达到速率限制。等待>15分钟')
            time.sleep(15 * 61)
        except StopIteration:
            break
 
# 定义要用于搜索推文的术语
query = '@NotionHQ'
query = query + ' -filter:retweets'
 
# 定义从Twitter API获取多少条推文
count = 1000
 
# 使用Tweepy搜索推文
search = limit_handled(tweepy.Cursor(api.search,
                       q=query,
                       tweet_mode='extended',
                       lang='en',
                       result_type="recent").items(count))
 
# 使用Tweepy处理搜索结果
tweets = []
for result in search:
    tweet_content = result.full_text
    tweets.append(tweet_content) # 仅保存推文内容。
  1. 使用情感分析分析推文

现在您已经有了数据,可以使用情感分析对推文进行分析了!💥

您将使用推理API,这是一个易于使用的API,可以通过简单的API调用集成机器学习模型。借助推理API,您可以使用最先进的情感分析模型,而无需为机器学习构建基础架构或处理模型的可扩展性而烦恼。您可以提供最新(和最棒!)的用于情感分析的开源模型,同时避免MLOps。🤩

要使用推理API,首先需要定义您的模型IDHugging Face API令牌

  • 模型ID用于指定要用于进行预测的模型。Hugging Face有400多个用于情感分析的模型,支持多种语言,包括专门针对推特情感分析进行微调的各种模型。对于本教程,您将使用twitter-roberta-base-sentiment-latest,这是一个在约1.24亿条推文上进行训练并针对情感分析进行微调的情感分析模型。

  • 您还需要指定您的Hugging Face令牌;您可以在这里免费注册并复制您的令牌。

model = "cardiffnlp/twitter-roberta-base-sentiment-latest"
hf_token = "XXXXXX" 

接下来,您将使用模型idhf_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']) # 获取得分较高的情感
        tweets_analysis.append({'tweet': tweet, 'sentiment': top_sentiment['label']})
 
    except Exception as e:
        print(e)
  1. 探索情感分析结果

想知道Twitter上的人是积极还是消极地谈论Notion吗?或者在谈论Notion时用户讨论了什么?我们将使用一些数据可视化来探索情感分析的结果并找出答案!

首先,让我们看一下每种情感标记的推文示例,以对这些推文的不同极性有一个了解:

import pandas as pd
 
# 将数据加载到数据框中
pd.set_option('max_colwidth', None)
pd.set_option('display.width', 3000)
df = pd.DataFrame(tweets_analysis)
 
# 显示每种情感的一条推文
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://t.co/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%是消极的:

提及Notion的推文的情感分析结果

最后,让我们创建一些词云来看看每种情感中使用最多的词语:

from wordcloud import WordCloud
from wordcloud import STOPWORDS
 
# 积极推文的词云
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()
 
# 消极推文的词云
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()

好奇的是,一些在积极的推文中突出的词包括“笔记”、“定时任务”和“付费”:

积极推文的词云

相比之下,“figma”、“企业”和“账户”是负面推文中使用最多的词:

负面推文的词云

这很有趣,不是吗?

仅仅几行代码,您就能够通过使用Tweepy自动收集提及Notion的推文,使用Inference API进行情感分析,并最终创建一些可视化结果进行分析。💥

您有兴趣做更多吗?作为下一步,您可以使用第二个文本分类器根据主题或话题对每个推文进行分类。这样,每个推文将被标记为情感和主题,您可以获得更详细的见解(例如,用户是否称赞Notion易于使用,但抱怨其定价或客户支持?)。

如何在不编写代码的情况下进行Twitter情感分析?

要开始进行情感分析,您不需要成为开发人员或了解如何编写代码。🤯

有一些令人惊叹的无代码解决方案,可以让您在几分钟内轻松进行情感分析。

在本部分中,您将使用Zapier,这是一个无代码工具,可以通过易于使用的用户界面连接5000多个应用程序。您将创建一个Zap,当有人在Twitter上提到Notion时触发。然后,Zap将使用Inference API对推文进行情感分析,并最终将结果保存在Google Sheets中:

  1. 第1步(触发器):获取推文。
  2. 第2步:使用情感分析分析推文。
  3. 第3步:将结果保存在Google Sheets中。

别担心,这不会花费太多时间;在不到10分钟的时间内,您将创建并激活Zap,并开始在Google Sheets中看到情感分析结果。

让我们开始吧!🚀

第1步:获取推文

要开始,您需要创建一个Zap,并配置Zap的第一步,也称为“触发器”步骤。在您的情况下,您需要设置它,以便每当有人在Twitter上提到Notion时触发Zap。要进行设置,请按照以下步骤进行:

  • 首先选择“Twitter”,并在“选择应用程序和事件”上选择“搜索提及”作为事件。
  • 然后将您的Twitter帐户连接到Zapier。
  • 设置触发器,指定“NotionHQ”作为此触发器的搜索词。
  • 最后测试触发器,确保它能够收集推文并正确运行。

Zap的第1步

第2步:使用情感分析分析推文

现在,您的Zap可以收集提及Notion的推文了,让我们添加第二步进行情感分析。🤗

您将使用Inference API,这是一个易于使用的用于集成机器学习模型的API。要使用Inference API,您将需要定义您的“模型ID”和您的“Hugging Face API令牌”:

  • “模型ID”用于告诉Inference API您要使用哪个模型进行预测。对于本指南,您将使用twitter-roberta-base-sentiment-latest,这是一个在≈1.24亿条推文上进行训练并针对情感分析进行微调的情感分析模型。您可以在Hugging Face Hub上探索400多个用于情感分析的模型,以便在需要使用不同模型(例如在不同语言上进行情感分析)时使用。

  • 您还需要指定您的“Hugging Face令牌”;您可以在此处免费注册并在此页面上复制您的令牌。

一旦您获得了模型ID和Hugging Face令牌ID,请返回到您的Zap,并按照以下说明设置zap的第二步:

  1. 首先选择“Code by Zapier”和“Run python”在“选择应用程序和事件”中。
  2. 在“设置操作”中,您需要将推文“全文”添加为“input_data”。然后,您需要将下面的28行Python代码添加到“代码”部分。此代码将使Zap能够调用Inference 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. 最后,测试此步骤,确保它进行预测并正确运行。

在Zap上的第2步

第3步:将结果保存在Google Sheets上

作为Zap的最后一步,您将会将情感分析的结果保存在Google Sheets的电子表格上,并可视化结果。📊

首先,在Google Sheets上创建一个新的电子表格,并定义以下列:

  • 推文:此列将包含推文的文本。
  • 情感:将包含情感分析结果的标签(例如:积极、消极和中性)。
  • 得分:将存储反映模型预测信心程度的值。
  • 日期:将包含推文的日期(可用于创建随时间变化的图表和图表)。

然后,按照以下说明配置此最后一步:

  1. 选择Google Sheets作为应用程序,并在“选择应用程序和事件”中选择“创建电子表格行”作为事件。
  2. 然后将您的Google Sheets帐户连接到Zapier。
  3. 接下来,您需要设置操作。首先,您需要指定Google Drive的值(例如:我的驱动器),然后选择电子表格,最后选择Zapier要自动写入新行的工作表。完成后,您需要将电子表格上的每一列与在Zap自动写入新行时要使用的值进行映射。如果您已按照我们之前建议的创建了这些列,这将如下所示(列→值):
    • 推文 → 全文(来自zap的第1步的值)
    • 情感 → 情感标签(来自第2步的值)
    • 情感得分 → 情感得分(来自第2步的值)
    • 日期 → 创建时间(来自第1步的值)
  4. 最后,测试此最后一步,确保它可以向您的电子表格添加新行。确认它能正常工作后,您可以在电子表格中删除此行。

Zap上的第3步

4. 打开您的Zap

此时,您已经完成了Zap的所有步骤!🔥

现在,您只需要打开它,这样它就可以开始收集推文,进行情感分析,并将结果存储在Google Sheets上。⚡️

要打开它,只需点击屏幕底部的“发布”按钮:

打开Zap

几分钟后,您将看到您的电子表格开始填充推文和情感分析结果。您还可以创建一个随推文实时更新的图表:

推文在Google Sheets上弹出

非常酷,对吧?🚀

总结

Twitter是人们分享各种话题观点的公共广场。从人们谈论政治、体育或科技,用户分享对新闪亮应用的反馈,或乘客向航空公司投诉取消的航班,Twitter上的数据量是巨大的。情感分析可以实时理解所有这些数据,揭示出可以推动业务决策的洞察。

幸运的是,像Inference API这样的工具使得在Twitter上进行情感分析变得非常简单。无论您是否了解编码和/或是否具有机器学习经验,在几分钟内,您都可以设置一个可以实时收集推文、使用最先进的情感分析模型对其进行分析并通过一些酷炫的可视化探索结果的过程。🔥🔥🔥

如果您有问题,可以在Hugging Face论坛上提问,Hugging Face社区会帮助您并让其他人从中受益。您还可以加入我们的Discord服务器与我们和整个Hugging Face社区交流。

Leave a Reply

Your email address will not be published. Required fields are marked *