詞嵌入演算法
基於神經網路的表示一般稱為詞向量、詞嵌入(word embedding)或分布式表示(distributed representation)。其核心是上下文的表示以及上下文與目標詞之間的關係對映,主要通過神經網路對上下文,以及上下文和目標詞之間的關係進行建模。
詞向量最常見的方法是用 one-hot。它假設詞之間的語義和語法關係是相互獨立的。
先建立乙個詞彙表並把每個詞按順序編號,每個詞就是乙個很長的向量,向量的維度等於詞彙表大小,只有在對應位置上的數字為 1,其他都為 0 。
如: php is the best programming language in the world.
i really enjoy the process of programming.
對於這兩句話,我們先構造乙個詞典
\[d=\
\]上面的詞典包含14個單詞,然後對每個單詞進行 one-hot 編碼
php : (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
is : (0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
the : (0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
......
...of : (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
得到了每個單詞的embedding之後,就可以送入到機器學習或者深度學習模型中進行後續處理。
不足:
word2vec
word2vec 是 google 在 2013 年發布的乙個開源詞向量建模工具。
基本思想:通過訓練將每個詞對映成 k 維實數向量(k 一般為模型中的超引數),通過詞之間的距離(歐氏距離等)來判斷它們之間的語義相似度。
word2vec 結構圖:
word2vec 採用的模型有兩種:cbow(continuous bag-of-words) 和 skip-gram 兩種
兩種結構如下:
它與 cbow 相反,通過中心詞來**上下文,輸出層是一顆 huffman 樹。
huffman 樹
對於一組節點,按權值從小到大排列,每次選其中最小的兩個節點組合成乙個新的節點,放入節點集中,再次選擇,直到節點擊完。
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
word2vec的原理(一)
最近上了公司的新員工基礎培訓課,又對nlp重新產生的興趣。nlp的第一步大家知道的就是不停的寫正則,那個以前學的還可以就不看了。接著就是我們在把nlp的詞料在傳入神經網路之前的乙個預處理,最經典的就是2013年google提出的那個word2vec演算法,所以最近想再把這個演算法給好好學習一下,然後...
word2vec學習參考
最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...