Sean talks

Attitude is everything

0%

NLP - 複習筆記 (BoW, Word2Vec, FastText)

Bag of Words

詞袋 Bag of words 的作法:

  • 將獲得的句子以 one-hot 向量表示,向量長則為全部詞彙的總數
  • 詞袋無法保存文字順序、詞彙間意義的關係

bag_of_word

Word2Vec

Word2Vec 模型主要由 CBOW 或 Skip-gram 兩種模型建立而成。

  • CBOW (Continuous Bag of Word)
    • 給定上下文詞彙 (斷詞後) 向量,預測輸入的詞彙向量,目的是要使當前字詞出現的機率越高越好
  • Skip-gram
    • 與 CBOW 相反。給定輸入詞彙向量,預測上下文詞彙向量

word2vec

Word2Vec 詞向量特性

  • 因此較常出現在相鄰位置的詞彙之向量具有較高的相似程度
    • 使用 Cosine Similarity 計算
  • 國王-王后 向量 會相似於 男孩-女孩 向量
  • 較無法表示一詞多義的意思

Skip-gram for example

如下圖每個詞彙向量的計算是:

  1. 將文字透過 one-hot 轉換成編碼作為輸入
  2. Ont-hot 向量乘 $W_{input}$ (Embedding Matrix ) 得到 $N$ 維的 hidden layer 向量
  3. 接著再與視窗中設置的相鄰詞彙,矩陣相乘得到每個字 ($V$維) 皆有一個值,最後以 Softmax function 輸出一個介於 0~1 的值表現其出現的機率

skip-gram

提高模型訓練的技巧

  1. 將常見的單詞組合,作為一組詞彙處理 (e.g. ‘烏’+’龜’ → ‘烏龜’),透過設計一個好的斷詞(segmentation)、斷字(tokenization)模組
  2. 對高出現頻率的字詞抽樣減少訓練樣本數
  3. Negative Sampling

fastText

fastText 是 Facebook’s AI Research (FAIR) 實驗室提供的文字分類、詞向量訓練工具,並提供以巨量文本資料預訓練好的詞向量模型。

相對於 Word2Vec ,fastText 考慮 subwords 特性訓練詞向量矩陣,比如英文單詞 ”company”,可以拆分為長度大於等於3 的 n-gram :[‘com’,’omp’,’mpa’,’pan’,’any’,’comp’,’ompa’,’mpan’,’pany’,’compa’,’ompan’,’mpany’,’compan’,’ompany’, ‘company’]。

將上述 n-gram 向量 sum up 作為 ”company” 的詞向量。這樣的訓練方式特別在英文上起了很大的作用,因為英文中有許多字首、字尾相同的單詞。

References