[未完] 深度學習 之 詞向量(Word Embedding)篇 :word2vec

歡迎參觀 一> 個人小站

一. 詞向量表示形式

在使用神經網絡模型進行文本分類或者機器翻譯時,前提工作是要對整理好的文本數據進行詞向量化 (Word Embedding) ,既使用向量形式代表詞。

1.1 One-hot representation

表示形式:向量維度的大小爲數據中詞彙表的大小,每個單詞對應的位置置爲1。例如 { I love china }love 的詞向量爲 [ 0, 1, 0 ] 。該表達形式最爲簡單,缺點是當詞彙表特別大時,所佔存儲空間也特別大。

1.2 Dristributed representation

表示形式:以稠密的低維向量表示每個詞。


二. 語言模型 ( Language Model )

如何判斷一個句子是否流暢?例如 我在學習 而不是 我玩學習 ,語言模型可以解決這個問題。

2.1 統計語言模型

2.1.1 背景

給定一段文本序列,符號表達形式爲:

s=w1 w2 w3 ... wm

wi 通常是已經分好詞的“詞語”,稱爲統計基元。那麼這段文本的概率爲:

P(S)=p(w1) p(w1|w2) p(w3|w1w2)...p(wm|w1...wm1)=i=1m p(wi|w1w2...wi1)

爲方便計算,每個詞只考慮與它前 n 個詞有關,這便是語言模型中經典的 n 元文法 (N-gram) 模型,一般 n3 。求文本的概率公式變爲:

P(S)=i=1m p(wi|win+1i1)

爲了保證 i=1 時有意義,同時保證句子內所有詞語的概率和爲 1 ,即 s p(s)=1 ,在文本首尾兩端增加兩個標誌:<BOS> w1 w2 ...... wm <EOS> ,那麼 w0<BOS>wm+1<EOS>

例如文本 <BOS> A dog was running in a room ,其基於 2 元文法的文本概率爲:

p(A dog was running in a room)=p(A|<BOS>) × p(dog|A) × p(was|dog) × p(running|was) × p(in|running) × p(a|in) × p(room|a) × p(room|<EOS>)

2.1.2 應用

統計語言模型可用作漢語分詞,比如給定字符串 text :他是研究生物的。而可能的分詞結果有兩種:

Seg1: 他 | 是 | 研究生 | 物 | 的
Seg2: 他 | 是 | 研究 | 生物 | 的

根據貝葉斯公式,

Seg^=argmax p(seg|text)=argmax p(text|seg)×p(seg)p(text)=argmax p(text|seg)×p(seg)=p(seg)

如果採用 2 元文法:

p(Seg1)=p(|<BOS>)×p(|)×p(|)×p(|)×p(|)×p(|<EOS>)
p(Seg2)=p(|<BOS>)×p(|)×p(|)×p(|)×p(|)×p(|<EOS>)

即分詞結果爲兩個句子概率大者。那麼,如何得到 n 元文法模型?請參考文獻 [2]

2.1.3 缺陷

n 元文法 (N-gram) 模型有兩個明顯的缺陷:其一,在計算概率時只考慮到前 n-1 個詞;其二,沒有考慮到詞語之間的相似性。例如,由 The cat is walking in the bedroom. 可以推測出 A dog was running in a room. 句子的概率。因爲這兩句話在語義和語法結構上相似。

2.2 神經網絡語言模型

爲了解決統計語言模型的缺陷,Yoshua Bengio 等人提出了神經網絡語言模型,請參考文獻 [1] 。該語言模型:

1) 詞表中的每個詞都對應一個m 維的特徵向量,維數一般設爲 300 ,是遠遠小於詞表大小的。當兩個向量的相差不是很大時,則這兩個向量代表的詞相似。
2) 根據一段詞序列中的每個特徵向量可以得到這段序列的聯合概率,即 P(S)
3) 在該模型中,神經網絡的參數和詞向量是同時進行訓練的。

神經網絡語言模型結構如下,訓練一個簡單神經網絡函數f (i, wt1,···,wtn) 來擬合詞wt 是詞i 的概率p(wt=i | w1w2...wi1)

nmlm

word2vec 則是一個可以通過對數據進行訓練,將詞表達成向量形式的工具 。其包括


參考文獻

[1] A Neural Probabilistic Language Model

[2] 自然語言處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章