語料庫:
李杏 喜歡 喝 奶茶
詩雅 也 喜歡 喝 奶茶
李杏 同樣 喜歡 喝 果汁
詞典:
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 ...