我已经在文档语料库上训练了一个 word2vec 模型。然后我计算每个文档中每个单词的词频( TfIDF中的相同 Tf ),将每个单词 Tf 乘以其对应的单词向量(这是加权部分),并将这些加权向量中的每一个元素逐个相加以获得文档的单个向量。
这种方法有效吗?
举个例子,让它更清楚。拿文件:
“汽车在路上行驶”
每个单词的 Tf 将是{'the':0.3333, 'car':0.1666, 'drives':0.1666, 'on':0.1666, 'road':0.16666}
(通过获取单词的字数并除以文档中的总单词数获得)。如果我们有一个训练有素的 word2vec 模型,我们可以执行以下操作
其中每个列向量是该词的词向量。最终结果是一个 表示文档的维向量。
我很欣赏还有其他方法,例如doc2vec,它们的目标是做非常相似的事情,但方式要复杂得多。但是我的方法有效吗/这里有什么明显的错误吗?
我已经测试过这种方法,甚至使用了一些文档相似度指标(是的,当然是在对向量进行归一化之后),并为我的工业应用产生了一些不错的结果。但我想更多地了解这种方法的学者。
这种方式的好处是,通过使用 word2vec 向量,由于词向量之间的语义相似性(欧几里德接近度),文档之间的相似性查询会产生非常好的结果,即使跨文档使用不同的词也是如此;这是 TfIDF 无法做到的,因为每个单词的处理方式都不同。
提前致谢!