我正在使用Doc2Vec标记作为我的文档的唯一标识符,每个文档都有不同的标记,没有语义含义。我正在使用标签查找特定文档,以便我可以计算它们之间的相似性。
标签会影响我的模型的结果吗?
在这个tutorial中,他们讨论了一个参数train_lbls=false
,如果设置为false,则没有为标签(标签)学习的表示。
该教程有点过时了,我猜参数不再存在,Doc2Vec如何处理标签?
答案 0 :(得分:9)
对于gensim的Doc2Vec,您的文字示例必须是与示例TaggedDocument
类相似的对象:具有words
和tags
属性。 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']
)访问的任何学习过的单词向量 - 它们来自单独的向量集合。