Word Embedding內容概述和總結(yandexdataschool/nlp_course)

課程地址:https://github.com/yandexdataschool/nlp_course/tree/master/week01_embeddings

  • LSA

latent semantic analysis(LSA),潛語義分析。將文章和單詞懂映射到語義空間( 「concept」 space )上,並在該空間進行對比分析。在搜索中,文檔的相似性並不應該由兩個文本包含的詞直接決定,而是應該去比較隱藏在詞之後的意義和概念。比如用戶搜索「automobile」,即汽車,傳統向量空間模型僅僅會返回包含「automobile」單詞的頁面,而實際上包含」car」單詞的頁面也可能是用戶所需要的。潛語義分析試圖去解決這個問題,它把詞和文檔都映射到一個潛在語義空間,文檔的相似性在這個空間內進行比較。潛語義空間的維度個數可以自己指定,往往比傳統向量空間維度更少,所以LSA也是一種降維技術。https://www.cnblogs.com/datalab/p/3163692.html

 

  • word embeddings:

We will learn a dense vector for each word, chosen so that it is similar to vectors of words that appear in similar contexts. This word vectors are called word embeddings or word representations

 

https://www.jianshu.com/p/471d9bfbd72f(最清晰)

https://blog.csdn.net/yu5064/article/details/79601683

http://www.noobyard.com/article/p-hszyqpjk-mh.html

CBOW(Continuous Bag-of-Word Model)又稱連續詞袋模型,是一個三層神經網絡。該模型的特點是輸入已知上下文,輸出對當前單詞的預測。 

Skip-gram是已知當前詞語,預測上下文。        

 

Word2Vec模型是一個超級大的神經網絡(權重矩陣規模非常大),在如此龐大的神經網絡中進行梯度下降是相當慢的,需要大量的訓練數據來調整這些權重並且避免過擬合。

例如,有一個包含10000個單詞的詞彙表,向量特徵爲300維,我們記得這個神經網絡將會有兩個weights矩陣----一個隱藏層和一個輸出層。這兩層都會有一個300x10000=3000000的weight矩陣。

負採樣(negative sampling)解決了這個問題,它是用來提高訓練速度並且改善所得到詞向量的質量的一種方法。不同於原本每個訓練樣本更新所有的權重,負採樣每次讓一個訓練樣本僅僅更新一小部分的權重,這樣就會降低梯度下降過程中的計算量。

 

GloVe

https://blog.csdn.net/u014665013/article/details/79642083

http://www.noobyard.com/article/p-vamepptn-ua.html(better)

這個實在是難以理解

 

fastText:

在文本特徵提取中,常常能看到n-gram的身影。它是一種基於語言模型的算法,基本思想是將文本內容按照字節順序進行大小爲N的滑動窗口操作,最終形成長度爲N的字節片段序列。看下面的例子:

我來到達觀數據參觀

相應的bigram特徵爲:我來 來到 到達 達觀 觀數 數據 據參 參觀

相應的trigram特徵爲:我來到 來到達 到達觀 達觀數 觀數據 數據參 據參觀

注意一點:n-gram中的gram根據粒度不同,有不同的含義。它可以是字粒度,也可以是詞粒度的。上面所舉的例子屬於字粒度的n-gram,詞粒度的n-gram看下面例子:

我 來到 達觀數據 參觀 相應的bigram特徵爲:我/來到 來到/達觀數據 達觀數據/參觀相應的trigram特徵爲:我/來到/達觀數據 來到/達觀數據/參觀 

http://www.52nlp.cn/fasttext

n-gram包含了詞的順序信息,爲了處理詞順序丟失的問題,FastText增加了N-gram的特徵。具體做法是把N-gram當成一個詞,也用embedding向量來表示,在計算隱層時,把N-gram的embedding向量也加進去求和取平均。

通過back-propogation算法,就可以同時學到詞的Embeding和n-gram的Embedding了。具體實現上,由於n-gram的量遠比word大的多,完全存下所有的n-gram也不現實。FastText採用了Hash桶的方式,把所有的n-gram都哈希到buckets個桶中,哈希到同一個桶的所有n-gram共享一個embedding vector。

 

其他概念:

term-document矩陣中,行是 word,列是 document,A[i][j]代表word[i]在document[j]中的出現次數,可以提取行向量作爲word的語義向量,或取列向量作爲document的主題向量。這種co-occurrence矩陣仍然存在着數據稀疏性和維度災難的問題,爲此,人們提出了一系列對矩陣進行降維的方法(如LSI/LSA等)。這些方法大都是基於SVD的思想,將原始的稀疏矩陣分解爲兩個低秩矩陣乘積的形式。

distributional semantics 分佈語義

Dristributed representation可以解決One hot representation的問題,它的思路是通過訓練,將每個詞都映射到一個較短的詞向量上來。

stop word。 「在」、「裏面」、「也」、「的」、「它」、「爲」這些詞都是停止詞。這些詞因爲使用頻率過高,將這一類詞語全部忽略掉。