Doc2Vec 是否学习标签的表示?

Does Doc2Vec learn representations for the tags?

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

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

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

那个教程有点过时了,我猜这个参数已经不存在了,Doc2Vec 是如何处理标签的?

对于 gensim 的 Doc2Vec,您的文本示例必须是类似于示例 TaggedDocument class 的对象:具有 wordstags 属性。 tags 属性 应该是 'tags' 的列表,它们用作将从相应文本中学习的文档向量的键。

在 classic/original 的情况下,每个文档都有一个标签——基本上是该文档的唯一 ID。 (标签可以是字符串,但对于非常大的语料库,如果您使用纯 Python 整数标签,从 0 开始,没有跳过的值,Doc2Vec 将使用更少的内存。)

标签用于在训练后查找学习的向量。如果您在训练期间有一个文档带有单个标签 'mars',您将使用以下方法查找学习向量:

model.docvecs['mars']

如果您进行 model.docvecs.most_similar['mars'] 调用,结果也将通过它们的标签键报告。

这些标签 只是 doc-vectors 集合中的键——它们没有语义意义,即使文本中的单词标记重复了一个字符串,也有此标签键与单词之间没有必然关系。

也就是说,如果您有一个文档,其单个 ID 标记为 'mars',则通过该键 (model.docvecs['mars']) 访问的学习文档向量与任何学习单词之间没有本质关系- 使用相同字符串键访问的向量 (model.wv['mars']) – 它们来自不同的向量集合。