05詞向量表示理論篇

2021-09-09 05:32:10 字數 3560 閱讀 5815

語料庫:

李杏 喜歡 喝 奶茶 

詩雅 也 喜歡 喝 奶茶

李杏 同樣 喜歡 喝 果汁

詞典:

one-hot 表示:

李杏:[1,0,0,0,0,0,0,0] 

喜歡:[0,1,0,0,0,0,0,0]

… 果汁:[0,0,0,0,0,0,0,1]

注意:

詞典包含8個單詞,每個單詞有唯一索引  

在詞典中的順序和在句子中的順序沒有關聯

1)文件的向量表示可以直接將各詞的詞向量表示加和

李杏 喜歡 喝 奶茶 →[1,1,1,1,0,0,0,0]

詩雅 也 喜歡 喝 奶茶→[0,1,1,1,1,1,0,0]

李杏 同樣 喜歡 喝 果汁→[1,1,1,0,0,0,1,1]

from ipython.display import image

image(filename=r"c:\users\administrator.desktop-36e16c6\desktop\課程\結果截圖\tfidf.png"

)

2)tf-idf (term frequency-inverse document frequency)

文件總數n=3

idf=log(1+n)/(1+df(w))+1

df(w)

idf李杏

2log(1+3)/(1+2)+1喜歡3

log(1+3)/(1+3)+1喝3

log(1+3)/(1+3)+1奶茶2

log(1+3)/(1+2)+1詩雅1

log(1+3)/(1+1)+1也1

log(1+3)/(1+1)+1

bag of words的缺點:丟失了詞語在句子中的前後順序資訊。

無法衡量詞向量之間的關係

太稀疏,很難捕捉文字的含義

詞表維度隨著語料庫增長膨脹

人類定義 :

在我們一群人種區分出詩雅和李杏:

人名是否是男生

是否是長頭髮

是否喜歡喝奶茶

是否戴眼鏡詩雅0

011李杏

0110

詩雅-李杏→是否長頭髮、是否戴眼鏡的區別

↑隨著詞庫的增加,人為定義特徵難度增大,準確度下降。

那某個詞是否可以由其上下文來表示該詞呢?即如果兩個詞的上下文相似,那麼這兩個詞也是相似的↓

distributional representation是從分布式假設(即如果兩個詞的上下文相似,那麼這兩個詞也是相似的)的角度, 利用共生矩陣來獲取詞的語義表示,可以看成是一類獲取詞表示的方法

一段文字的語義分散在乙個低維空間的不同維度上,相當於將不同的文字分散到空間中不用的區域。

bag of word→(上下文表示)→n-gram→(降維)→nnlm(rnnlm)→(減少模型複雜度)→word2vec

nnlm(neural network language model)

直接從語言模型出發,將模型最優化過程轉化為求詞向量表示的過程。
要點

根據**前 n-1** 個單詞,**第t個位置單詞的概率。

使用了非對稱的前向窗函式,窗長度為 n-1

滑動視窗遍歷整個語料庫求和,計算量正比於語料庫大小

概率p滿足歸一化條件,這樣不同位置t處的概率才能相加,即

要點

1)學習乙個從高維稀疏離散向量到低維稠密連續向量的對映。  

2)該對映的特點是,近義詞向量的歐氏距離比較小,詞向量之間的加減法有實際物理意義。

3)word2vec由兩部分組成:cbow和skip-gram。

4)cbow的結構很簡單,在nnlm的基礎上去掉隱層,embedding層直接連線到softmax,cbow的輸入是某個word的上下文(例如前兩個詞和後兩個詞),

softmax的輸出是關於當前詞的某個概率,即cbow是從上下文到當前詞的某種對映或者**。skip-gram則是反過來,從當前詞**上下文,至於

為什麼叫skip-gram這個名字,原因是在處理過程中會對詞做取樣。

過程:

輸入上下文單詞ont-hot→「隨機壓縮成n維」→求和,求平均→w詞向量
下面使用乙個類似word2vec的構思的例子,注意不是word2vec原理闡述語料:

李杏 喜歡 喝 奶茶 

詩雅 喜歡 喝 果汁

視窗:

取前三個詞

簡易版計算:

w=奶茶

w的前三個詞: 李杏、喜歡、喝

李杏:[1,0,0,0,0,0,0,0]

喜歡:[0,1,0,0,0,0,0,0]

喝:[0,0,1,0,0,0,0,0]

w的表示為: 李杏、喜歡、喝這三個詞的的向量相加,即:

[1,1,1,0,0,0,0]

w=果汁

w的前三個詞: 詩雅、喜歡、喝

詩雅:[0,0,0,0,1,0,0,0]

喜歡:[0,1,0,0,0,0,0,0]

喝:[0,0,1,0,0,0,0,0]

w的表示為: 詩雅、喜歡、喝這三個詞的的向量相加,即:

[0,1,1,0,1,0,0,0]

結論:

由上可得:果汁和奶茶的相似度較高,即即如果兩個詞的上下文相似,那麼這兩個詞也是相似的
word2vec學習過程舉例:

cbow(連續詞袋)

skip-gram模型

詞向量表示

介紹 lsa是基於滑動視窗的共現矩陣 co occurence 以及svd的方法,通過svd來對共現矩陣進行降維,從而獲得低維度的詞向量。實現 假設window長度為1 語料庫中包含三個句子 i like deep learning.i like nlp.i enjoy flying.通過滑動視窗可...

cs224d 詞向量表示

1.1 word meaning的兩種定義 definition meaning 單詞的含義指代了客觀存在的具體事物,如眼鏡。distributional similarity meaning 上下文代表了單詞的含義,如下 distributional similarity meaning也是wor...

字的向量表示

得到乙個字的向量表示,能夠保留字之間共現次數相關的資訊。先得到乙個語料庫的詞庫,然後計算乙個字左邊視窗內和其共同出現的次數的數量,值與距離相反。每個字會對映到乙個整數index,這個index就對映到向量的index。比如 these 對映到index 10,則在 are 這個字的向量表示裡vec ...