hip*_*ido 1 python pandas gensim
我有一个DataFrame,其中的索引是单词,并且我有100列具有浮点数,因此对于每个单词,我都将其嵌入为100d向量。我想将DataFrame对象转换为gensim模型对象,以便可以使用其方法。特别是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))
Run Code Online (Sandbox Code Playgroud)
标题是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')
Run Code Online (Sandbox Code Playgroud)