用余弦算法做相似度匹配

前面写了一个用simhash 做算法相似度匹配。我觉得俩个算法都可以,但是一定要实践证明算法的稳定性,和模型的准确度。

因为开发比较急,所以没有去验证关键词加simhash 的具体准确情况,但是依据我来看会很不错。

后期我们上线的是余弦算法的相似度匹配。

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

参考网上demo:


def similarity(s1, s2):
    try:
        if len(s1) > 0 and len(s2) > 0:
            tmp = {}
            for i in s1:
                a = ord(i)
                if 0x4DFF < a < 0x9FA6:
                    try:
                        tmp[a][0] = tmp[a][0] + 1
                    except:
                        tmp[a] = [1, 0]
            for i in s2:
                a = ord(i)
                if 0x4DFF < a < 0x9FA6:
                    try:
                        tmp[a][1] = tmp[a][1] + 1
                    except:
                        tmp[a] = [0, 1]
            a1 = 0
            a2 = 0
            a3 = 0
            if len(tmp) > 0:
                for i in tmp:
                    a1 += tmp[i][0] * tmp[i][1]
                    a2 += tmp[i][0] * tmp[i][0]
                    a3 += tmp[i][1] * tmp[i][1]
            else:
                return 0
            return a1 / math.sqrt(a2 * a3)
    except Exception as ex:
        print(ex)

这个有一定的bug,需要调节。哈哈

需要完整项目demo请留言点赞关注。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值