Skip to main content
 首页 » 编程设计

python之doc2vec 中单个文档的多个标签。标签文档

2025年05月04日23thcjp

是否可以在单个文档具有多个标签的情况下训练 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'] 

请您参考如下方法:

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

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

因此,在训练之后,您将通过如下操作获得示例数据的文档向量:

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

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