## 介紹詞向量(Word Embedding)
在自然語言處理(NLP)中,電腦無法直接理解人類語言,而是需要將文本轉換為數值表示,這就是詞向量(Word Embedding)的概念。
詞向量的目的是讓模型能夠處理和理解語言的語義與結構,進而應用於機器學習和深度學習模型中。隨著 NLP 的發展,出現了不同的詞向量表示方法,包括 One-Hot Encoding、詞袋模型(Bag of Words, BOW)、TF-IDF(詞頻 - 逆文件頻率) 和 Word2Vec。每種方法都有其特定的應用場景和優缺點,下面將對這些方法進行詳細解析。

## One-Hot Encoding:最基礎的詞向量表示
One-Hot Encoding 是 NLP 中最基本的詞表示方式,它的核心思想是,對於一個詞彙表(Vocabulary)中的每個單詞,使用一個與詞彙表大小相同的二進位向量來表示,只有對應單詞的位置為 1,其他位置全部為 0。
舉例來說,假設我們的詞彙表包含三個詞:"apple"、"banana"、"cherry",那麼它們的 One-Hot Encoding 如下:

### 優點
* 簡單易懂:直接將單詞轉換為唯一的向量,直觀且易於實作。
* 無語義偏差:所有單詞的向量權重相同,沒有語義上的先驗假設。
### 缺點
* 高維度與稀疏性問題:詞彙表的大小會影響向量的維度,對於大型語料(數十萬個單詞)來說,One-Hot Encoding 會產生高維稀疏矩陣,增加計算成本。
* 無語義信息:不同單詞的向量之間沒有任何關聯性,無法捕捉語義相似性,例如 "apple" 和 "banana" 在語義上相關,但其 One-Hot 向量完全不同。
* 無法處理新詞或未見詞(OOV, Out-of-Vocabulary)
## 詞袋模型(Bag of Words, BOW):基於詞頻的統計方法
詞袋模型(BOW)是一種統計詞頻的方法,它會忽略單詞的出現順序,只關心單詞的出現次數,即每個文檔的向量由詞彙表中的詞頻構成。透過詞頻統計可以得出某些詞的頻率較高,這些詞可能比只出現一次的詞更能代表文本的主題,在新聞分析、社交媒體趨勢分析等領域,這種排序方式可以幫助提取關鍵資訊,提高文本處理的效率。
假設我們有以下兩個句子:
1. "I love apples and bananas."
2. "Bananas are delicious."
並且詞彙表為 ["I", "love", "apples", "and", "bananas", "are", "delicious"],則這兩個句子的 BOW 向量為:

### 優點
* 簡單且易於計算:只需計算詞頻,無需額外的訓練或詞向量學習。
* 適用於文本分類:如垃圾郵件分類、情感分析等,BOW 可以幫助識別文本中特定詞的頻率特徵。
### 缺點
* 忽略單詞順序:無法區分「I love apples」與「Apples love I」,它們的向量表示是一樣的,這會影響語意理解。
* 無語義信息:不同的單詞之間沒有關聯性,例如 "apple" 和 "banana" 可能是同類詞,但 BOW 不會反映它們的關聯性。
* 高維度與稀疏性問題:與 One-Hot Encoding 相同,詞彙表的大小會影響向量維度,對大規模語料處理不友好。
* 無法處理新詞或未見詞(OOV, Out-of-Vocabulary)
## TF-IDF:衡量單詞重要性的加權方法
TF-IDF(Term Frequency-Inverse Document Frequency) 是對 BOW 的改進方法,它不僅考慮單詞在單一文件中的頻率(Term Frequency, TF),還考慮該單詞在整個語料庫中的重要性(Inverse Document Frequency, IDF)。
在大多數文本中,一些詞(如 "the"、"is"、"and")幾乎出現在所有文件中。如果僅依賴詞頻(TF)來衡量詞彙的重要性,這些高頻詞將主導計算結果,導致無法有效識別文件的核心內容。例如,在一份關於 AI 技術的文章中,"artificial intelligence" 這個詞組比 "is" 或 "the" 更具代表性,透過 IDF 降低這些常見詞的影響,使真正能夠代表文章主題的詞獲得更高的權重。

TF:表示某個詞在特定文檔中的出現頻率。
IDF:衡量某個詞在整個語料庫中的重要性,例如某個詞在多數文件中都出現,則它的 IDF 會較低。
### 案例說明
假設我們有以下三個文件:
文件 1(d₁):"I love apples and bananas."
文件 2(d₂):"Bananas are delicious and I love them."
文件 3(d₃):"Apples and oranges are tasty."
Step 1:計算 TF, 'apples' 在文件 1(d₁)出現一次。
$TF('apples', d1) = 1/5 = 0.2$
Step 2:計算 IDF, 'apples' 只在文件 1(d₁)和文件 3(d₃)中出現。
$IDF('apples', D) = log_e(3/2) = 0.405$
Step3: 計算 TF-IDF
$TF-IDF('apples', d, D)=0.2×0.405=0.081$
### 優點
* 減少常見詞的影響:可有效降低像 "the"、"is" 這類高頻但無用詞的影響。
* 提升關鍵詞影響力:TF-IDF 使得較少出現但重要的詞更具影響力,適合資訊檢索與文本分類。
### 缺點
* 仍然忽略詞序:如 "not happy" 和 "happy" 可能具有完全不同的語意,但 TF-IDF 會給它們類似的權重。
* 無法捕捉語義關聯:如 "apple" 和 "banana" 仍然無法建立語義上的聯繫。
* 無法處理新詞或未見詞(OOV, Out-of-Vocabulary)
## Word2Vec:語意關聯的詞向量學習方法
Word2Vec 是 Google 在 2013 年提出的一種詞向量學習方法,與傳統的詞袋模型(BOW)和 TF-IDF 不同,Word2Vec 能夠捕捉單詞之間的語義關係,並將單詞映射到一個低維度、密集的連續向量空間。這使得語義相似的單詞在向量空間中距離更近,例如 "king" 和 "queen" 會具有相似的向量表示,而 "apple" 和 "banana" 也會靠近彼此。
Word2Vec 的主要目標是學習一個能夠將單詞轉換為向量的數學模型,使得這些向量能夠反映語義和詞的關係,例如 vector("king") − vector("man") + vector("woman") ≈ vector("queen")。

Word2Vec 通常使用神經網絡模型來學習詞向量,並且主要有兩種訓練方法:

### CBOW(Continuous Bag of Words)
CBOW 的基本思想是:根據上下文來預測中心詞。給定一個句子,CBOW 會使用周圍的單詞作為輸入,來預測中心詞。
例如,在以下句子中: "I love eating delicious apples in the morning." 如果選擇 "apples" 為目標詞(中心詞),則 CBOW 可能會使用它的上下文詞 "eating"、"delicious"、"in"、"the" 來進行預測:
P("apples"∣"eating", "delicious", "in", "the")
#### 優點
* 適合小型數據集:CBOW 模型透過上下文來預測單詞,這使得它在較小的數據集上比 Skip-Gram 更穩定。
* 訓練速度較快:由於 CBOW 使用多個上下文詞來預測中心詞,因此在相同的計算資源下,CBOW 模型通常比 Skip-Gram 訓練得更快。
#### 缺點
* 對低頻詞的學習效果較差:由於 CBOW 是基於上下文詞的平均值來學習中心詞的表示,它對於低頻詞的學習能力較弱。
* 可能會模糊多義詞的語境:例如 "bank" 可能表示 "銀行" 或 "河岸",但 CBOW 可能無法區分這些不同的語境。
### Skip-Gram
Skip-Gram 與 CBOW 的主要區別在於 Skip-Gram 是根據中心詞來預測上下文詞,而 CBOW 則是根據上下文詞來預測中心詞。
舉例來說,對於以下句子: "I love eating delicious apples in the morning." 如果選擇 "apples" 作為中心詞,Skip-Gram 會學習預測它的周圍詞 "eating"、"delicious"、"in"、"the",即:
P("eating"∣"apples"), P("delicious"∣"apples"), P("in"∣"apples")
#### 優點
* 適合大型數據集:Skip-Gram 在處理大規模語料時效果更好,特別是當語料庫包含許多罕見詞時。
* 對低頻詞的學習效果較佳:由於 Skip-Gram 會學習單詞與多個上下文詞之間的關係,因此它能夠更好地學習低頻詞的語義資訊。
* 對多義詞的學習能力更強:如果 "bank" 在不同的上下文中出現,Skip-Gram 會根據不同的上下文學習不同的詞向量,使其在語境理解方面更靈活。
#### 缺點
* 訓練速度較慢:由於 Skip-Gram 需要學習中心詞與每個上下文詞之間的關係,因此它的訓練時間比 CBOW 更長。
* 計算量較大:對於大規模語料庫,Skip-Gram 的計算開銷較大,可能需要更強的計算資源。
* 難以處理未見詞:如果測試語料中出現未見詞,則無法生成對應的向量。
:::info
雖然 Word2Vec 能夠為單詞學習高質量的詞向量,但在許多 NLP 應用中,我們需要處理的是整個句子、段落或文檔,而不是單獨的詞。而 AVG Word2Vec 能夠將任意長度的文本轉換為固定長度的向量,使其能夠更方便地應用於文本分類、資訊檢索、情感分析等任務。
:::
## Avg Word2Vec
AVG Word2Vec(Average Word2Vec)是一種將文本轉換為固定維度向量的技術,它基於 Word2Vec 訓練出的詞嵌入(Word Embedding),透過計算文本中所有詞向量的平均值,來獲得整個文本的語義表示,這種方法能夠將不同長度的文本轉換為固定大小的向量,並保持詞與詞之間的語意關係。
### 案例說明
假設我們有一個句子:"I love natural language processing",並且我們有一個 3 維的 Word2Vec 詞向量(實際應用中通常是 100 維、300 維或更高維度):

:::info
Word2Vec 與 AVG Word2Vec 的比較

:::
---
:::info
以上就是這篇文章「詞向量(Word Embedding)」的所有內容,第一次看的人會花比較多時間消化吸收,這是很正常的事情,若有任何問題,歡迎在下方與我聯繫、討論,接下來也會繼續分享相關文章,敬請期待。