不确定执行此操作的“首选”方式是什么,但 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 的奇怪之处在于将第一个元素格式化为字符串,其余元素格式化为浮点数。
然后可以将其加载到 gensim 中并执行以下操作:
import gensim
from gensim.models.keyedvectors import KeyedVectors
word_vectors = KeyedVectors.load_word2vec_format('test.txt', binary=False)
word_vectors.similarity('these', 'words')