文本相似度的几种计算方式

s 1 = ( x 1 , x 2 , x 3 ) s_1=(x_1,x_2,x_3) s1=(x1,x2,x3)
s 2 = ( y 1 , y 2 , y 3 ) s_2=(y_1,y_2,y_3) s2=(y1,y2,y3)

欧氏距离

d = ∣ s 1 − s 2 ∣ = ( x 1 2 − y 1 2 ) + ( x 2 2 − y 2 2 ) + ( x 3 2 − y 3 2 ) d=|s_1-s_2|=\sqrt{(x_1^2-y_1^2)+(x_2^2-y_2^2)+(x_3^2-y_3^2)} d=s1s2=(x12y12)+(x22y22)+(x32y32)

特点:只考虑距离,没考虑方向,距离越小说明越相似

余弦相似度

t f = s 1 ⋅ s 2 ( ∣ s 1 ∣ × ∣ s 2 ∣ ) = ( x 1 × y 1 ) + ( x 2 × y 2 ) + ( x 3 × y 3 ) ( x 1 2 + x 2 2 + x 3 2 ) ( y 1 2 + y 2 2 + y 3 2 ) tf=\frac{s_1·s_2} {(|s_1|\times|s_2|)} =\frac{(x_1\times y_1)+(x_2\times y_2)+(x_3\times y_3)} { \sqrt{(x_1^2+x_2^2+x_3^2)}\sqrt{(y_1^2+y_2^2+y_3^2)}} tf=s1×s2s1s2=(x12+x22+x32) (y12+y22+y32) (x1×y1)+(x2×y2)+(x3×y3)
特点:考虑了方向和距离

举例说明

简单举例,三个简单的中文句子:

分词后的句子s_1:今天|的|天气|真|不错
分词后得句子s_2:今天|的|晚饭|里|也|有|很多|肉
分词后得句子s_3:昨天|的|晚饭|有|很多|肉|还|不错

生成以上三个句子所用的词典:

词典:[今天,的,天气,真,不错,晚饭,里,也,有,很多,肉,昨天,还]
这个是13维的字典

根据字典统计三个句子中,每个词出现频率:

s_1:[1,1,1,1,1,0,0,0,0,0,0,0,0]
s_2:[1,1,0,0,0,1,1,1,1,1,0,0,0]
s_3:[0,1,0,0,1,1,0,0,1,1,1,1,1]

以上仅统计出现次数,没有对重点词增加权重,而如“的,了”等词如果两个句子中出现的比较多也会增加相似度,实际上他们是不重要的。(可以用tfidf的方式处理)
使用欧式距离求文本相似度:

s i m ( s 1 , s 2 ) = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 8 sim(s_1,s_2)=\sqrt{1+1+1+1+1+1+1+1}=\sqrt{8} sim(s1,s2)=1+1+1+1+1+1+1+1 =8

s i m ( s 2 , s 3 ) = 1 + 1 + 1 + 1 + 1 + 1 + 1 = 7 sim(s_2,s_3)=\sqrt{1+1+1+1+1+1+1}=\sqrt{7} sim(s2,s3)=1+1+1+1+1+1+1 =7

s i m ( s 1 , s 3 ) = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 9 sim(s_1,s_3)=\sqrt{1+1+1+1+1+1+1+1+1}=\sqrt{9} sim(s1,s3)=1+1+1+1+1+1+1+1+1 =9

s i m ( s 2 , s 3 ) > s i m ( s 1 , s 2 ) > s i m ( s 1 , s 3 ) sim(s_2,s_3)>sim(s_1,s_2)>sim(s_1,s_3) sim(s2,s3)>sim(s1,s2)>sim(s1,s3)
使用余弦相似度求文本相似度:

s i m ( s 1 , s 2 ) = 1 + 1 1 + 1 + 1 + 1 + 1 × 1 + 1 + 1 + 1 + 1 + 1 + 1 = 2 35 sim(s_1,s_2)=\frac{1+1}{\sqrt{1+1+1+1+1}\times \sqrt{1+1+1+1+1+1+1}}=\frac{2}{\sqrt{35}} sim(s1,s2)=1+1+1+1+1 ×1+1+1+1+1+1+1 1+1=35 2

s i m ( s 2 , s 3 ) = 1 + 1 + 1 + 1 1 + 1 + 1 + 1 + 1 + 1 + 1 × 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 2 14 sim(s_2,s_3)=\frac{1+1+1+1}{\sqrt{1+1+1+1+1+1+1}\times \sqrt{1+1+1+1+1+1+1+1}}=\frac{2}{\sqrt{14}} sim(s2,s3)=1+1+1+1+1+1+1 ×1+1+1+1+1+1+1+1 1+1+1+1=14 2

s i m ( s 1 , s 3 ) = 1 + 1 1 + 1 + 1 + 1 + 1 × 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 1 10 sim(s_1,s_3)=\frac{1+1}{\sqrt{1+1+1+1+1}\times \sqrt{1+1+1+1+1+1+1+1}}=\frac{1}{\sqrt{10}} sim(s1,s3)=1+1+1+1+1 ×1+1+1+1+1+1+1+1 1+1=10 1

s i m ( s 2 , s 3 ) > s i m ( s 1 , s 2 ) > s i m ( s 1 , s 3 ) sim(s_2,s_3)>sim(s_1,s_2)>sim(s_1,s_3) sim(s2,s3)>sim(s1,s2)>sim(s1,s3)

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值