计算公式

  • \(\cos (\theta) = \frac{\vec{A} \cdot \vec{B}}{||\vec{A}|| \times ||\vec{B}||}\)
  • 其中 \(\theta\)余弦相似度.
  • \(\cos (\theta)\)越靠近1,则表示向量A和向量B在向量空间中的夹角越靠近0,意味着它们之间更相似。
  • 夹角等于0,则表示这俩向量相等。

例子

  • 假如要计算两段文本之间的相似性,总共可以分成以下五个步骤:

    1. 分词
    2. 作出语料库
    3. 计算词频
    4. 将原句转为词频向量
    5. 计算余弦相似性
  • A:今天天气真好,明天天气也一样。

  • B:今天天气不差,明天也一样。

  1. 分词
    今天/天气/真好,明天/天气/也/一样。
    今天/天气/不差,明天/也/一样。
  2. 语料库
    今天,天气,真好,明天,也,一样,不差
  3. 计算词频
    A:今天1,天气2,真好1,明天1,也1,一样1,不差0
    B:今天1,天气1,真好0,明天1,也1,一样1,不差1
  4. 词频向量
    \(\vec{A} = \begin{bmatrix} 1\\2\\1\\1\\1\\1\\0 \end{bmatrix}\)\(\vec{B} = \begin{bmatrix} 1\\1\\0\\1\\1\\1\\1 \end{bmatrix}\)
  5. 余弦相似性计算
    套入上述公式中可得\(\cos(\theta) = \frac{\sum_i^n(A_i \times B_i)}{\sqrt{\sum_i^nA_i^2}\times \sqrt{\sum_i^nB_i^2}} = \frac{1\times1 + 2\times1 + 1\times0 + 1\times1 + 1\times1 + 1\times1 + 0\times1}{\sqrt{1^2 + 2^2 + 1^2 + 1^2 + 1^2 + 1^2 + 0^2} \times \sqrt{1^2 + 1^2 + 0^2 + 1^2 + 1^2 + 1^2 + 1^2}} = \frac{6}{3 \times \sqrt{6}} \approx 0.816\)
  • 最终结果为0.816更靠近1,于是通过余弦相似度计算的结果表示这两个句子之间是颇为相似的。
posted on 2022-10-11 14:42  GottenZZP  阅读(196)  评论(0)    收藏  举报