admin 管理员组文章数量: 1087747
句子相似度计算笔记
最近用到了句子相似度的计算,把学到的在这里总结一下。
句子相似度的计算常用的大概三种,一个TF-IDF,一个word2vector,还有在word2vector的基础上使用深度学习继续提取特征。
TF-IDF
TF-IDF感觉应该用在长文本或文章的相似度计算。
词频(TF) 指某个词在句子(文章)中出现的次数。
词频计算时一般会归一化,使用
TF = 某个词在句子中出现的次数 / 句子的总词数。
逆文档频率(IDF) 指某个词在所有句子(文章)中出现的频率。
某个词出现的文章数越少,说明这个词越不常见,越能反应出句子(文章)的特点。
计算时一般使用如下公式,分母加一是防止分母为零。
IDF = log(句子总数 / 该词出现的句子数+1)
TF-IDF就是TF与IDF的乘积,它与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。
更详细的可以看阮一峰老师的文章,感觉这个方法现在用的比较少了,毕竟word2vector效果更好,使用范围也更广。
word2vector
word2vector就是先对句子分词,获取每个词对应的词向量,然后将所有的词向量相加求平均,得到句子向量,最后计算两个句子向量的余弦值。
cosθ=a·b/|a|*|b|
word2vec一般使用其他人训练好的词向量,这个在github上一搜就可以搜到了,当然也可以自己训练,就是费时费力,效果还不一定会比别人训练的好。
深度学习
使用word2vec有一个问题,就是使用别人的词向量,并不能包含自己项目的全部词,句子中如果有词向量中没有的词就比较棘手,准确度也会降低。所以想在自己的项目中得到更好的结果,在别人训练好的词向量的基础上,使用深度学习继续训练是一个不错的办法。
Siamese Recurrent Architectures for Learning Sentence Similarity这篇论文使用的是lstm实现的,可以参考一下。
我正准备实现这一部分的代码,github仓库,实现后再来补充。
可以查看知乎:如何用 word2vec 计算两个句子之间的相似度?
本文标签: 句子相似度计算笔记
版权声明:本文标题:句子相似度计算笔记 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1694402131a251638.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论