NLP 自然語言處理 2-文字嵌入法( Word Embedding)

康韡瀚
5 min readNov 29, 2022

--

前一篇文章提到如何使用Bag of Words將文字資料轉換為數值資料,使模型處理及運算,但是Bag of Words忽略詞跟詞之間的順序,無法得知語意,Bag of Words只能判斷文本資料中使用那些字,且在有些時候會有一些謬誤在。例如:中華隊大勝韓國隊,韓國隊大勝中華隊,這兩種截然不同意思的句子竟然Bag of Words的結果一樣!!因此可以使用Word Embedding 來解決此類問題。

Word Embedding vs One-hot-encoding 示意圖

One-hot-encoding

為了表示每個詞,創建一個長度等於詞彙表的零向量,然後在與該詞對應的索引中放置一個 1。下圖顯示了這種方法。

Word Embedding

Word Embedding是一種高效的方式處理文字,且不需要透過人工的方式設定index,撇除人的干擾。Word Embedding相較於One-Hot-encoding 可以有較小的維度,解決資料稀疏性的問題,因此Word Embedding適合用於處理大量的文本資料。

  • 需要有一定的資料量訓練模型,才能有效的做Word Embedding
  • 使用非監督學習,學習文本資料
  • 透過非監督學習產生Word Vector
  • Word Vector可以反映詞彙相似性與語境

Word Embedding

Word Embedding 的核心概念是將文本資料中的最小單位Word,映射到一個相對低維度的空間(跟Bag of Words or One-Hot-Encoding),可以用文本之間的距離計算語意相似性。

EX: 巴黎:法國=東京:中國 ,Bag of Words無法做出這樣的判斷

https://hackmd.io/@allen108108/SJ42exwlH

Word Embedding 理論分類

Count-Based :

利用詞頻統計來建立 Word Vector 的一種方法。EX:TF-IDF vetor

Prediction-Based :

利用神經網路來建立 Word Vector 的一種方法。常見的方法有 — Continuous Bag of Words ( CBOW ) 及 Skip-gram

Prediction-Based,最常見的方法是用前一個詞去預測下一個詞,使用方式是建立一個NN網路架構,input layer 是1-of-N endcoding,output layer是所有文本內文字的機率值,值得注意的是這邊輸入與輸出的維度會相同但是有不同的意義。

例如:Nina很可愛;Yuri很可愛

=> Yuri 還有Nina後面都接很可愛,代表Nina、Yuri某種有關係的object

那如何得到Word Embedding的向量呢?

將第一個hidden layer的input取出

  • 每一個Z皆代表一個詞(W)
  • 因為每一個字都是1-of-N的編碼,因此相同的字輸出維度相同
  • 將Z當做Word Embbeding,得到上圖的向量

CBOWS 模型則是輸入前後詞,預測出可能的目標詞詞向量。

Skipgram 模型則是輸入目標詞詞向量,預測出可能的前後詞。

前文提及用前一個詞去預測下一個詞,但是其實也可以用前後字預測中間的那個字,這就是CBOWS,若將中間詞來預測上下文,就是Skipgram !

再探Word Embedding Model 架構

一般的NN model ,一般有 Input Layer ,Hidden Layer、Output Layer 三個部分,Word Embedding在Hidden Layer前加入一個Projection Layer,Projection Layer就是Word to Vector的Vector,也就是Embedding的位置

參考資料:

李宏毅教授上課講義

https://www.tensorflow.org/text/guide/word_embeddings

--

--