Python 如何将熊猫数据帧中加载的嵌入转换为Gensim模型?

Python 如何将熊猫数据帧中加载的嵌入转换为Gensim模型?,python,pandas,gensim,Python,Pandas,Gensim,我有一个数据帧,其中索引是单词,我有100个带浮点数的列,这样对于每个单词,我都将其嵌入为100d向量。我想把我的DataFrame对象转换成一个,这样我就可以使用它的方法;特别是gensim.models.keyedvectors.most_similar(),这样我就可以在我的子集中搜索类似的单词 哪种方法是首选的 谢谢我不确定这样做的“首选”方式是什么,但gensim期望的格式很容易复制: data = pd.DataFrame([[0.15941701, 0.84058299],

我有一个数据帧,其中索引是单词,我有100个带浮点数的列,这样对于每个单词,我都将其嵌入为100d向量。我想把我的DataFrame对象转换成一个,这样我就可以使用它的方法;特别是
gensim.models.keyedvectors.most_similar()
,这样我就可以在我的子集中搜索类似的单词

哪种方法是首选的

谢谢

我不确定这样做的“首选”方式是什么,但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))
标题是两个空格分隔的整数,即词汇表中的单词数和单词向量的长度。每行的第一列是单词本身。其余的列是单词向量的元素。fmt的奇怪之处在于将第一个元素格式化为字符串,将其余元素格式化为浮点

然后可以将其加载到gensim中并执行任何操作:

import gensim

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

word_vectors.similarity('these', 'words')