相似度计算 - 句子
Tf-idf
如果单纯通过文档的向量,用 count vector 来计算词频,然后用矩阵来表示,其实会有很大的弊端。因为词的频率高,不代表其重要性。因此,我们还需要考虑到其权重,也就是质量,引入质量可以通过 Tf-idf。
语料库中文档总数 N
词语 w 出现在 N(W)个文档中
idf(w)是指单词的重要性
tf-idf 的应用非常广泛,是表示文本的最核心技术之一,也是文本表示中最有效的 Baseline。
很多时候,tf-idf 的表示甚至会优于深度学习的文本表示。
相似度计算
在进行两个文本的相似度计算时,任何文本转换成向量都能使用相似度公式进行计算。常见的计算方式有欧式距离计算和余弦相似度计算。
欧式距离
欧式距离
d=|S1-S2|
例子 1
已将句子转变为向量
S1:“小姐姐 步入 中年”=(1,0,0)
S2:“小姐姐 要 不惑”=(1,0,1)
∴ d(S1,S2)=1
例子 2
X1=(2,0,6) Y1=(1,2,3)
X2=(2,1,6) Y1=(1,-2,3)
如果通过欧式距离进行计算,X1 和 Y1, X2 和 Y2 是一样距离的,但是,向量是带有方向的,X1 和 Y1 的方向是一致的,理应相似度更高。这就是欧式距离的最大问题。因此,如果要解决这个问题,我们可以考虑使用余弦相似度来计算。余弦相似度是通过计算向量之间的夹角的,因此,两个向量在方向越一致,它们的相似度就越高。
余弦相似度
余弦相似度的计算
S1=X1,X2,X3 S2=Y1,Y2,Y3
从以上来看,内积是可以用来计算向量之间的相似度的,分母除以向量大小是为了消除两个向量大小所带来的影响。余弦相似度把方向考虑进去了,而欧式距离则没有;在计算向量之间相似度时,余弦相似度的应用会比欧式距离更广泛一些。
内积也常常称为点积、标量积、数量积。计算机图形学常用来进行方向性判断,如两矢量内积大于 0,则它们的方向朝向相近;如果小于 0,则方向相反。矢量内积是人工智能领域中的神经网络技术的数学基础之一,此方法还被用于动画渲染(Animation-Rendering)。
版权声明: 本文为 InfoQ 作者【Qien Z.】的原创文章。
原文链接:【http://xie.infoq.cn/article/a73c5c97f5a91a57fd3722888】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论