1. 文本相似度定义
我们都知道,单词中有同义词、近义词和反义词之分,这表明不同单词间的相似程度也截然不同。对于文本表示,我们也要衡量单词编码向量间的相似程度与单词本身词义间相似程度的一致性,以此来评价文本表示的质量。
2. 文本相似度计算方法
定量计算两个文本之间的相似程度,就是定量计算文本表示后两个向量之间的相似度。一种衡量两向量相似度的方式是计算它们之间的距离,距离越小相似度越高、距离越大相似度越小,常用的向量距离计算指标有欧式距离和余弦相似度两种。
2.1 欧氏距离
欧氏距离 dEd_EdE 表示n维空间上,两向量间的直线距离,计算公式如下:
dE(X⃗,Y⃗)=(x1−y1)2+(x2−y2)2+⋯+(xn−yn)2
d_E(\vec{X}, \vec{Y}) = \sqrt{(x_1-y_1)^{2}+(x_2-y_2)^{2}+\dots +(x_n-y_n)^{2}}
dE(X,Y)=(x1−y1)2+(x2−y2)2+⋯+(xn−yn)2
因为式中 dEd_EdE 在定义域上是单调递增函数,所以 dEd_EdE 的值越小,两向量间的距离越小,两向量越相似。
2.2 余弦相似度
余弦相似度 ScS_cSc 表示两向量间夹角的大小(余弦距离 dcd_cdc = 1−Sc1 - S_c1−Sc),其计算公式如下:
Sc(X⃗,Y⃗)=cos⟨X⃗,Y⃗⟩=X⃗⋅Y⃗∣X⃗∣∗∣Y⃗∣=x1y1+x2y2+⋯+xnynx12+x22+⋯+xn2∗y12+y22+⋯+yn2
S_c(\vec{X}, \vec{Y}) = \cos\left\langle \vec{X}, \vec{Y} \right\rangle = \frac{\vec{X} \cdot \vec{Y}}{|\vec{X}|*|\vec{Y}|} = \frac{x_1y_1+x_2y_2+\dots+x_ny_n}{\sqrt{x_1^{2}+x_2^{2}+\dots+x_n^{2}}*\sqrt{y_1^{2}+y_2^{2}+\dots+y_n^{2}}}
Sc(X,Y)=cos⟨X,Y⟩=∣X∣∗∣Y∣X⋅Y=x12+x22+⋯+xn2∗y12+y22+⋯+yn2x1y1+x2y2+⋯+xnyn
因为式中 ScS_cSc 在定义域上是单调递减函数,所以 ScS_cSc 的值越大,两向量间的距离越小,两向量越相似。在实际工作中,因为余弦距离更容易计算和求导,所以它比欧式距离应用更为广泛。
工程实践中,词向量(或句子向量)的长度一般近似为1,即 ∣X⃗∣≈∣Y⃗∣≈1|\vec{X}| \approx |\vec{Y}| \approx 1∣X∣≈∣Y∣≈1。所以实际使用时,余弦相似度公式一般简化为:
Sc(X⃗,Y⃗)=cos⟨X⃗,Y⃗⟩≈X⃗⋅Y⃗=∑i−1nxiyi
S_c(\vec{X}, \vec{Y}) = \cos\left\langle \vec{X}, \vec{Y} \right\rangle \approx \vec{X} \cdot \vec{Y} = \sum_{i-1}^{n} x_iy_i
Sc(X,Y)=cos⟨X,Y⟩≈X⋅Y=i−1∑nxiyi