2、TF-IDF和BM25

情到浓时终转凉″ 提交于 2019-12-26 00:34:36

这两者计算的都是文档和文本之间的相似度,如果是两个短文本貌似也可以。

1、TF-IDF = TF * IDF

      假设文本是“我怎么这么帅气”,4个词,第一个词“我”, 文档1中一共有10个词,“我”有2次,这个词的词频都是2,这就是TF

      第一个词“我”,在所有文档中,有“我”这个词的文档数是m,文档总数是n,则IDF = log(n/(m+1))

      所有词叠加就是这个文本和这个文档的相似度

     优点:从常理来判断,一个词在这个文档中出现的次数越多,对于这个文档这个词就越重要;一个词在很多文档中都出现过,就说明这个词不能区分这些文档,重要性越低;这就是为何要tf *idf。

    TF-IDF还可以用来统计多个文档中每个文档中的重要词。

    缺点:分词可能会导致语义的变化;TF的值并没有归一化在一个合理的区间。

2、针对上面的缺点,提出了BM25:实际就是TF-IDF的变形

    所以BM25就优化了TF的计算过程,    

fi词q在文档1中出现的频率。k1 = 2, b = 0.75,后面一项一般为1,dl是文档1的长度,avgdl是所以文档的平均长度,这样的话TF的值就归一化在一个区间了。

3、除了上面计算两个文本相似度的方法之外,还有DSSM、MatchPyramid、BiMPM、词向量

   DSSM:把两个文本转换成低位向量,和词向量类似

   MatchPyramid:这个比较巧妙了,假设两个文本句子长度分别是m和n。利用glove向量或者之前训练过的向量得到一个相似度矩阵m*n,然后多个卷积核得到多个featureMap,再池化,再卷积,再池化,再全连接得到向量,使用softmax得到概率。

                                   

   BiMPM:两个文本长度是m和n,通过双向RNN分别计算两个文本的隐含层向量,再整合这些向量,文本1的还是m个,文本2的还是n,只不过现在都包含了彼此的信息,再分别放入RNN,然后去两个方向的最终结果,相当于4个向量拼接经过softmax。

                                            

      

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!