我有一个DataFrame,其中索引是单词,我有100列浮点数,这样对于每个单词,我都将其嵌入为100d向量。我想将DataFrame对象转换为gensim model object,以便可以使用它的方法;特别是gensim.models.keyedvectors.most_similar()
,这样我就可以在我的子集中搜索类似的单词。
哪种方法更好?
谢谢
我有一个DataFrame,其中索引是单词,我有100列浮点数,这样对于每个单词,我都将其嵌入为100d向量。我想将DataFrame对象转换为gensim model object,以便可以使用它的方法;特别是gensim.models.keyedvectors.most_similar()
,这样我就可以在我的子集中搜索类似的单词。
哪种方法更好?
谢谢
2条答案
按热度按时间5kgi1eie1#
不知道“首选”的方式是什么,但gensim期望的格式很容易复制:
头部是2个空格分隔的整数,词汇表中的单词数量和单词向量的长度。每行的第一列是单词本身。其余列是单词向量的元素。fmt的奇怪之处在于将第一个元素格式化为字符串,其余的格式化为浮点数。
然后可以在gensim中加载这个并做任何事情:
jobtbby32#
对于其他人在这里寻找一个相对快速的答案,Ken Syme的答案几乎对我有用,我只需要将
fmt=["%s"] + ["%.18e"]*len(data.columns)
更改为fmt="%s"
。还要注意,OP的df已经有单词作为索引,所以如果你自己的df有自动生成的数字作为索引,单词作为第一个数据列“单词”,你需要在这里给出的
reset_index().values
之前做一个额外的步骤,比如df.set_index('words')
。