語言模型和共現矩陣(轉)

本文轉自: https://blog.csdn.net/hao5335156/article/details/80452793網絡

一、語言模型

目的:克服one-hot、tf-idf方法中向量丟失句子中單詞的位置關係信息函數

1)2-gram

假設語料庫以下:學習

John likes to watch movies. Mary likes too.John also likes to watch football games.編碼

2-gram創建索引以下:(把每一個句子中相鄰的2個單詞用一個編碼表示,再也不是之前的一個單詞一個編碼)atom

「John likes」 : 1,
「likes to」 : 2,
「to watch」 : 3,
「watch movies」 : 4,
「Mary likes」 : 5,
「likes too」 : 6,
「John also」 : 7,
「also likes」 : 8,
「watch football」: 9,
「football games」: 10,spa

獲得10個編碼,因此構建的詞向量長度爲10;對於句子」John likes to watch movies. Mary likes too.」的編碼以下:(依次判斷1-10個編碼,第一個編碼」John likes」 : 1在句子中出現則爲1,不然爲0)
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0].net

2)N-gram

同2-gram,每一個句子中相鄰的N個單詞用一個編碼表示,再也不是之前的一個單詞一個編碼xml

3)優缺點

優勢: 考慮了詞的順序
缺點: 詞表的膨脹blog

語言模型
一句話 (詞組合) 出現的機率
索引

 
p(w1,...,wm)=i=1mP(wi|w1,...,wi1)


Unigram/1-gram

 
P(Marylikestoo)=P(too|Mark,likes)P(likes|Mary)P(Mary)=P(too)P(likes)P(Mary)

 

Bi-gram/2-gram

 
P(Marylikestoo)=P(too|Mark,likes)P(likes|Mary)P(Mary)=P(too|likes)P(likes|Marry)P(Mary)

 

不足:沒法衡量詞向量之間的關係,同時向量太稀疏

二、共現矩陣

主要用於發現主題,解決詞向量相近關係的表示;
將共現矩陣行(列)做爲詞向量

例如:語料庫以下:
• I like deep learning.
• I like NLP.
• I enjoy flying.

則共現矩陣表示以下:(使用對稱的窗函數(左右window length都爲1) )

例如:「I like」出如今第1,2句話中,一共出現2次,因此=2。
對稱的窗口指的是,「like I」也是2次

將共現矩陣行(列)做爲詞向量表示後,能夠知道like,enjoy都是在I附近且統計數目大約相等,他們意思相近

 

共現矩陣不足:
面臨稀疏性問題、向量維數隨着詞典大小線性增加

解決:SVD、PCA降維,可是計算量大

三、word2vec

前面方法須要存儲的數據過大,這裏主要是保存參數來節省,須要時候再經過計算參數得出結果。原理是經過淺層的神經網絡訓練(input是onehot詞向量,output是預測的詞向量,好比「我喜歡自學習」,input=「我」和「學習」,out=「喜歡」,input=(0001000)的話,輸出時候1的位置是機率,P「喜歡」=1,語料庫中的其餘詞則是P=0)

相關文章
相關標籤/搜索