到目前為止,我們學過 自動摘要、關鍵詞擷取、主題建模,這些方法能幫助我們理解文章的內容。
然而,在許多應用場景中,除了內容,我們更在乎的是情緒。
例如:
顧客評論:是正面還是負面?
社群留言:是支持還是反對?
股票新聞:市場情緒是樂觀還是悲觀?
這就是情感分析(Sentiment Analysis)的價值。
一、什麼是情感分析?
情感分析是一種自然語言處理(NLP)技術,用來判斷文本的情緒傾向。
常見的分類方式:
二元分類:正面 / 負面
三元分類:正面 / 中性 / 負面
多級分類:例如1~5顆星評分
二、情感分析的方法
基於詞典的方法
使用情感詞典來判斷句子情緒,例如 good, happy → 正面;bad, terrible → 負面。
優點:簡單、直觀。
缺點:難以處理語境與諷刺(例如 "This movie is so bad that it's good")。
機器學習的方法
使用標註好的資料集(正面 / 負面評論),訓練分類模型。
常見演算法:Naive Bayes、SVM、Logistic Regression。
深度學習的方法
使用 RNN、LSTM 或 Transformer(例如 BERT)進行情感分類。
優點:能捕捉上下文與語境。
缺點:需要大量資料與計算資源。
三、Python實作:基於機器學習的情感分析
這裡我們用scikit-learn和簡單的資料來示範:
#安裝套件
#pip install scikit-learn
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
#範例資料
texts = [
"I love this product, it's amazing!",
"This is the worst movie I have ever seen.",
"The food was great and the service was excellent.",
"I am very disappointed, waste of money.",
"It's okay, not too good but not too bad."
]
labels = ["positive", "negative", "positive", "negative", "neutral"]
#向量化
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
#訓練模型(這裡簡化處理,實際應該拆成訓練集與測試集)
model = MultinomialNB()
model.fit(X, labels)
#測試
test_texts = ["The product is really good", "I hate this service"]
X_test = vectorizer.transform(test_texts)
predictions = model.predict(X_test)
print(predictions)
範例輸出:
['positive' 'negative']
可以看到模型已經能判斷情感傾向。
四、應用場景
顧客評論分析:幫助企業快速掌握顧客滿意度。
社群媒體監控:了解群眾對某事件的態度。
金融分析:用新聞與推文情緒預測市場走向。
客服輔助:快速識別顧客是否情緒激動,提供更好應對策略。
認識了情感分析(Sentiment Analysis)
學會了用Python訓練一個簡單的分類器來判斷文本情緒。
這項技術廣泛應用於商業、媒體、金融等領域,是NLP中非常重要的一環。