doc2vec 中单个文档的多个标签。标记文档

unk*_*_jy 3 python nlp gensim word2vec doc2vec

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

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

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

model['UID_1']
Run Code Online (Sandbox Code Playgroud)

goj*_*omo 6

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

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

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

model.docvecs['UID_1']
model.docvecs['action']
Run Code Online (Sandbox Code Playgroud)

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