【 BERTopic應用 02/3】 分析卡塔爾世界杯推特數據

攝影:Fauzan Saari?on?Unsplash

一、說明

????????這是我們對世界杯推特數據分析的第3部分,我們放棄了。我們將對我們的數據進行情緒分析,以了解人們對卡塔爾世界杯的感受。我將在這里介紹的一個功能強大的工具包是Hugging Face,您可以在其中找到各種模型,任務,數據集,它還為剛開始學習機器學習的人提供課程。在這篇文章中,我們將使用一個情緒分析模型和擁抱面孔令牌來完成我們的任務。

二、情緒分析

? ? ? 情感分析是使用自然語言處理(NLP)來識別,提取和研究情感狀態和主觀信息。我們可以將這種技術應用于客戶評論和調查響應,以對我對產品或服務的意見。

????????讓我們看幾個例子:

  • 我喜歡今天的天氣!標記: 正面
  • 天氣預報說明天會多云。標簽: 中性
  • 雨不會停。野餐計劃被推遲了。無賴。。。標簽: 負面

????????上面的例子清楚地顯示了推文的極性,因為文本的結構很簡單。以下是一些難以輕易發現情緒的挑戰性案例。

  • 我不喜歡下雨天。(否定)
  • 我喜歡在刮風的時候跑步,但不會推薦給我的朋友。(有條件的積極情緒,難以分類)
  • 一杯好咖啡真的需要時間,因為它讓我等了30分鐘才喝一口。(諷刺)

????????現在我們已經介紹了什么是情緒分析以及如何應用這種技術,讓我們學習如何在我們的 Twitter 數據上實現這種方法。

遇見“推特-羅伯塔-基地-情緒-最新"

????????用于情緒分析的 Twitter-roBERTa-base 是一個 RoBERTa-base 模型,從 124 年 2018 月到 2021 年 <> 月在 ~<>M 條推文上訓練,并使用 TweetEval 基準對情緒分析進行了微調。我不會深入探討 RoBERTa-base 模型的細節,但簡單地說,RoBERTa 從預訓練過程中刪除了下一句預測 (NSP) 任務,并引入了動態掩碼,因此掩碼標記在訓練期間會發生變化。對于更詳細的評論,我建議閱讀Suleiman Khan的文章和Chandan Durgia的文章。

????????要啟動此模型,我們可以使用由Hugging Face團隊創建的推理API。推理 API 允許您對 NLP、音頻和計算機視覺中的任務進行文本文本和評估 80, 000 多個機器學習模型。查看此處以獲取詳細文檔。它很容易使用推理API,您只需這樣做即可獲得您的擁抱臉令牌(它是免費的)。首先,您應該創建一個擁抱臉帳戶并注冊。然后,單擊您的個人資料并轉到設置。

轉到訪問令牌,然后單擊新建令牌。創建新令牌時,系統會要求您選擇令牌的角色。
  • 讀取:如果您只需要從擁抱人臉中心讀取內容(例如,在下載私有模型或進行推理時),請使用此角色。
  • 寫入:如果需要創建內容或將內容推送到存儲庫(例如,在訓練模型或修改模型卡時),請使用此令牌。

由作者創建

User access tokens

現在我們有了我們需要的一切,讓我們做一些分析!

三、準備我們的數據

????????首先,我們需要導入一些依賴項并加載數據。對我們擁有的 10, 000 條推文運行情緒分析需要一些時間。出于演示目的,我們將從池中隨機抽取 300 條推文。

import pandas as pd
import pickle
import requests
import randomwith open('world_cup_tweets.pkl', 'rb') as f:data = pickle.load(f)tweets = data.Tweet_processed.to_list()
tweets = random.sample(tweets, 300)

四、運行分析

????????然后我們將語言模型和我們的擁抱臉令牌分別傳遞給變量。

model = "cardiffnlp/twitter-roberta-base-sentiment-latest"
hf_token = "YOUR OWN TOKEN"

????????我們定義了一個采用單個參數的分析函數:數據。此函數將我們的 Twitter 數據轉換為 JSON 格式,其中包含對傳遞給函數的輸入數據的模型推理結果。

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()

????????我們初始化一個空列表,以存儲每條推文的情緒分析結果。我們對列表中的每條推文使用循環。然后我們使用 try-except 塊技術:

  • 對于可以分析的推文,我們調用我們定義的函數分析,將當前推文作為輸入,并從返回的列表中檢索第一個結果。此結果應為字典列表,每個詞典都包含情緒標簽和分數。我們使用內置的 max 函數在情緒結果中查找得分最高的字典。我們將一個新詞典附加到tweets_analysis列表中,其中包含推文及其相應的標簽,其中包含得分最高的情緒。
  • 對于無法分析的推文,我們使用 except 塊,該塊捕獲 try 塊中發生的任何異常并打印錯誤消息。情緒分析功能可能無法分析某些推文,因此包含此塊以處理這些情況。
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 scoretweets_analysis.append({'tweet': tweet, 'sentiment': top_sentiment['label']})except Exception as e:print(e)

????????然后我們可以將數據加載到數據框中并查看一些初步結果。

# Load the data in a dataframe
df = pd.DataFrame(tweets_analysis)# Show a tweet for each sentiment
print("Positive tweet:")
print(df[df['sentiment'] == 'positive']['tweet'].iloc[0])
print("\nNeutral tweet:")
print(df[df['sentiment'] == 'neutral']['tweet'].iloc[0])
print("\nNegative tweet:")
print(df[df['sentiment'] == 'negative']['tweet'].iloc[0])
# Outputs: (edited by author to remove vulgarity)Positive tweet:
Messi, you finally get this World Cup trophy. Happy ending and you are officially called球王  Neutral tweet:
Nicholas the Dolphin picks 2022 World Cup Final winner     Negative tweet:
Yall XXXX and this XXXX world cup omg who XXXX CARESSS

我們還應該使用 groupby 函數來查看樣本中有多少推文是正數或負數。

sentiment_counts = df.groupby(['sentiment']).size()
print(sentiment_counts)# Outputs: 
sentiment
negative     46
neutral      63
positive    166
dtype: int64

既然我們在這里,為什么不使用餅圖來可視化結果:

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="")

由作者創建

似乎大多數人對卡塔爾世界杯感到滿意。偉大!

人們在正面和負面推文中談論什么?我們可以使用詞云來顯示這些組中的關鍵字。

# pip install first if you have not installed wordcloud in your environment from wordcloud import WordCloud
from wordcloud import STOPWORDS# Wordcloud with positive tweets
positive_tweets = df[df['sentiment'] == 'positive']['tweet']
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[df['sentiment'] == 'negative']['tweet']
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()

由作者創建

由作者創建并編輯?

五、總結

????????現在我希望你已經學會了如何在擁抱臉中使用推理 API 對推文進行情感分析。這是一個功能強大的工具,高度適用于各個領域。關注我以獲取更多想法和技術。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37611.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高憶管理:策略:短期利空落地 市場有望企穩回升

高憶管理指出&#xff0c;基于A股商場出資環境分析&#xff0c;尤其是當時商場存量博弈為主的布景下&#xff0c;主張重視以下“21”主線輪動&#xff1a;&#xff08;1&#xff09;國產科技代替立異&#xff1a;電子&#xff08;半導體、消費電子&#xff09;、通信&#xff0…

Vue基本知識

一、vue入門 Vue為前端的框架&#xff0c;免除了原生js的DOM操作。簡化書寫。 基于MVVM的思想&#xff0c;實現數據的雙向綁定&#xff0c;使編程的重點放在數據上。 1、引入vue.js文件 2、定義vue核心對象&#xff0c;定義數據模型 3、編寫視圖 //1、引入vue.js <scr…

關于vue,記錄一次修飾符.stop和.once的使用,以及猜想。

內置指令 | Vue.js 在vue的api里&#xff0c;關于v-on有stop和once兩個事件標簽。 .stop - 調用 event.stopPropagation()。.once - 最多觸發一次處理函數。 原有主要代碼和頁面效果 &#xff08;無stop和once&#xff09;: ...<div class"div" click"di…

激活函數總結(九):Softmax系列激活函數補充(Softmin、Softmax2d、Logsoftmax)

激活函數總結&#xff08;九&#xff09;&#xff1a;Softmax系列激活函數補充 1 引言2 激活函數2.1 Softmin激活函數2.2 Softmax2d激活函數2.3 Logsoftmax激活函數 3. 總結 1 引言 在前面的文章中已經介紹了介紹了一系列激活函數 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、S…

React+Typescript清理項目環境

上文 創建一個 ReactTypescript 項目 我們創建出了一個 React配合Ts開發的項目環境 那么 本文 我們先將環境清理感覺 方便后續開發 我們先來聊一下React的一個目錄結構 跟我們之前開發的React項目還是有一些區別 public 主要是存放一些靜態資源文件 例如 html 圖片 icon之類的 …

響應式設計是什么?怎么學習? - 易智編譯EaseEditing

響應式設計是一種用于創建能夠適應不同設備和屏幕尺寸的網站和應用程序的設計方法。它的目標是確保網站在各種設備上都能提供良好的用戶體驗&#xff0c;無論是在大屏幕的桌面電腦上還是在小屏幕的移動設備上。 在響應式設計中&#xff0c;頁面的布局、字體、圖像和其他元素會…

【yml文件的解釋】

目錄 一、yml的簡介二、手寫yml文件進行配置三、使用yaml格式導出生成模板四、deployment.yaml文件詳解五、Pod yaml文件詳解六、Service yaml文件詳解 一、yml的簡介 Kubernetes 支持 YAML 和 JSON 格式管理資源對象 JSON 格式&#xff1a;主要用于 api 接口之間消息的傳遞 Y…

路由器和交換機的區別

交換機和路由器的區別 交換機實現局域網內點對點通信&#xff0c;路由器實現收集發散&#xff0c;相當于一個獵頭實現的中介的功能 路由器屬于網絡層&#xff0c;可以處理TCP/IP協議&#xff0c;通過IP地址尋址&#xff1b;交換機屬于中繼層&#xff0c;通過MAC地址尋址(列表)…

護眼燈值不值得買?什么護眼燈對眼睛好

想要選好護眼臺燈首先我們要知道什么是護眼臺燈&#xff0c;大的方向來看&#xff0c;護眼臺燈就是可以保護視力的臺燈&#xff0c;深入些講就是具備讓燈發出接近自然光特性的光線&#xff0c;同時光線不會傷害人眼而出現造成眼部不適甚至是視力降低的照明設備。 從細節上看就…

【數據結構】二叉樹篇|『構造二叉樹』刷題

博主簡介&#xff1a;努力學習的22級計算機科學與技術本科生一枚&#x1f338;博主主頁&#xff1a; 是瑤瑤子啦每日一言&#x1f33c;: 所謂自由&#xff0c;不是隨心所欲&#xff0c;而是自我主宰。——康德 目錄 一、前言二、刷題1、最大二叉樹2、從前序與中序遍歷序列構造二…

怎么使用手機遠程控制Win10電腦?

可以使用手機遠程控制電腦嗎&#xff1f; “近期&#xff0c;我將出差一段時間。問題是&#xff0c;我希望能夠從很遠的地方瀏覽家里電腦上的一些東西&#xff0c;但我不會一直隨身攜帶笨重的筆記本電腦。我可以手機遠程訪問Windows電腦嗎&#xff1f; ” 當然&am…

SpringBoot請求響應

簡單參數 1. 原始方式獲取請求參數 Controller方法形參中聲明httpServletRequest對象 調用對象的getParameter參數名 RestController public class RequestController {RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request){Strin…

Pytorch源碼搜索與分析

PyTorch的的代碼主要由C10、ATen、torch三大部分組成的。其中&#xff1a; C10 C10&#xff0c;來自于Caffe Tensor Library的縮寫。這里存放的都是最基礎的Tensor庫的代碼&#xff0c;可以運行在服務端和移動端。PyTorch目前正在將代碼從ATen/core目錄下遷移到C10中。C10的代…

12-數據結構-數組、矩陣、廣義表

數組、矩陣、廣義表 目錄 數組、矩陣、廣義表 一、數組 二.矩陣 三、廣義表 一、數組 這一章節理解基本概念即可。數組要看清其實下標是多少&#xff0c;并且二維數組&#xff0c;存取數據&#xff0c;要先看清楚是按照行存還是按列存&#xff0c;按行則是正常一行一行的去讀…

學習Vue:slot使用

在Vue.js中&#xff0c;組件高級特性之一是插槽&#xff08;Slots&#xff09;。插槽允許您在父組件中插入內容到子組件的特定位置&#xff0c;從而實現更靈活的組件復用和布局控制。本文將詳細介紹插槽的使用方法和優勢。 什么是插槽&#xff1f; 插槽是一種讓父組件可以向子…

AIF360入門教學

1、AIF360簡介 AI Fairness 360 工具包(AIF360)是一個開源軟件工具包&#xff0c;可以幫助檢測和緩解整個AI應用程序生命周期中機器學習模型中的偏見。在整個機器學習的過程中&#xff0c;偏見可能存在于初始訓練數據、創建分類器的算法或分類器所做的預測中。AI Fairness 360…

OPENCV C++(十一)

鼠標響應函數 //鼠標響應函數 void on_mouse(int EVENT, int x, int y, int flags, void* userdata) {Mat hh;hh *(Mat*)userdata;switch (EVENT){case EVENT_LBUTTONDOWN:{vP.x x;vP.y y;drawMarker(hh, vP, Scalar(255, 255, 255));//circle(hh, vP, 4, cvScalar(255, 255…

人工智能在監控系統中的預測與優化:提升效率和響應能力

引言&#xff1a;人工智能的發展給監控系統帶來了新的可能性&#xff0c;通過分析歷史監控數據和其他相關數據&#xff0c;人工智能可以預測未來可能發生的事件&#xff0c;如交通擁堵、安全隱患等&#xff0c;并幫助優化監控系統的配置和資源分配。這種預測和優化的能力可以提…

2023年國賽數學建模思路 - 復盤:校園消費行為分析

文章目錄 0 賽題思路1 賽題背景2 分析目標3 數據說明4 數據預處理5 數據分析5.1 食堂就餐行為分析5.2 學生消費行為分析 建模資料 0 賽題思路 &#xff08;賽題出來以后第一時間在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 賽題背景 校園一卡通是集…

vue3表格,編輯案例

index.vue <script setup> import { onMounted, ref } from "vue"; import Edit from "./components/Edit.vue"; import axios from "axios";// TODO: 列表渲染 const list ref([]); const getList async () > {const res await ax…