在doc2vec中为一堆句子分配相同标签有什么作用?我有一个文档集合,我想使用gensim来学习向量,以执行“文件”分类任务,其中文件是指给定ID的文档集合。我想到了几种标记方法,我想知道它们之间的区别是什么,最好的是-
获取文档d1,为标签分配标签doc1
并进行训练。对其他人重复
获取文档d1,将标签doc1
分配给标签。然后将文档标记为句子,并为其标签分配标签doc1
,然后训练完整文档和单个句子。对其他人重复
例如(忽略句子未标记化)-
Document - "It is small. It is rare"
TaggedDocument(words=["It is small. It is rare"], tags=['doc1'])
TaggedDocument(words=["It is small."], tags=['doc1'])
TaggedDocument(words=["It is rare."], tags=['doc1'])
doc1
分配了唯一的标签。完整的文档具有所有句子标记以及doc1
。示例-
Document - "It is small. It is rare"
TaggedDocument(words=["It is small. It is rare"], tags=['doc1', 'doc1_sentence1', 'doc1_sentence2'])
TaggedDocument(words=["It is small."], tags=['doc1', 'doc1_sentence1'])
TaggedDocument(words=["It is rare."], tags=['doc1', 'doc1_sentence2'])
我还有一些其他的类别标签,这些标签将分配给我。那么最好的方法是什么?
答案 0 :(得分:2)
您可以做所有这一切!将相同的标签分配给多个文本几乎具有与将这些文本组合成一个较大的文本并为其分配标签的效果相同。略有不同是针对存在上下文窗口的Doc2Vec
模式– PV-DM(dm=1
)。使用单独的文本,永远不会在句子的结尾/开头处出现上下文。
实际上,由于gensim
的优化代码路径对文本大小有10,000个令牌的限制,因此将较大的文档拆分为子文档,但是有时需要重复其标签作为解决方法。
您特别建议的是,对完整文档和文档片段进行培训都行得通,但也会使文本数量增加一倍(从而提高了培训注意力/个体预测示例的效果) 'doc1'
标签,相比之下,窄句子标签则更是如此。您可能想要或不想要-这可能会影响每个产品的相对质量。
最好的还不清楚-它取决于您的语料库和最终目标,因此应通过实验确定,并给出清晰的最终评估,以便您可以自动/系统地进行严格搜索以找到最好的。
不过,一些相关说明:
Doc2Vec
往往与每个文档至少十几个单词或更多单词的文档配合使用会更好。'words'
需要标记化-字符串列表,而不是字符串。