在 doc2vec 中,当多个文档共享相同标签时如何正确建模?

数据挖掘 word2vec 词嵌入 gensim
2021-10-12 09:38:11

在我为 doc2vec 培训找到的所有示例中,文档都带有唯一标签。当许多文档共享相同的标签时会发生什么?

gensim 的 TaggedDocument 接受相同文本的列表标签。这意味着我们可以为同一文本有多个标签。但是,我不清楚在同一标签下使用零散的文本是否是一种好习惯。您仍然可以训练并获得嵌入。但他们好吗?

例如,我在这里发布的问题有标题、详细描述和标签列表。如何为 doc2vec 建模以查找类似问题?

请注意,某些标签不在标题或描述中。将它们包含在 doc2vec 培训中的最佳方式是什么。将它们洗牌并与标题和描述连接?还是将它们作为单独的条目保存在同一标签下?

2个回答

我试图解释Doc2Vec 中文档向量中使用的标签背后的逻辑 - 如何标记段落 (gensim)

回答你的问题。

1)当两个文档共享相同的标签时,doc2vec算法从两个文档中确定标签的语义。请注意,doc2vec 学习标签的语义含义,而不是单个文档。

2)同样,你不是在学习文件。您正在指示 doc2vec 学习标签的嵌入。因此,如果为一个文档提供多个标签,则所有标签都从文档中接收到相同的语义含义,并且当一部分标签在其他文档中使用时,继续从它们中学习更多的语义含义。例如。文档 1->hunt, bite, eat, flesh文档 2-> life, love, eat, money很明显,doc1 是关于动物的,doc2 是关于人类的,标签eat将具有两者的语义含义。

3)如果您的目标是找到类似的问题,那么您可能应该为整个问题只给出一个标签,然后找到一个具有更接近余弦距离的标签的问题。

4) 切勿将标签与文字混淆。在 word2vec 中,单词学习嵌入,而在 doc2vec 中,标签从文档中使用的单词中学习嵌入。如果您想为文档添加更多语义含义,则可以将其作为单词添加到特定文档中。如果您想为标签添加语义含义,如果您希望标签具有很强的亲和力,则必须将单词添加到带有该标签的每个文档中(但手动添加单词,对我个人来说不是一个好的选择)。

对于您提出的示例,有关此问题的答案和讨论可能会有所帮助-有关标签选项的一些要点:

Doc2Vec - 如何标记段落 (gensim)