iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

這幾天陸續都有談到,要讓電腦能夠處理並理解人類語言的方式,就是要把文字轉換成數值,也就是「向量」。

昨天的 Bag-of-Words Model 把文字轉換成向量的方式很直觀,只看文字出現的次數,不過就沒有考量到字與字之間的語意關係以及語序。

所以今天要介紹的 Word2Vec,就是一個更進階的方法。
它不只把文字變成向量,還會讓這些向量帶有「語意上的關聯性」。

假設我們用 Word2Vec 訓練一個模型,最後會發現「蘋果(apple)」和「香蕉(banana)」的向量彼此之間距離很近,因為它們在語意上有關聯,都屬於水果。

Word2Vec 主要有兩種訓練方式:Skip-gram 和 CBOW(Continuous Bag of Words)。


Skip-gram

Skip-gram 是一種產出 word embeddings(詞向量、詞嵌入)的模型,他的概念其實很直觀:

👉🏻 拿一個目標詞(target word),去預測它周圍會出現哪些詞(context words)

以這個句子為例:

I am drinking a cup of coffee.

  • 假設我們把 window size 設為 2,當目標詞是 drinking 時,它的上下文詞就包含:

    • 左邊的 I、am

    • 右邊的 a、cup

  • 那 Skip-gram 會生成以下訓練的樣本:

    • (drinking, I)

    • (drinking, am)

    • (drinking, a)

    • (drinking, cup)

簡而言之,skip-gram 學習一個字的表示方式,就是先選好目標詞彙指定的window大小的上下文,並將目標詞跟上下文丟給模型去訓練,接著,再讓機器去預測目標詞彙的上下文。
以這個例子而言,就是去看「drinking 這個字附近會出現什麼字?」

Skip-gram 是怎麼做到的?

  1. 先用 one-hot encoding 把文字轉換成機器讀懂的編碼。

    • 如果詞彙表有 10,000 個字,每個詞就是一個 10,000 維的向量(只有一個位置是 1,其他都是 0)。
  2. 經過神經網路(Neural Network)的一層 hidden layer,把高維度、稀疏的向量壓縮成低維度、密集的向量(例如 300 維)。

  3. 訓練過程中,模型會逐漸學到詞與詞的關聯,最後我們就能得到一個「詞向量空間」,讓詞語之間的距離和方向反映出語意上的關係。

CBOW

CBOW(Continuous Bag of Words)跟 Skip-gram 剛好相反,

👉🏻 它是用上下文詞(context words)來預測中間的目標詞(target word)

沿用上面的例句:

I am drinking a cup of coffee.

假設目標詞是 cup,上下文是 a 和 of,那麼 CBOW 就會用這些上下文詞去推測最有可能的詞,也就是 cup。

因為 CBOW 一次會處理多個上下文詞,所以在計算時,通常會先把這些詞的向量加總或取平均,再丟進模型進行預測。

小結

Word2Vec 相對於 Bag-of-Words 來說有考量到比較多的文字因素,它讓我們不再只是用簡單的詞頻來表示文字,而是能夠把詞投射到一個有意義的向量空間,捕捉語境上的相似性,是 NLP 當中重要的一環!


上一篇
Day 9 - Bag-of-Words (BoW)
下一篇
Day 11 - Lesk Algorithm:讓我們來一起消除歧義
系列文
AI、機器學習以及深度學習的語言學應用12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言