1. 程式人生 > >rword2vec開源演算法包實現word2vec詞向量生成

rword2vec開源演算法包實現word2vec詞向量生成

R語言中rword2vec包和wordVectors包均能實現word2vec詞向量生成,目前尚未研究兩者之間的優劣(但從演算法包的description來看,建議用rword2vec)

rword2vec包是R與Google的word2vec介面,rword2vec將文字語料庫作為輸入,將單詞向量作為輸出。它首先根據訓練文字資料構建詞彙表,然後學習單詞的矢量表示

#安裝rword2vec
library('devtools')
install_github('mukul13 / rword2vec')

#訓練word2vec模型
#layer1_size 詞向量維數
#train_file 訓練資料
#binary,output format,1-binary,0-txt
#cbow,skip-gram(0) or continuous bag of words(1)(cbow模型快一些,skip-gram模型效果好一些)
#alpha:學習速率
#output_file 結果輸出檔案即每個詞的向量
#window 訓練視窗大小,5表示每個詞考慮前5個詞與後5個詞
#sample 詞語出現頻率的下限,0.00001 to 0.01(如果一個詞在訓練樣本中出現的頻率越大,那麼就越會被取樣)
#min_count 設定最低頻率為5,如果一個詞語在文件中出現的次數小於該閾值,則捨棄該詞
#classes 詞聚類簇個數,k-means聚類
#num_threads 執行緒數
model<-word2vec(layer1_size=50,train_file='corpus.txt',save_vocab_file='vocab.txt',binary=1,cbow=0,alpha=0,output_file='tian.bin',window=5,sample=0.00001,min_count=6,num_threads=2)

#distance得到最接近的單詞,file_name必須是二進位制檔案
dist<-distance(file_name='tian.bin',search_word='原告',num=10)

#在詞向量空間中進行類比
ana=word_analogy(file_name="tian.bin",search_words="paris france berlin",num=10)

#訓練word2phrase模型(將單詞轉化為短語,phrase.txt中短語由詞和_組成)
#可以使用這個phrase.txt訓練word2vec模型
word2phrase(train_file='corpus.txt',output_file='phrase.txt')

#單詞個數統計
word_count<-read.table('vocab.txt')

#bin to txt
bin_to_txt("tian.bin","tian.txt")
data<-as.data.frame(read.table("tian.txt",skip=1))