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社群交流。