M07.02|文本分類與情緒分析:AI 讀懂客戶心聲
一萬則客戶留言,AI 三分鐘就能告訴你哪些在抱怨
本講學習重點
文本分類:把文字分入預定義類別(垃圾郵件/正常、正面/負面、主題分類)
詞袋(BoW):計算詞頻,忽略語序;TF-IDF:加權減少常見詞的影響
詞嵌入(Word2Vec, GloVe):詞的語意向量,相似詞距離接近
BERT:雙向 Transformer,預訓練後微調,同一詞在不同語境有不同向量
二元情緒(正/負)→ 細粒度(1–5 星)→ 面向情緒(哪個面向正/負)
台灣挑戰:繁簡差異、台語夾雜、反諷、表情符號語意
零樣本分類:用 LLM 不需要標注資料就能做初步分類
🎙️ Podcast(中文)
一句話搞懂
文本分類就是「幫每一段文字貼標籤」——情緒分析則是讓 AI 判斷文字的情感傾向,兩者合起來能讓企業自動從海量客戶留言中找出正面口碑和負面投訴,比人工審閱快上百倍。
白話解說
每天湧入的文字資料,人工根本看不完
一家中型電商平台每天收到大約五千則商品評論、三百封客服 Email、以及來自 Facebook、Instagram、PTT 的上千則品牌提及。如果要全靠人工閱讀、分類、找出問題,至少需要配置十名全職分析師。但即使如此,人工分析也有嚴重的時差:今天的負評可能要到明天才被發現,而一個危機在社群媒體上擴散的速度,往往以分鐘計。
文本分類(Text Classification) 就是解決這個問題的核心技術:訓練一個 AI 模型,自動把每一段輸入文字分配到預先定義好的類別,速度是人類的數百倍,且 24 小時不間斷運作。最常見的應用包括:垃圾郵件分類(正常/垃圾)、客訴工單路由(退款/技術問題/詢問庫存)、新聞主題分類(財經/政治/娛樂/體育),以及本講的重點——情緒分析(Sentiment Analysis)。
從「數詞頻」到「理解語意」:特徵表示的演進
文本分類的核心問題是:文字無法直接送入數學模型,必須先轉換成數值向量。不同的轉換方法,決定了模型能「理解」多少資訊。
最早期的方法是詞袋模型(Bag of Words, BoW):把文章想像成一個袋子,裡面裝著所有出現過的詞,只計算每個詞出現幾次,完全忽略語序。例如「我愛台灣,台灣愛我」和「台灣我愛,愛我台灣」在詞袋模型眼中是完全相同的。BoW 搭配 TF-IDF(詞頻-逆文件頻率)加權後,能降低「的」「是」等常見詞的影響,提升「台積電」「毛利率」等關鍵詞的權重,在許多基礎分類任務上仍然有效。
第二個時代是詞嵌入(Word Embedding),代表技術是 Word2Vec(2013)和 GloVe。這些方法讓每個詞用一個稠密的向量(通常 100–300 維)表示,使得語意相似的詞在向量空間中距離接近:「台北」和「高雄」的向量比「台北」和「烤肉醬」更接近。詞嵌入讓模型開始有了初步的語意理解,但有個致命缺點:每個詞只有一個固定向量,無法區分「蘋果」在「吃蘋果」和「蘋果股價」中的不同含義(一個是水果,一個是公司)。
BERT 如何解決「一詞多義」問題
2018 年,Google 推出 BERT(Bidirectional Encoder Representations from Transformers),彻底改變了 NLP 的格局。BERT 的關鍵創新在於:同一個詞在不同語境中會得到不同的向量表示(情境化詞向量)。在「我買了一顆蘋果」中,「蘋果」的向量靠近水果相關詞;在「蘋果發布新 iPhone」中,同樣的「蘋果」向量卻靠近科技公司相關詞。這是透過雙向 Transformer 注意力機制實現的:BERT 在產生每個詞的向量時,會同時「看」它左邊和右邊的所有上下文,因此能捕捉語境。
在文本分類任務中,使用 BERT 的標準做法是「微調(Fine-tuning)」:取一個已在大量文字上預訓練好的 BERT 模型,在後面加上一個簡單的分類層,然後用幾千到幾萬筆標注資料訓練這個分類層(同時讓 BERT 的參數也略微調整)。這個過程通常只需要幾個小時,卻能在情緒分析、意圖辨識、主題分類等任務上達到頂尖效果。繁體中文的推薦選項包括 CKIP 實驗室的中文 BERT,以及各大廠商針對繁體語料微調的版本。
情緒分析的三個粒度層次
情緒分析並非只是「正面/負面」二選一,依照分析的細膩程度,可以分為三個層次:
二元情緒分析(Binary Sentiment) 是最基礎的形式:每則評論只輸出「正面」或「負面」。簡單且容易訓練,適合快速建立輿情監測的基線。缺點是過於粗糙,失去了細節。
細粒度情緒分析(Fine-grained Sentiment) 把情緒區分成更多等級,例如 1–5 星評分(對應到非常負面、負面、中性、正面、非常正面)。常用於電商平台的自動評分預測,或根據客服對話品質自動打分。
面向情緒分析(Aspect-Based Sentiment Analysis, ABSA) 是最細膩的層次:針對評論中的每一個面向(Aspect)分別判斷情緒。例如一則餐廳評論「服務很好,但菜量太少、停車場很難找」包含三個面向:服務(正面)、菜量(負面)、停車(負面)。ABSA 能提供比整體情緒更豐富的洞察,是產品改善、競品分析的有力工具,但也遠比簡單情緒分類難訓練,需要更細緻的標注資料。
應用場景
| 行業 | 應用 | 技術組合 | 商業價值 |
|---|---|---|---|
| 電商 | 自動分析所有商品評論,找出一星差評主因 | BERT 微調 + ABSA | 快速定位產品缺陷,降低退貨率 |
| 金融 | 分析財經新聞和社群討論,預判股市情緒 | 金融專用 BERT + 時序模型 | 輔助投資決策,量化市場情緒指標 |
| 餐飲連鎖 | 整合 Google Maps、Yelp、TripAdvisor 評論,分析各門市服務/餐點/環境評分 | ABSA + 地理資訊 | 識別表現落後門市,驅動改善行動 |
| 政府機關 | 分析民眾陳情信件和 1999 市民熱線的主題和情緒,找出熱點議題 | 主題分類 + 情緒分析 | 政策優先排序,提升施政回應速度 |
| 人資 | 分析員工滿意度調查的開放式文字回覆,識別離職風險訊號 | 細粒度情緒 + 主題分群 | 提前偵測員工不滿,降低離職率 |
| 媒體 | 自動分類新進稿件主題,推送給對應的頻道編輯 | 多標籤文本分類 | 降低編輯台分稿工時 |
| 品牌監測 | 7×24 監控社群媒體對品牌的提及,區分正負面口碑 | 情緒分析 + 事件偵測 | 危機公關即時預警 |
常見誤區
誤區 1:「情緒分析只要判斷正面/負面就夠了,粒度不需要那麼細」
這個觀念在需要行動化洞察的業務場景中會導致嚴重的資訊損失。假設一家飯店的顧客評論整體情緒是 68% 正面、32% 負面——這個數字只能告訴管理層「有些地方需要改進」,卻無法指出到底是哪個面向出了問題。如果用 ABSA 分析,可能發現「客房設施」正面率高達 90%,而「餐廳服務」負面率高達 75%,問題被精準定位。決策需要的是可行動的洞察,而不只是一個正負面比例數字。此外,「星級評分預測」這類細粒度任務也往往比二元分類更有商業價值,因為它能與實際滿意度評分對照驗證,讓模型的準確性有可量化的基準。
誤區 2:「只要準確率(Accuracy)高,情緒分析模型就夠好了」
這個誤區在處理類別不平衡資料時特別危險。想像一個企業客訴系統,95% 的工單是普通諮詢,只有 5% 是真正的緊急投訴。如果一個模型把所有工單都預測為「普通」,準確率高達 95%,但它對「緊急投訴」的辨識率為零——也就是說,每一個真正需要立即處理的客訴都被漏掉了。在情緒分析的評估中,更應該關注精確率(Precision)、召回率(Recall)和 F1 Score,特別是負面或緊急類別的召回率。召回率低代表「漏抓」,在客訴場景中危害遠比精確率低更嚴重。
誤區 3:「台灣中文情緒分析直接用中國大陸訓練的模型就好,語言差不多」
這是台灣企業最常見的錯誤之一。繁體中文和簡體中文的差異遠不只是字形:詞彙用法不同(「軟件」vs.「軟體」、「網絡」vs.「網路」、「搞定」在台灣是口語,在某些大陸語料是中性詞);台灣特有的網路用語和俚語(「OP」「87」「靠北」等)在大陸語料中幾乎不存在;台語詞彙夾雜(「母湯」「哩係安怎」等以注音或羅馬拼音出現的詞);以及反諷和嘲諷文化(台灣網路的「ㄏㄏ」「超棒的(反諷)」)。用以簡體語料為主的模型做繁體台灣中文情緒分析,在處理口語、社群媒體文字時,錯誤率可能比你預期的高出許多。最佳做法是選擇繁體中文預訓練模型,並盡可能收集台灣本土的標注資料進行微調。
小練習
練習 1:特徵表示方法比較
以下兩則評論,用三種不同的文字表示方法,分析它們的相似度和可分類性:
- 評論 A:「這家餐廳的牛排超好吃,服務態度也很棒!」
- 評論 B:「牛排雖然不錯,可是服務很差,態度惡劣,不推薦」
用三種方法(詞袋 BoW、詞嵌入 Embedding、BERT 情境化向量)分析時,哪種方法能最準確區分這兩則評論的情緒差異?為什麼?
查看答案
**詞袋(BoW)的問題:** 詞袋只看詞頻,不看語序和語境。兩則評論共享「牛排」「服務」「態度」等詞彙,BoW 向量的重疊度相當高。更嚴重的問題是:「不錯」「好吃」「棒」「差」「惡劣」這些詞的詞頻各一,BoW 模型要靠「差」「惡劣」「不推薦」等負面詞彙的存在來做出分類,但它**無法理解「可是」這個轉折詞**,也就是說,它看到評論 B 中的「不錯」,可能誤以為這也是正面評論。如果訓練資料中沒有足夠的轉折句型例子,BoW 分類器的效果會很差。 **詞嵌入(Word Embedding)的改進:** 詞嵌入能讓「好吃」「棒」「不錯」在向量空間中彼此接近,「差」「惡劣」也會形成一個負面詞群。這讓模型對語義相近的詞有更好的泛化能力。但詞嵌入仍然是固定向量,無法處理「可是」引導的語義反轉——「不錯,**可是**」這個複合結構需要理解語序和連接詞的功能。整句話的向量通常是各詞向量的平均或加總,無法捕捉「前半正面、後半負面」的結構,平均後的向量可能落在情感模糊的中間地帶,導致分類困難。 **BERT 情境化向量的優勢(最佳選擇):** BERT 的注意力機制能讓「可是」這個轉折詞影響前後詞語的向量表示,使評論 B 中「不錯」的向量受到後續負面語境的牽引,與評論 A 中「好吃」的向量產生明顯差異。BERT 在微調時見過大量含轉折結構的訓練資料,能學到「X 雖然/可是/但是 Y(負面)→ 整體負面」的模式。在情緒分析任務上,BERT 微調後的 F1 Score 通常比 BoW+TF-IDF 高出 10–20 個百分點,對包含轉折、否定、條件句的複雜評論效果尤其顯著。 **結論:** BERT 最準確,詞嵌入次之,詞袋最差——在處理含語義轉折的評論時差距最為明顯。練習 2:設計情緒分析應用方案
你在一家連鎖手搖飲料品牌的數位行銷部門工作。品牌在 Google Maps 上有 300 家門市、共累積了 50 萬則評論,在 Facebook 粉絲頁每月有大約 3,000 則留言,在 PTT 每月有約 500 篇相關討論。目前完全靠兩名兼職人員人工瀏覽,只能覆蓋大約 3% 的內容。
請設計一個情緒分析系統方案,說明:
- 要分析哪些資料來源?每個來源的重點是什麼?
- 選用什麼粒度的情緒分析(二元/細粒度/ABSA)?
- 系統要輸出什麼樣的報告,讓不同角色(行銷主管、門市店長、產品研發)都能直接使用?