本文轉自: https://blog.csdn.net/hao5335156/article/details/80452793網絡
目的:克服one-hot、tf-idf方法中向量丟失句子中單詞的位置關係信息函數
假設語料庫以下:學習
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-gram,每一個句子中相鄰的N個單詞用一個編碼表示,再也不是之前的一個單詞一個編碼xml
優勢: 考慮了詞的順序
缺點: 詞表的膨脹blog
語言模型
一句話 (詞組合) 出現的機率
索引
Unigram/1-gram
Bi-gram/2-gram
不足:沒法衡量詞向量之間的關係,同時向量太稀疏
主要用於發現主題,解決詞向量相近關係的表示;
將共現矩陣行(列)做爲詞向量
例如:語料庫以下:
• 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降維,可是計算量大
前面方法須要存儲的數據過大,這裏主要是保存參數來節省,須要時候再經過計算參數得出結果。原理是經過淺層的神經網絡訓練(input是onehot詞向量,output是預測的詞向量,好比「我喜歡自學習」,input=「我」和「學習」,out=「喜歡」,input=(0001000)的話,輸出時候1的位置是機率,P「喜歡」=1,語料庫中的其餘詞則是P=0)