1. 文档相似度
文档相似度计算在自然语言处理的工业界有较多的应用,尤其应用在文本检索以及文本召回的场景当中。目前比较流行的算法都是在使用神经网络的表征作为文本特征,然后通过faiss快速检索来召回,或者直接通过计算BM25,编辑距离,proximity等文本特征的融合来作为文本召回的方式。但是使用神经网络的表征会带来许多超参数,而使用传统文本表征的方式,F1 score会偏低。今天带来的一个基于词传输的文档相似度的计算方式,既不存在超参数,又能达到一个比较好的分数。
ps. 这两个英文句子会贯穿全文
2. 预备知识
在说WMD之前需要说几个大家已经熟知但是早已忘记的点。
第一,word embedding & Word2Vec。说说历史吧,还记NNLM这个语言模型吗?这个就是大名鼎鼎的神经网络语言模型。预测任务很简单,就是下面这个东东:
其实说这些就应该够了,关于WMD,大家只需要关心Word2Vec是一个能表达词跟词之间关系的比较好用的表征就可以。用不同语料不同网络train出来的Word2Vec也能对结果产生不同影响。
第二,BOW & TF-IDF
都是统计词频的方法,还有单词出现在不同文档中的概率。假设A 和 B 同时出现在同一个文档里,而且经常跟 C、D、E、F在一起,那么两个词向量就会很相似。两个最大的缺点就是,刚刚说到的稀疏性导致向量近似正交(near-orthogonality),以及 词跟词之间关系捕捉不到。这里就不过多赘述原理,介绍这个也是为了这俩给WMD做炮灰做铺垫
第三,Latent Dirichlet Allocation & Latent Semant