如何用词向量技术计算两个文档的相似度

最近群里发生了一个文档相似度分享。决定回答一个。

首先,如果不局限于NN方法,可以用BOW+tf-idf+LSI/LDA的系统来求解,也就是俗称的01或者一个热表示。

其次,如果楼主指定一定要用现在流行的NN方法,也就是俗称的word-embedding,当然word2vec是第一种(虽然不是DNN)。然后在得到word2vec的词向量后,通过简单加权/标签加权/tf-idf加权就可以得到文档向量。这是一条路。当然,在加权之前,一般要把停用词干掉,把词聚类。

还有doc2vec中的段落向量也属于直接获取doc向量的方法。特性是修改word2vec中的cbow和skip-gram模型。根据论文“句子和文档的分布式表示”(ICML 2014)。

还有一种按照语法树加权的方式,是ICML2011提出的。参见论文《用递归神经网络解析自然场景和自然语言》,后续还有几个版本。

当然,获取词向量的方式不仅限于word2vec,RNNLM和glove也可以获取传说中的高质量词向量。