【问题标题】:How to use Gensim Doc2vec infer_vector() for large DataFrame?如何将 Gensim Doc2vec infer_vector() 用于大型 DataFrame?
【发布时间】:2017-12-20 11:59:12
【问题描述】:

我使用 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中每一行的输出向量?

【问题讨论】:

  • df['col'].apply(model.infer_vector)?
  • 或者,也许这适用于列表:model.infer_vector(df['col'])
  • 谢谢,df['col'].apply(model.infer_vector) 工作

标签: python gensim doc2vec


【解决方案1】:

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

但是,正如@COLDSPEED 评论所建议的那样,您也许可以使用为您多重应用infer_vector() 的函数。不过,如果您想要有意义的结果,该列应该有标记列表,而不是字符串。

此外,大多数用户发现infer_vector() 使用其steps 参数的非默认值(比其默认值5 大得多)效果更好,并且其起始alpha 参数的值可能更小(例如更多比如训练默认值 0.025 比推理默认值 0.1)。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      相关资源
      最近更新 更多