Doc2Vec是否学习标签的表示?

时间:2017-04-21 13:16:58

标签: gensim doc2vec

我正在使用Doc2Vec标记作为我的文档的唯一标识符,每个文档都有不同的标记,没有语义含义。我正在使用标签查找特定文档,以便我可以计算它们之间的相似性。

标签会影响我的模型的结果吗?

在这个tutorial中,他们讨论了一个参数train_lbls=false,如果设置为false,则没有为标签(标签)学习的表示。

该教程有点过时了,我猜参数不再存在,Doc2Vec如何处理标签?

1 个答案:

答案 0 :(得分:9)

对于gensim的Doc2Vec,您的文字示例必须是与示例TaggedDocument类相似的对象:具有wordstags属性。 tags属性应该是一个'标记列表,它们作为将从相应文本中学习的doc-vectors的键。

在经典/原始案例中,每个文档都有一个标记 - 实际上是该文档的唯一ID。 (标签可以是字符串,但对于非常大的语料库,如果你使用普通Python整数的标签,从0开始,没有跳过的值,Doc2Vec将使用更少的内存。)

标签用于在训练后查找学习的向量。如果您在培训过程中使用单个标记'mars'获得了文档,则可以使用以下方法查找学习的向量:

model.docvecs['mars']

如果您进行了model.docvecs.most_similar['mars']通话,结果也会通过标签键进行报告。

标签是只是键到doc-vectors集合中 - 它们没有语义含义,即使从文本中的单词标记重复一个字符串,也没有此标记键和单词之间的必要关系。

也就是说,如果您的单个ID标记是“mars”,那么通过该密钥访问的学习doc-vector(model.docvecs['mars'])之间没有本质关系。 ,以及使用相同字符串键(model.wv['mars'])访问的任何学习过的单词向量 - 它们来自单独的向量集合。