Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

5.4 使用余弦度量相似度

要度量两个目标词 vvww 的相似度,需要一个指标:输入两个维数相同的向量——可能都以词为维度、长度为 VV,也可能都以文档为维度、长度为 DD——输出二者的相似程度。最常用的指标是两向量夹角的余弦。

与 NLP 中多数向量相似度度量一样,余弦基于线性代数中的点积(dot product),也称内积(inner product):

dot product(v,w)=vw=i=1Nviwi=v1w1++vNwN(5.7)\operatorname{dot\ product}(\mathbf v,\mathbf w)=\mathbf v\cdot\mathbf w=\sum_{i=1}^Nv_iw_i=v_1w_1+\cdots+v_Nw_N\tag{5.7}

点积可以充当相似度指标,因为当两个向量在相同维度上都有大值时,点积往往较高。反之,在不同维度为零的正交向量(orthogonal vectors)点积为 0,表示很不相似。

但原始点积偏爱长向量。向量长度定义为:

v=i=1Nvi2(5.8)|\mathbf v|=\sqrt{\sum_{i=1}^Nv_i^2}\tag{5.8}

向量越长、各维数值越高,点积也越高。高频词往往与更多词共现,且各共现值更高,因此向量更长,原始点积也会更大。但我们希望相似度不受词频影响。

为对向量长度归一化,用两个向量长度的乘积除点积。根据向量点积定义,这个归一化点积正好等于两向量夹角的余弦:

ab=abcosθabab=cosθ(5.9)\begin{array}{rcl}\mathbf a\cdot\mathbf b&=&|\mathbf a||\mathbf b|\cos\theta\\\frac{\mathbf a\cdot\mathbf b}{|\mathbf a||\mathbf b|}&=&\cos\theta\end{array}\tag{5.9}

因此,向量 v\mathbf vw\mathbf w余弦相似度(cosine similarity)为:

cos(v,w)=vwvw=i=1Nviwii=1Nvi2i=1Nwi2(5.10)\cos(\mathbf v,\mathbf w)=\frac{\mathbf v\cdot\mathbf w}{|\mathbf v||\mathbf w|}=\frac{\sum_{i=1}^Nv_iw_i}{\sqrt{\sum_{i=1}^Nv_i^2}\sqrt{\sum_{i=1}^Nw_i^2}}\tag{5.10}

有些应用会预先把每个向量除以其长度,得到长度为 1 的单位向量(unit vector)。对单位向量,点积就等于余弦。

同向向量的余弦为 1,正交向量为 0,反向向量为 −1。不过,原始频率值均非负,因此这类向量的余弦范围是 0 到 1。

使用下表的简化原始计数,比较 cherry 和 digital 中谁与 information 的意义更接近:

piedatacomputer
cherry44282
digital516831670
information539823325
cos(cherry, information)=442×5+8×3982+2×33254422+82+2252+39822+33252=.018cos(digital, information)=5×5+1683×3982+1670×332552+16832+1670252+39822+33252=.996\begin{array}{l}\cos(\text{cherry, information})=\frac{442\times5+8\times3982+2\times3325}{\sqrt{442^2+8^2+2^2}\sqrt{5^2+3982^2+3325^2}}=.018\\\cos(\text{digital, information})=\frac{5\times5+1683\times3982+1670\times3325}{\sqrt{5^2+1683^2+1670^2}\sqrt{5^2+3982^2+3325^2}}=.996\end{array}

模型判断 information 与 digital 的距离远近于它与 cherry 的距离,这很合理。

图 5.5 余弦相似度的粗略图示。在由附近 computer 和 pie 的计数定义的二维空间中,展示 cherry、digital 和 information 三个词的向量。图中没有直接画出余弦,但突出了夹角:digital 与 information 的夹角小于 cherry 与 information 的夹角。两个向量越相似,余弦越大而夹角越小;夹角最小(00^\circ)时余弦达到最大值 1。

余弦相似度可用于估计词相似度,如寻找词语释义、追踪词义变化,或自动发现不同语料中的词义。要找目标词 ww 最相似的 10 个词,可以计算 ww 与其余 V1|V|-1 个词的余弦并排序,取前 10 个。