
—
NLP - 文字向量化 - Word2Vec:IMDB Movie Reviews
「物以類聚,詞以鄰分」。今天我們將實戰 Word2Vec,利用 IMDB 的 50,000 筆影評,讓電腦學會理解詞與詞之間的語義聯繫,揭開 NLP 的核心秘密。
WRITTEN BY

- Name
- Harry Chang
神經網路的語意覺醒
在 2013 年,Google 的 Tomas Mikolov 帶領團隊發表了 Word2Vec。這在 NLP 領域是一場大地震。在那之前,電腦把詞當作獨立個體 (One-hot Encoding),「貓」跟「狗」在電腦眼裡跟「石頭」沒有區別。Mikolov 讓電腦學會了詞之間的 「關係」,甚至能做這種神奇運算:「國王 - 男人 + 女人 = 皇后」。
1. 資料集來源:IMDB Movie Reviews
我們使用 IMDB 的 50,000 筆電影評論。
- 特性:包含大量的形容詞 (good, bad, awful) 和專業術語 (director, plot, scene)。
- 目標:訓練詞向量,觀察哪些形容詞在情感或語意上是接近的。
2. 原理:誰常跟誰在一起?
想像你在參加一個 森林音樂會:
- One-hot (以前):你只認識每個動物的名字,但不知道誰是誰。
- Word2Vec (現在):你開始觀察 「誰常跟誰在一起」。你發現「貓」常跟「沙發」出現,而「虎」常跟「森林」出現。雖然它們長得不同,但因為 「鄰居 (Context)」 很像,電腦會把它們放在空間中很近的位置。
兩大訓練策略
- Skip-gram (今日使用):拿一個詞 (如:電影),去預測它的鄰居 (如:好看、演員)。比喻:給你一個明星,請你猜他的助理是誰。
- CBOW (Continuous Bag of Words):拿一群鄰居,預測中間那個詞。比喻:給你一堆助理,請你猜他們服侍的明星是誰。
我該選哪一個?(CBOW vs Skip-gram)
- 選擇 CBOW 的時機:
- 追求速度:CBOW 訓練速度比 Skip-gram 快得多。
- 資料量較小:在小型資料集上,CBOW 通常能更快收斂。
- 常見詞很重要:它對頻率高的單字有更好的表現。
- 選擇 Skip-gram 的時機:
- 追求精準度:能更好地捕捉複雜的語義關係。
- 處理罕見詞 (Rare Words):這是 Skip-gram 的強項,即使某個詞出現次數不多,它也能學到不錯的向量。
- 大型資料集:在龐大的語料庫中,Skip-gram 的上限通常更高。

3. 實戰:訓練你的 Word2Vec 模型
完整程式連結:Word2Vec_IMDB.py
# 關鍵程式碼:使用 gensim 訓練 Word2Vec
from gensim.models import Word2Vec
# vector_size=100: 把詞變成 100 維的向量
# window=5: 看看前後 5 個詞
model = Word2Vec(sentences, vector_size=100, window=5, min_count=5)
# 找出最像的詞
print(model.wv.most_similar("good"))
4. 模型評估與視覺化
4.1 詞意相近度分析
訓練後的產出結果非常有意思:
- 與 "bad" 最像的詞:
good,terrible,horrible,awful(雖然 good 在內,但這是因為語法位置相似,其餘負面詞已成功群聚)。 - 與 "scary" 最像的詞:
funny,frightening,gory(電腦開始理解恐怖片常伴隨血腥與驚嚇特徵)。
4.2 TSNE 降維視覺化

- 負面評價區:
awful,terrible成功在左上方集合。 - 人物與製作:
actor,actress在上方,director,script在中央。 - 類型區:
drama,thriller,comedy在右下方成群。
5. NLP 模型進化清單 (其他常見模型)
除了 Word2Vec,我們也應該了解這些經典:
- TF-IDF (統計派):找出文章中的關鍵字權重,但不懂語意。
- N-Gram (順序派):將單字綁在一起看,但難以捕捉長距離依賴。
- GloVe (全域統計派):結合了局部預測與全域統計的優點,適合大型語料庫。
- BERT / Transformer (現代派):解決了「一詞多義」問題,是當今 AI 的核心。
7. 進階實戰:從詞向量到情緒分析 (LSTM)
當我們有了 Word2Vec 賦予的語意座標後,根據ML016學習的LSTM就是拿來處理「順序」。這就是 LSTM (長短期記憶網路) 的強項。
7.2 程式碼實作:影評分類器
完整程式連結:LSTM_Sentiment_Analysis.py
# 關鍵程式碼:建立 LSTM 情感分類器
model = Sequential([
Embedding(max_features, 128, input_length=maxlen),
LSTM(64, dropout=0.2),
Dense(1, activation='sigmoid')
])
7.3 實戰產出結果
我們將 Word2Vec 產生的向量丟進 LSTM,訓練後的表現如下:
1. 訓練過程與實測結果
觀察:僅訓練 5 個 Epoch,正確率即達到 80.6%。模型能精準捕捉到 "brilliant" 等正面情緒。2. 實測預測
我們挑選了幾句評論讓模型「盲測」,結果如下:
- 評論 A: "The movie was absolutely brilliant and I loved every minute of it!"
- AI 評分: 0.98 (極高機率為好評) → [正面]
- 評論 B: "What a waste of time. The acting was terrible and the plot made no sense."
- AI 評分: 0.02 (極高機率為負評) → [負面]
- 評論 C: "It was okay, not the best but certainly not the worst either."
- AI 評分: 0.45 (語氣中立偏保守) → [系統判定為負面] (觀察:模型對於這種複雜的對比語氣還需要更多資料學習,這正是 NLP 的挑戰所在!)
8. 總結:從「詞語內涵」到「情感理解」
今天我們完成了一次 NLP 的完整演進實戰:
- Word2Vec:讓我們跳脫了無意義的編號,學會了單字的「語意內涵」。透過物以類聚,我們把文字變成了有意義的數字座標。
- LSTM:在向量的基礎上,我們加入了「記憶」與「順序」,讓 AI 不僅讀懂單字,還能讀懂整段影評背後的情緒溫度。
戰略對比:Word2Vec vs LSTM
| 特性 | Word2Vec (語意煉金術) | LSTM (情緒容器) |
|---|---|---|
| 核心目標 | 學習單字的「意思」與關聯 | 學習句子的「情感」與脈絡 |
| 輸入形式 | 單個詞 (Word) | 整段文字序列 (Sequence) |
| 強項應用 | 找同義詞、類比運算 (國王-男人) | 處理上下文、語氣反轉 (不...好) |
9. 同場加映:效率大師 GRU (Gated Recurrent Unit)
如果你覺得 LSTM 的結構太複雜、計算太慢,那麼你一定要認識 GRU。它是 2014 年由 Kyunghyun Cho 等人提出的 LSTM 精簡版。
- 結構簡化:將 LSTM 的三個門簡化為兩個門 —— 更新門 (Update Gate) 與 重置門 (Reset Gate)。
- 優勢:參數量更少,訓練速度更快,且在大多數情緒分析任務中,表現與 LSTM 不相上下。
這代表在資源有限的行動裝置或即時系統中,GRU 往往是更好的選擇!
下一章我們將進入現代 AI 的轉折點:Transformer 與 Attention 機制。這就是讓 GPT 誕生的核心技術,我們將揭開「大腦抓重點」的秘密!