這篇文章主要講解了在python下word2vec詞向量的詳細(xì)解析,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
項目中要對短文本進(jìn)行相似度估計,word2vec是一個很火的工具。本文就word2vec的訓(xùn)練以及加載進(jìn)行了總結(jié)。
word2vec的原理就不描述了,word2vec詞向量工具是由google開發(fā)的,輸入為文本文檔,輸出為基于這個文本文檔的語料庫訓(xùn)練得到的詞向量模型。
通過該模型可以對單詞的相似度進(jìn)行量化分析。
word2vec的訓(xùn)練方法有2種,一種是通過word2vec的官方手段,在linux環(huán)境下編譯并執(zhí)行。
在github上下載word2vec的安裝包,然后make編譯。查看demo-word.sh腳本,得到word2vec的執(zhí)行命令:
./word2vec -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 1 -iter 15
參數(shù)解釋:
1)-train:需要訓(xùn)練的語料庫,text8為語料庫文件名
2)-output:輸出的詞向量文件,vectors.bin為輸出詞向量文件名,.bin后綴為二進(jìn)制文件。若要以文檔的形式查看詞向量文件,需要將-binary參數(shù)的值由1改為0
3)-cbow:是否使用cbow模型進(jìn)行訓(xùn)練。參數(shù)為1表示使用cbow,為0表示不使用cbow
4)-size:詞向量的維數(shù),默認(rèn)為200維。
5)-window:訓(xùn)練過程中截取上下文的窗口大小,默認(rèn)為8,即考慮一個詞前8個和后8個詞
6)-negative:若參數(shù)非0,表明采樣隨機(jī)負(fù)采樣的方法,負(fù)樣本子集的規(guī)模默認(rèn)為25。若參數(shù)值為0,表示不使用隨機(jī)負(fù)采樣模型。使用隨機(jī)負(fù)采樣比Hierarchical Softmax模型效率更高。
7)-hs:是否采用基于Hierarchical Softmax的模型。參數(shù)為1表示使用,0表示不使用
8)-sample:語料庫中的詞頻閾值參數(shù),詞頻大于該閾值的詞,越容易被采樣。默認(rèn)為e^-4.
9)-threads:開啟的線程數(shù)目,默認(rèn)為20.
10)-binary:詞向量文件的輸出形式。1表示輸出二進(jìn)制文件,0表示輸出文本文件
11)-iter:訓(xùn)練的迭代次數(shù)。一定范圍內(nèi),次數(shù)越高,訓(xùn)練得到的參數(shù)會更準(zhǔn)確。默認(rèn)值為15次.
./word2vec -train mytext.txt -output vectors.txt -cbow 1 -size 200 -window 5 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 0 -iter 30
示例為訓(xùn)練一個名mytext.txt的文檔。設(shè)置輸出詞向量的格式為.txt文本文檔,所以還需要將-binary參數(shù)設(shè)置為0.
訓(xùn)練模型采用基于隨機(jī)負(fù)采樣的cbow模型。由于短文本字?jǐn)?shù)極為有限,所以-window參數(shù)設(shè)置為5,設(shè)置詞向量的維數(shù)
為200,為了使得到的參數(shù)更準(zhǔn)確,將迭代次數(shù)增加至30.其他參數(shù)使用默認(rèn)值。
訓(xùn)練以后得到一個txt文本,該文本的內(nèi)容為:每行一個單詞,單詞后面是對應(yīng)的詞向量。
gensim加載詞向量:
保存詞向量模型到pkl中(注意:這里是對詞向量模型進(jìn)行構(gòu)建)
from gensim.models import KeyedVectors if not os.path.exists(pkl_path): # 如果pickle模型不存在,則構(gòu)建一個 print '詞向量模型不存在,開始構(gòu)建詞向量模型...' Word2Vec = KeyedVectors.load_word2vec_format(vecs_path, binary=False) # 加載詞向量模型 f = file(pkl_path, 'wb') pickle.dump(Word2Vec, f, True) f.close() print '詞向量模型構(gòu)建完畢...' f= file(pkl_path, 'rb')# 打開pkl文件 word2vec=pickle.load(f)# 載入pkl
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
標(biāo)題名稱:在python下word2vec詞向量的詳細(xì)解析-創(chuàng)新互聯(lián)
URL分享:http://jinyejixie.com/article0/dcgeio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、服務(wù)器托管、網(wǎng)站收錄、網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容