word2vec是從大量文字語料中,用無監督學習的方式來學習語義知識的一種模型,廣泛用於nlp。其實就是通過學習文本來用詞向量的方式表徵詞的語義資訊。
embedding其實就是乙個對映,將單詞從乙個空間對映到另乙個新的空間中。
直觀理解:
cat(貓)這個單詞與kitten(小貓)在語義上很相近,而dog(狗)和kitten就不是那麼相近了,iphone就和kitten在語義上差得更遠了。通過對詞彙表中的單詞進行這種數值表示方式的學習(也就是將單詞轉換為詞向量),能夠讓我們基於這種數值,進行向量化的操作,從得到一些有趣的結論。eg: 對詞向量kitten、cat、dog執行這樣的操作:kitten(小貓) - cat(貓) + dog(狗),最終得到的嵌入向量(embedded vector)與puppy(小狗) 這個詞向量非常相近。
word2vec中主要有skip-gram和cbow兩種模型,直觀的理解:
skip-gram模型主要分成兩部分:
建立模型
通過模型獲取嵌入詞向量
skip-gram整個建模過程與自編碼器(auto-encoder)的思想類似,即:先基於訓練資料構建乙個神經網路,當這個模型訓練好之後,不用它處理新的任務,而是獲取這個模型通過訓練資料得到的引數,比如隱層的權重矩陣(這些權重在skip-gram中實際上就是要學習的word vectors詞向量)。
這種基於訓練資料建模的過程,給他命名為「fake task」。也就意味著,建模並不是最終目的。
the fake task:
上面有提到過,訓練模型的目的不是得到這個模型,而是獲得模型基於訓練資料學到的隱層權重引數。為獲得這些隱層權重引數,首先要構建乙個完整的神經網路作為「fake task」,然後間接獲得這些詞向量。
接下來介紹如何訓練神經網路:
假設有乙個句子:the dog barked at the mailman.
首先,選擇句子中的乙個單詞作為輸入詞,比如我們選「dog」作為輸入詞(input word)
選定input word之後,定義引數skip_window,用來:在當前選定的輸入詞input word的一側(左或右)選取單詞的數量。eg: skip_window=2,則獲得的視窗中的詞(包括input word在內)就是:['the','dog','barked','at']。skip_window=2,也就是在輸入詞「dog」兩側各選兩個詞進入視窗。
另乙個引數num_skips,代表從整個視窗中選擇多少不同的詞作為輸出單詞out word。
當skip_window=1,num_skips=2時,將得到兩組(input word, output word)形式的訓練資料,即:('dog', 'barked'),('dog', 'the')
神經網路基於這些訓練資料,會輸出乙個概率分布,代表詞典中每個單詞是output word的可能性。eg: 上面那個例子中,訓練資料('dog', 'barked')經過訓練後,會得到詞彙表中每個單詞是'barked'的概率大小。
模型的輸出概率代表著到我們詞典中每個詞有多大可能性跟input word同時出現。舉個栗子,如果我們向神經網路模型中輸入乙個單詞「soviet「,那麼最終模型的輸出概率中,像「union」, 」russia「這種相關詞的概率將遠高於像」watermelon「,」kangaroo「非相關詞的概率。因為」union「,」russia「在文字中更大可能在」soviet「的視窗中出現。我們將通過給神經網路輸入文字中成對的單詞來訓練它完成上面所說的概率計算。下面的圖中給出了一些我們的訓練樣本的例子。我們選定句子「the quick brown fox jumps over lazy dog」,設定我們的視窗大小為2(window_size=2),也就是說我們僅選輸入詞前後各兩個詞和輸入詞進行組合。下圖中,藍色代表input word,方框內代表位於視窗內的單詞。
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
根據word內容對word進行重新命名及另存
用到了 os.walk os.path.join docx.document shutil.copyfile os.rename 根據word中內容對word進行重新命名 內容 並儲存至指定資料夾 import os import docx import shutil file d 申報 評獎 nu...
C 對Word的操作 一
前提 匯入com庫 microsoft word 11.0 object library.引用裡面就增加了 object start 0 object end 0 word.range tablelocation odoc.range ref start,ref end odoc.tables.ad...