我已经使用 Doc2vecc 训练了一组文档。
https://github.com/mchen24/iclr2017
我正在尝试为未见的文档生成嵌入向量。我已经按照 go.sh 中提到的方法训练了这些文档。
"""time ./doc2vecc -train ./aclImdb/alldata-shuf.txt -word wordvectors.txt -output docvectors.txt -cbow 1 -size 100 -window 10 - negative 5 -hs 0 -sample 0 -threads 4 -binary 0 -iter 20 -min-count 10 -test ./aclImdb/alldata.txt -sentence-sample 0.1 -save-vocab alldata.vocab"""
我得到了训练集的 docvectors.txt 和 wordvectors.txt。现在,我想知道如何使用相同的模型生成未见测试文档的向量,而无需重新训练。
回答:
据我所知,该 doc2vecc.c
代码(以及论文)的作者(https://github.com/mchen24)只是对一些示例“段落向量”代码进行了最小的修改,而这些代码本身是对原始 Google/Mikolov 的 word2vec.c
(https://github.com/tmikolov/word2vec/blob/master/word2vec.c)的最小修改。
无论是“段落向量”的修改还是后续的 doc2vecc
修改,似乎都没有包含推断新文档向量的功能。
因为这些是无监督算法,对于某些目的来说,可能适合在同一批次的训练中,为训练和测试文本计算用于下游分类任务的文档向量。(您的最终目标实际上可能有未标记的示例来帮助学习文档向量化,即使您的分类器应该在一些已知标签文本的子集上进行训练和评估。)