如何使用Gensim Doc2vec infer_vector()进行大型DataFrame?

时间:2017-12-20 11:59:13

标签: python gensim doc2vec

我使用Gensim的doc2vec为大型语料库创建了文档向量。

sentences=gensim.models.doc2vec.TaggedLineDocument('file.csv')

model = gensim.models.doc2vec.Doc2Vec(sentences,size = 10, window = 800, min_count = 1, workers=40, iter=10, dm=0)

现在我使用Gensim的infer_vector()使用这些文档向量为另一个样本语料库创建文档向量

Eg: model.infer_vector('This is a string')

有没有办法通过infer_vector传递整个DataFrame并获取DataFrame中每一行的输出向量?

2 个答案:

答案 0 :(得分:1)

Doc2Vec infer_vector()只会将单个文本示例作为单词标记列表。所以你不能传递一批例子。 (而且,你不应该传入非标记化的字符串 - 而是列出令牌,以与训练数据预处理相同的方式进行预处理。)

但是,您可以使用一个为您添加infer_vector()的函数,正如@COLDSPEED评论所暗示的那样。如果你想要有意义的结果,那么列应该有令牌列表,而不是字符串。

此外,大多数用户发现infer_vector()使用其steps参数的非默认值(远大于其默认值5)可以更好地工作,并且可能使用较小的值来启动alpha }参数(比如训练默认值0.025比推理默认值0.1)。

答案 1 :(得分:0)

@gojomo:感谢您的回答,但我尝试使用标记化行和原始字符串进行推断,并获得相同的文档向量。

有没有办法知道创建的文档向量是否有意义?