使用tensorflow來(lái)做word2vector(1)--簡(jiǎn)易基本知識(shí)

有關(guān)word2vector的原理這里不贅述,本篇僅闡述怎么使用tensorflow來(lái)做一個(gè)實(shí)際操作案例。這里的一些說(shuō)明,均為實(shí)際操作總結(jié),或來(lái)自別人的總結(jié),經(jīng)個(gè)人對(duì)在實(shí)際操作或理論理解基礎(chǔ)上,比較贊同的觀(guān)點(diǎn),望對(duì)大家學(xué)習(xí)和實(shí)踐中有所幫助。

為什么要使用word2vector技術(shù)?因?yàn)槌窃谑褂脴?shù)模型,否則都需要將詞轉(zhuǎn)換為一些數(shù)值向量。一種直接的做法是使用one-hot,將其轉(zhuǎn)為稀疏表示,只有該詞向量為1,其余為0。如:


image.png

顯然這樣當(dāng)詞袋較大時(shí),任何神經(jīng)網(wǎng)絡(luò)的輸入將會(huì)很大,除此之外,one-hot的表達(dá)方式,并沒(méi)有考慮到該詞的上下文內(nèi)容,這是一個(gè)很大的弊端。針對(duì)以上這兩點(diǎn),word2vector旨于解決將一個(gè)詞的one-hot型的高維表達(dá)方式,轉(zhuǎn)為更低維度的向量,以及考慮詞的上下文內(nèi)容。


image.png

如上圖, word2vector僅為一個(gè)簡(jiǎn)單的網(wǎng)絡(luò),即一層輸入(input layer),一層隱層(hidden layer),這一層可以只是簡(jiǎn)單地權(quán)重相加,也可以是非線(xiàn)性的,如sigmoid何tanh,一層輸出(output layer),輸出層采用softmax。在訓(xùn)練過(guò)程中,我們想要訓(xùn)練得到的結(jié)果是在cat周?chē)脑~有更大的概率,而其他的詞的概率較小。如果詞袋大小為10000,我們想要減小為300為,那么首先需要的10000*300的權(quán)重矩陣(中間層),該矩陣的每一行代表詞袋中的每一個(gè)詞,這個(gè)矩陣也就成為了一個(gè)embeddding look-up table。

關(guān)于兩種word2vector模型,簡(jiǎn)單來(lái)說(shuō),skip gram模型,就是使用給定的詞,來(lái)預(yù)測(cè)其周?chē)脑~的概率。CBWM(continuous bag of words model)是使用中間詞的周邊詞,來(lái)預(yù)測(cè)該中間詞。除此之外,還有關(guān)于訓(xùn)練過(guò)程中的負(fù)采樣問(wèn)題。

其他說(shuō)明:
為了得到詞語(yǔ)的有意義的收斂的詞向量,需要較大的語(yǔ)料庫(kù),否則出來(lái)的詞向量偶然性較大。

參考來(lái)源:
[https://adventuresinmachinelearning.com/word2vec-tutorial-tensorflow/]
[https://towardsdatascience.com/learn-word2vec-by-implementing-it-in-tensorflow-45641adaf2ac]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容