使用 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% 的性能),包含以下步驟:
- 預處理: 使用
AutoTokenizer準備文本輸入,並使用DataCollatorWithPadding將樣本轉換為 PyTorch 張量。 - 模型配置: 使用
AutoModelForSequenceClassification將 DistilBERT 的預訓練標頭替換為分類標頭。 - 訓練: 利用
Trainer類別來管理訓練迴圈、學習率和評估指標(例如準確度與 F1 分數)。
在一個使用來自 IMDB 數據集的 3,000 個樣本的範例中,此過程在 GPU 上大約 10 分鐘內達到了 88% 的準確度與 89% 的 F1 分數。
使用 AutoNLP 進行無程式碼訓練
AutoNLP 是一個無需程式碼即可自動訓練、評估和部署 NLP 模型的工具。使用者可以上傳其數據集,映射文本和目標列,然後 AutoNLP 會處理超參數調整和模型選擇。在一個使用 Sentiment140 數據集的 3,000 個樣本的測試案例中,AutoNLP 生成了一個準確度為 77.87% 的模型。
實際應用:分析社群媒體數據
情緒分析可以應用於即時數據流(例如 Twitter),以獲取業務洞察。分析推文的一個實際工作流程包括:
- 數據收集: 使用
Tweepy函式庫與 Twitter API 進行介面連接,並根據特定標籤(例如 #NFTs)提取推文。 - 推理: 透過
pipeline類別應用 Hub 模型,例如finiteautomata/bertweet-base-sentiment-analysis,來標記每條推文。 - 視覺化: 使用
pandas進行數據組織,並使用matplotlib或wordcloud來視覺化情緒分布與關鍵字。
在一個關於 NFT 的 1,000 條推文樣本分析中,結果顯示 56.1% 的對話是正面的,而只有 2.0% 是負面的。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch