2016-12-25 13 views
2

私はword2vecを使用して2つの単語の類似点を作成しようとしています。手動で行いながら、成功しました。私は2つの大きなtxtファイルを持っています。私はループを作りたい。私はルーピングのためにいくつかの方法を試しましたが、失敗しました。私は専門家に頼むことにしました。ループ内の2つの入力でWord2Vecを使用するにはどうすればよいですか?

私のコード:

import gensim 

model = gensim.models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) 
with open('myfile1.txt', 'r') as f: 
    data1 = f.readlines() 

with open('myfile2.txt', 'r') as f: 
    data2 = f.readlines() 

data = zip(data1, data2) 

with open('myoutput.txt', 'a') as f: 
    for x in data: 
     output = model.similarity(x[1], x[0]) # reading each word form each files 
     out = '{} : {} : {}\n'.format(x[0].strip(), x[1].strip(),output) 
     f.write(out) 

私INPUT1、(テキスト1)

street 
spain 
ice 
man 

私INPUT2(テキスト2)私は、この出力(output.txtとを)したい

florist 
paris 
cold 
kid 

street florist 0.19991447551502498 
spain paris 0.5380033328157873 
ice cold 0.40968857572410483 
man kid 0.42953233870042506 
+0

インデントとエラーを修正してください。 –

+0

私はあなたのコードをチェックして、それは動作しています!あなたが直面している問題は何ですか?何かエラーが出ていますか? –

+0

ファイル: "testing1.py"、行14、 出力= model.similarity(x [1]、x [0])#各ファイルから各単語を読み取る# ファイル "/ anaconda2/lib/python2.7/site-packages/gensim-0.13.3-py2.7-linux-x86_64.egg/gensim/models/word2vec.py "、行1598、類似点 リターンドット(matutils.unitvec(self [w1] )、matutils.unitvec(self [w2])) ファイル "anaconda2/lib/python2.7/site-packages/gensim-0.13.3-py2.7-linux-x86_64.egg/gensim/models/word2vec.py "、1578行目、__getitem__ return self.syn0 [self.vocab [words] .index] KeyError: 'street \ n' –

答えて

0
import gensim 

model = gensim.models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) 

file1 = [] 
file2 = [] 

with open('myfile1.txt','rU') as f: 
for line in f: 
file1.append(line.rstrip()) 

with open('myfile2.txt','rU') as f1: 
for line1 in f1: 
file2.append(line1.rstrip()) 

resutl=[] 
f=open('Output2.txt', "w") 
for i in file1 : 
for g in file2 : 
     temp=[] 
     temp.append(i) 
     temp.append(g) 
     w = model.similarity(i,g) 
     temp.append(w) 
     result=i+','+g+','+str(w) 

     f.write(result) 
     f.write('\n') 

     f.close() 

ループに問題があり、2つのループが一緒になっている必要があります。

関連する問題