如何计算文本之间的相似度?余弦相似度详解!带例子,嘎嘎通俗易懂~

计算公式

  • cos ⁡ ( θ ) = A ⃗ ⋅ B ⃗ ∣ ∣ A ⃗ ∣ ∣ × ∣ ∣ B ⃗ ∣ ∣ \cos (\theta) = \frac{\vec{A} \cdot \vec{B}}{||\vec{A}|| \times ||\vec{B}||} cos(θ)=∣∣A ∣∣×∣∣B ∣∣A B
  • 其中 θ \theta θ余弦相似度.
  • cos ⁡ ( θ ) \cos (\theta) cos(θ)越靠近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. 词频向量
    A ⃗ = [ 1 2 1 1 1 1 0 ] \vec{A} = \begin{bmatrix} 1\\2\\1\\1\\1\\1\\0 \end{bmatrix} A = 1211110 B ⃗ = [ 1 1 0 1 1 1 1 ] \vec{B} = \begin{bmatrix} 1\\1\\0\\1\\1\\1\\1 \end{bmatrix} B = 1101111
  5. 余弦相似性计算
    套入上述公式中可得 cos ⁡ ( θ ) = ∑ i n ( A i × B i ) ∑ i n A i 2 × ∑ i n B i 2 = 1 × 1 + 2 × 1 + 1 × 0 + 1 × 1 + 1 × 1 + 1 × 1 + 0 × 1 1 2 + 2 2 + 1 2 + 1 2 + 1 2 + 1 2 + 0 2 × 1 2 + 1 2 + 0 2 + 1 2 + 1 2 + 1 2 + 1 2 = 6 3 × 6 ≈ 0.816 \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 cos(θ)=inAi2 ×inBi2 in(Ai×Bi)=12+22+12+12+12+12+02 ×12+12+02+12+12+12+12 1×1+2×1+1×0+1×1+1×1+1×1+0×1=3×6 60.816
  • 最终结果为0.816更靠近1,于是通过余弦相似度计算的结果表示这两个句子之间是颇为相似的。
  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值