⭐ 答題得分:0 / 0
NLP · L21101 · AI 相關技術應用
自然語言處理(NLP)
詞嵌入演進、Word2Vec 3D向量視覺化、BERT雙向預訓練、NER命名實體辨識、BLEU分數,對應 iPAS 中級科目一高頻考點
Word2Vec 3D BERT TF-IDF NER BLEU Score
📊 詞表示方式演進(Word Representation)
從稀疏表示到密集語義向量的四代演進

NLP 核心挑戰:如何將「文字」轉換成機器能計算的「數字」。從最早的 Bag-of-Words 到當代的 BERT 上下文嵌入,每一代都大幅提升語義理解能力。

Bag-of-Words 稀疏 One-Hot 不含語義 高維稀疏向量 [0,1,0,0,1,0...] TF-IDF 加權詞頻 考慮文件稀有度 仍為稀疏向量 TF × IDF Word2Vec 密集語義向量 CBOW / Skip-gram 相似詞 → 近似向量 king-man≈queen-woman 靜態嵌入(固定) BERT / GPT 上下文動態嵌入 同詞不同語境 → 不同向量 MLM / 自迴歸預訓練 Transformer Attention 動態嵌入(隨上下文變化) ◀ 當代最強表示方式
Bag-of-Words(詞袋模型)
每個詞對應一個 One-Hot 向量(僅對應位置為1)。缺點:詞彙表有10萬詞就要10萬維,且完全無法捕捉語義關係(cat ≠ kitten)。
▶ 考點:稀疏高維 / 無語義資訊
TF-IDF(詞頻-逆文件頻率)
在 BoW 基礎上加權:常見詞(the/是/的)權重低,稀有詞權重高。廣泛用於關鍵詞提取、文件相似度。仍為稀疏向量,無法捕捉語義相似性。
▶ 考點:TF-IDF = 詞頻 × 逆文件頻率
Word2Vec(密集嵌入)
將詞映射到低維密集向量(100-300維)。語義相近的詞向量距離近。支持向量運算:king - man + woman ≈ queen。靜態嵌入(每詞固定一個向量)。
▶ 考點:Word2Vec將詞轉向量 / 向量運算
BERT(上下文動態嵌入)
「bank」在「river bank」和「bank account」中有不同的向量表示(動態嵌入)。透過 Transformer Attention 感知整個句子上下文,語義理解能力大幅超越靜態嵌入。
▶ 考點:動態嵌入 / 雙向上下文
📐 TF-IDF 公式詳解
TF(詞頻)× IDF(逆文件頻率)= 詞對文件的重要性
// TF-IDF 完整公式
TF(t, d) = (詞 t 在文件 d 中出現的次數) / (文件 d 的總詞數)

IDF(t, D) = log( N / df(t) )
// N = 語料庫總文件數;df(t) = 包含詞 t 的文件數

TF-IDF(t, d, D) = TF(t, d) × IDF(t, D)

// 「的」「是」出現在每篇文件 → IDF ≈ 0(幾乎無資訊量)
// 「量子糾纏」罕見 → IDF 高(對少數文件很重要)
詞語TF(出現頻率)IDF(逆文件頻率)TF-IDF說明
的、是高(0.08)低(≈0)≈ 0停用詞,IDF 近乎為零
機器學習中(0.03)中(2.1)0.063技術詞,有一定辨識度
量子糾纏低(0.01)高(5.2)0.052稀有詞,TF 低但 IDF 極高
iPAS低(0.005)極高(7.8)0.039特定文件關鍵詞
📌 考試考點:TF-IDF = 詞頻 × 逆文件頻率。IDF 的作用是「懲罰」常見詞(的、是),給予稀有詞更高權重。常用於搜尋引擎關鍵詞提取、文件相似度計算。
🧠 Word2Vec:CBOW vs Skip-gram
兩種訓練策略:從上下文預測詞 vs 從詞預測上下文
CBOW 地板 Hidden → 坐 上下文詞 → 預測中心詞 Skip-gram 坐(輸入) Hidden → 貓 → 在 → 地板 → 上 中心詞 → 預測上下文詞
模型訓練方式適合場景特點
CBOW上下文詞 → 預測中心詞常見詞、大語料庫訓練速度快,常見詞表示好
Skip-gram中心詞 → 預測上下文詞稀有詞、小語料庫稀有詞效果更好,訓練較慢
GloVe全局共現矩陣分解大規模語料統計結合全局統計與局部上下文
📌 考試考點:Word2Vec 兩種訓練方式 — CBOW(上下文→中心詞)適合大語料常見詞;Skip-gram(中心詞→上下文)對稀有詞效果更好。GloVe 使用全局共現矩陣,結合全局統計信息。
🔢 GloVe — 全局向量詞嵌入
GloVe (Global Vectors):利用整個語料庫的詞共現統計

GloVe 建立共現矩陣 X:X_ij 表示詞 i 和詞 j 在一定視窗內共同出現的次數。透過因式分解共現矩陣訓練出詞向量,使得:

// GloVe 目標函數(最小化)
J = Σ_ij f(X_ij) · ( wᵢᵀ·w̃ⱼ + bᵢ + b̃ⱼ - log(X_ij) )²

// f(X_ij) = 加權函數(降低超頻詞的影響)
// wᵢ = 中心詞向量;w̃ⱼ = 上下文詞向量
// 最終向量 = wᵢ + w̃ⱼ(兩者相加)
共現矩陣(Co-occurrence Matrix)
統計整個語料庫中每對詞在視窗內共現的次數。「冰」和「固體」共現多 → 關係密切。「冰」和「蒸氣」共現少但各自與「水」共現多 → 間接關聯。
▶ 考點:GloVe 使用全局共現矩陣
GloVe vs Word2Vec 差異
Word2Vec 基於局部上下文視窗(Local Context Window);GloVe 利用全局共現統計(Global Co-occurrence),通常在大語料庫上表現更穩定。兩者都產生靜態詞向量。
▶ 考點:GloVe=全局統計 / Word2Vec=局部視窗
靜態 vs 動態嵌入
Word2Vec 和 GloVe 都是靜態嵌入:每個詞固定對應一個向量,無論上下文。BERT 是動態嵌入:同一個詞在不同句子中有不同向量(解決一詞多義)。
▶ 考點:靜態嵌入無法解決一詞多義
🤖 BERT — 雙向 Encoder 預訓練
Masked Language Model(MLM)+ Next Sentence Prediction(NSP)

BERT(Bidirectional Encoder Representations from Transformers)使用 Transformer Encoder 堆疊,同時關注句子左右兩側的上下文,透過兩個預訓練任務學習深層語言表示。

[CLS] [MASK] 地板 [SEP] BERT Encoder × 12層 雙向 Multi-Head Self-Attention(←→ 同時看左右) 分類向量 預測原始詞 (MLM任務) 對比:GPT(Decoder Only) Masked Self-Attention(→ 只看左側) 自迴歸:每次預測下一個 token The → cat → sat → on → ... 適合文本生成(ChatGPT、GPT-4)
MLM(遮蔽語言模型)
隨機遮蔽 15% 的 token,讓模型根據左右兩側上下文預測被遮蔽的詞。這使 BERT 能學到雙向語義關係,完成後不再需要語言模型,只保留 Encoder 表示。
▶ 考點:MLM = 雙向預測遮蔽詞
NSP(下一句預測)
給定兩個句子 A, B,判斷 B 是否為 A 的下一句(50%是/50%否)。訓練模型理解句子間的邏輯關係,對問答(QA)和推理任務有幫助。
▶ 考點:NSP = 句子關係理解
BERT Fine-tuning 下游任務
預訓練 BERT 後,加上任務頭(Task Head)並微調:文本分類([CLS]向量)、NER(每個 token 的輸出)、問答(抽取答案位置)、語義相似度等。
▶ 考點:預訓練+微調 = Transfer Learning
📌 考試考點:BERT 雙向(←→)使用 MLM 預訓練,適合理解任務(分類/NER/QA);GPT 單向(→)自迴歸,適合生成任務。「哪個模型能理解句子語義?」→ BERT。
🏷️ NLP 下游任務:NER / 情感分析 / 機器翻譯
iPAS 高頻考題:三大 NLP 應用任務

① NER — 命名實體辨識(Named Entity Recognition)

從文本中自動識別並分類具有特定意義的實體,是資訊抽取的基礎任務。

蘋果公司的 提姆.庫克 PER(人名) 矽谷 LOC(地名) 宣布 iPhone 17 PROD(產品名) 正式發布
NER 輸出類型:PER(人名)、ORG(組織)、LOC(地名)、DATE(日期)、PRODUCT(產品)。常用技術:CRF(條件隨機場)、BERT-NER(token 分類)。

② 情感分析(Sentiment Analysis)

類型輸出模型方法應用場景
二分類情感正面 / 負面BERT Fine-tuning、LSTM產品評論分析、輿情監控
多分類情感1-5 星評分多標籤分類 BERT電商平台星級預測
面向情感分析(ABSA)特定面向的情感Aspect-based Models「服務好但食物差」→ 分別分析

③ 機器翻譯 BLEU Score(評估指標)

// BLEU (Bilingual Evaluation Understudy) — 機器翻譯品質評估
BLEU = BP × exp( Σ_n wₙ · log(pₙ) )

// BP(Brevity Penalty)= 懲罰太短的翻譯
// pₙ = n-gram 精確率(1-gram/2-gram/3-gram/4-gram)
// BLEU 值域 0~1,越高越好(與人工翻譯越接近)
BLEU = n-gram 重疊率
計算機器翻譯輸出與參考翻譯之間 n-gram 的重疊程度。BLEU-1(詞)、BLEU-4(4連詞)。BLEU > 0.6 通常認為達到人工翻譯水準。
▶ 考點:BLEU 越高 = 翻譯品質越好
Seq2Seq + Attention
機器翻譯主流架構:Encoder 讀取原文 → Attention 機制讓 Decoder 關注輸入的不同部分 → Decoder 逐詞生成譯文。Transformer 取代了 LSTM 版本,效果更佳。
▶ 考點:Transformer = 機器翻譯 SOTA
NLP 評估指標整理
BLEU → 機器翻譯;ROUGE → 文本摘要(召回率導向);F1-Score → NER/分類;Perplexity(困惑度)→ 語言模型品質(越低越好)。
▶ 考點:不同任務的評估指標不同
📌 考試考點:NER 識別人名(PER)/地名(LOC)/組織(ORG);BLEU 分數評估機器翻譯品質(n-gram重疊);Perplexity 評估語言模型(越低越好)。
🎮 3D 互動視覺化:Word Embedding 向量空間
Word2Vec king - man + woman ≈ queen 類比推理 3D展示(可旋轉拖曳)

每個球體代表一個詞的向量位置。紫色箭頭表示「皇室」語義向量(king→queen),青色箭頭表示「性別」語義向量(man→woman)。兩個向量在高維空間中近似平行,體現詞向量的類比推理能力。

Word Embedding 3D Space · 拖曳旋轉
📋 考試重點整理
TF-IDF 公式
TF(詞在文件中的頻率)× IDF(log 總文件數/含該詞文件數)。常見詞的 IDF 趨近 0,稀有詞的 IDF 高。
▶ 必背公式
Word2Vec 訓練方式
CBOW:上下文→預測中心詞(快);Skip-gram:中心詞→預測上下文(稀有詞好)。GloVe:全局共現矩陣分解。
▶ 高頻選擇題
BERT vs GPT
BERT 雙向 Encoder + MLM 預訓練,適合理解(NER/分類/QA);GPT 單向 Decoder,適合生成。
▶ 必考比較題
NER 識別類型
PER(人名)/ ORG(組織)/ LOC(地名)/ DATE(日期)/ PRODUCT(產品)。BERT-NER:token 級別序列標注任務。
▶ 應用情境題
BLEU Score
機器翻譯評估指標。計算機器輸出與參考翻譯的 n-gram 重疊率(加 Brevity Penalty 懲罰過短輸出)。0~1,越高越好。
▶ 評估指標題
靜態 vs 動態嵌入
Word2Vec/GloVe = 靜態(每詞固定向量,無法解決一詞多義);BERT = 動態(同詞不同語境 → 不同向量)。
▶ 概念理解題
💻 程式碼考點(pandas · seaborn · scikit-learn NLP)
📦 文字資料讀取與前處理(pandas)
import pandas as pd
df = pd.read_csv('text_data.csv')

# 文字欄位基本操作
df['text'] = df['text'].str.lower()         # 轉小寫
df['text'] = df['text'].str.strip()         # 去首尾空白
df['length'] = df['text'].str.len()        # 計算文字長度
df.dropna(subset=['text'])                 # 移除空值
🤖 TF-IDF 向量化與情感分析(scikit-learn)
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# TF-IDF 特徵提取(考點:max_features 控制詞彙量)
vectorizer = TfidfVectorizer(max_features=5000)
X = vectorizer.fit_transform(df['text'])
y = df['sentiment']                         # 正/負面標籤

# 訓練情感分類器
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = LogisticRegression().fit(X_train, y_train)
print(accuracy_score(y_test, model.predict(X_test)))
TfidfVectorizer
文字→TF-IDF稀疏矩陣
fit_transform()
學習詞彙表並轉換
max_features
限制詞彙量防止高維
🎨 NLP 資料視覺化(seaborn)
import seaborn as sns
import matplotlib.pyplot as plt

# 情感分布
sns.countplot(data=df, x='sentiment')    # 類別數量
# 文字長度分布
sns.histplot(data=df, x='length', bins=50)# 長度直方圖
# 混淆矩陣熱力圖
from sklearn.metrics import confusion_matrix
sns.heatmap(confusion_matrix(y_test, y_pred), annot=True, fmt='d')
plt.show()
🧪 歷屆考題程式題型(選擇題)
Q: 使用 seaborn 繪製類別數量長條圖的函式為?
(A) sns.histplot()
(B) sns.countplot() ✓
(C) sns.scatterplot()
(D) sns.heatmap()
Q: TF-IDF 中 max_features=5000 的意義為?
(A) 最多處理 5000 筆文件
(B) 詞向量維度為 5000
(C) 只保留頻率最高的 5000 個詞 ✓
(D) 訓練迭代 5000 次
🎯 仿真考題(8 題)