使用 Python 開始進行情緒分析

情緒分析是一種透過極性(通常是正面、負面或中性)對文本數據進行標記的自動化過程,使公司能夠大規模分析數據並自動化業務流程。透過利用 Hugging Face Hub 和 transformers 函式庫,開發者現在可以用極少的程式碼,且在沒有機器學習經驗的情況下,實現最先進的情緒分析。

使用預訓練模型實作情緒分析

開發者可以使用 transformers 函式庫中的 pipeline 類別將情緒分析整合到 Python 應用程式中。這種方法允許使用託管在 Hugging Face Hub 上的預設或特定模型進行即時預測。

快速實作

整合預設的情緒分析模型僅需五行程式碼:

pip install -q transformers
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["I love you", "I hate you"]
sentiment_pipeline(data)

推薦模型

根據使用案例,來自 Hub 的不同模型可能更合適:

  • Twitter-roberta-base-sentiment: 一個在約 5,800 萬條推文上訓練的 roBERTa 模型。
  • Bert-base-multilingual-uncased-sentiment: 一個針對六種語言(英語、荷蘭語、德語、法語、西班牙語和義大利語)的產品評論進行微調的模型。
  • Distilbert-base-uncased-emotion: 一個旨在檢測特定情緒(如喜悅、悲傷、愛、憤怒、恐懼和驚訝)的模型。

建立自定義情緒分析模型

雖然預訓練模型提供了一個強大的起點,但針對特定領域數據進行模型微調可以提高準確度。Hugging Face 提供兩種主要的自定義路徑:為開發者提供的 Trainer API 以及為尋求無程式碼解決方案的人提供的 AutoNLP。

使用 Trainer API 進行微調

使用 Trainer API 允許開發者使用預訓練模型並透過額外的訓練數據進行調整。例如,在 IMDB 數據集上微調 DistilBERT 模型(其體積比 BERT 小 40% 且速度快 60%,同時保留了超過 95% 的性能),包含以下步驟:

  1. 預處理: 使用 AutoTokenizer 準備文本輸入,並使用 DataCollatorWithPadding 將樣本轉換為 PyTorch 張量。
  2. 模型配置: 使用 AutoModelForSequenceClassification 將 DistilBERT 的預訓練標頭替換為分類標頭。
  3. 訓練: 利用 Trainer 類別來管理訓練迴圈、學習率和評估指標(例如準確度與 F1 分數)。

在一個使用來自 IMDB 數據集的 3,000 個樣本的範例中,此過程在 GPU 上大約 10 分鐘內達到了 88% 的準確度與 89% 的 F1 分數。

使用 AutoNLP 進行無程式碼訓練

AutoNLP 是一個無需程式碼即可自動訓練、評估和部署 NLP 模型的工具。使用者可以上傳其數據集,映射文本和目標列,然後 AutoNLP 會處理超參數調整和模型選擇。在一個使用 Sentiment140 數據集的 3,000 個樣本的測試案例中,AutoNLP 生成了一個準確度為 77.87% 的模型。

實際應用:分析社群媒體數據

情緒分析可以應用於即時數據流(例如 Twitter),以獲取業務洞察。分析推文的一個實際工作流程包括:

  1. 數據收集: 使用 Tweepy 函式庫與 Twitter API 進行介面連接,並根據特定標籤(例如 #NFTs)提取推文。
  2. 推理: 透過 pipeline 類別應用 Hub 模型,例如 finiteautomata/bertweet-base-sentiment-analysis,來標記每條推文。
  3. 視覺化: 使用 pandas 進行數據組織,並使用 matplotlibwordcloud 來視覺化情緒分布與關鍵字。

在一個關於 NFT 的 1,000 條推文樣本分析中,結果顯示 56.1% 的對話是正面的,而只有 2.0% 是負面的。

Sources

相關