2017-09-19 8 views
0

私はインデックスが単語であり、フロート番号を持つ100個の列を持つDataFrameを持っているので、各単語に対して100dベクトルとして埋め込みます。 DataFrameオブジェクトをgensim model objectに変換して、そのメソッドを使用できるようにしたいと思います。特別にgensim.models.keyedvectors.most_similar()私は私のサブセット内の類似の単語を検索することができます。Pandas DataFrameに埋め込まれた埋め込みをGensimモデルに変換するにはどうすればいいですか?

これを行うのが好ましい方法はどれですか?

おかげ

答えて

1

これを行うための「好ましい」方法があるが、gensimが期待する形式を複製することは非常に簡単であるかわからない:

data = pd.DataFrame([[0.15941701, 0.84058299], 
        [0.12190033, 0.87809967], 
        [0.06293788, 0.93706212]], 
        index=["these", "be", "words"]) 

np.savetxt('test.txt', data.reset_index().values, 
      delimiter=" ", 
      header="{} {}".format(len(data), len(data.columns)), 
      comments="", 
      fmt=["%s"] + ["%.18e"]*len(data.columns)) 

ヘッダーで2スペースで区切られた整数を、数語彙の単語の数と単語ベクトルの長さ。各行の最初の列は単語そのものです。残りの列は単語ベクトルの要素です。 fmtの不思議さは、最初の要素を文字列としてフォーマットし、残りはfloatとしてフォーマットすることです。

はその後gensimでこれをロードし、何を行うことができます。

import gensim 

from gensim.models.keyedvectors import KeyedVectors 
word_vectors = KeyedVectors.load_word2vec_format('test.txt', binary=False) 

word_vectors.similarity('these', 'words') 
関連する問題