3

是否可以训练单个文档具有多个标签的 doc2vec 模型?例如,在电影评论中,

doc0 = doc2vec.TaggedDocument(words=review0,tags=['UID_0','horror','action'])
doc1 = doc2vec.TaggedDocument(words=review1,tags=['UID_1','drama','action','romance'])

在每个文档都有唯一标签 (UID) 和多个分类标签的情况下,我如何在训练后访问向量?例如,最合适的调用语法是什么

model['UID_1']
4

1 回答 1

6

是的,可以为每个文档提供多个标签,这就是为什么 的tags属性TaggedDocument应该是一个列表,以及为什么用于引用学习的 doc-vectors 的键被称为“标签”而不是“id”的原因。(虽然 gensim 所基于的原始“段落向量”论文Doc2Vec仅使用每个文档的一个唯一标识符进行描述,但这是一种自然扩展。)

要获取任何 doc-vector,您必须通过模型的docvecs属性访问它,而不是模型本身。(模型本身,继承自 的功能Word2Vec,将包含词向量,而不是文档向量,并且这些词向量仅在某些Doc2Vec模式下才有意义。)

因此,在训练之后,您将通过以下操作获得示例数据的 doc-vectors:

model.docvecs['UID_1']
model.docvecs['action']

请记住,当您训练更多向量时,您可能需要更多数据。粗略地说,可以从您的数据中做出的任何有价值的概括都来自将原始数据压缩成更小的表示形式。如果你在相同数量的数据上训练一个更大的模型——更多的词向量文档标签向量作为内部可调参数——结果可能会更加“稀释”甚至“过度拟合”。(也就是说,它可能会反映训练数据的记忆特性,而不是对下游目的或新文本有用的概括性见解)。

于 2017-09-07T00:51:40.013 回答