代码之家  ›  专栏  ›  技术社区  ›  Simon Hessner

gensim doc2vec-如何推断标签

  •  0
  • Simon Hessner  · 技术社区  · 7 年前

    我正在使用gensim的doc2vec实现,我有几千个带有四个标签的文档。

    yield TaggedDocument(text_tokens, [labels])
    

    标记文件 s、 但是,我不知道如何推断在培训期间没有看到的文档的标记。我看到有一个infere_vector方法返回嵌入向量。但我怎么才能从中得到最可能的标签呢?

    2 回复  |  直到 7 年前
        1
  •  4
  •   gojomo    7 年前

    这个 infer_vector() 方法将为新文本训练一个doc向量,该文本应该是一个象训练文本一样预处理的标记列表。

    正如你所说, model.docvecs['my_tag'] 将为训练期间已知的一个标记获取预先训练的doc向量。

    对照所有已知标记的向量检查新向量的相似性是查看新文档与现有标记相似的合理基线方法。作为一种“最近邻居”方法,最近的标记或最近的几个标记可能是未知文档的合理标记。

    Doc2Vec 方法是给每个文档一个唯一的ID,并让每个ID标记获得自己的向量。然后,也许,用那些带有已知标签的向量来训练一些 将向量映射到标签的分类器。(在某些情况下,如果人类将“doc向量空间的区域”与特定标签相关联,这可能会更好地工作 不是 每个标签的单个质心点周围的整齐半径。)

    使用或添加称为文档标记的已知标签的方法通常会有帮助。但也要注意的是,如果您只在数千个文档中使用4个唯一的标记,这在功能上与使用4个巨大的文档来训练模型非常相似,这些文档可能不擅长在大维度空间(4维)中定位这4个向量,因为不需要太多的变化/细微的对比将经过训练的向量轻推到有用的排列中。(典型出版 DOC2矢量 work使用了数万到数百万个独特的文档和文档标签。)

        2
  •  1
  •   Simon Hessner    7 年前

    我找到了解决办法:

    model.docvecs['my_tag']
    

    推荐文章