文本相似度计算

亲测对于海量计算,采用simhash相似度算法会快很多。
参考:https://blog.csdn.net/wxgxgp/article/details/104146034
https://blog.csdn.net/Trisyp/article/details/113623966

1. 余弦相似度
略。
1. 获得corpus语料库,然后转为向量。
2. 调包计算余弦相似度。
2. simhash相似度
from simhash import Simhash

def simhash_demo(text_a, text_b):
    """
    求text_a和text_b的文本相似度
    """
    a_simhash = Simhash(text_a)
    b_simhash = Simhash(text_b)
    max_hashbit = max(len(bin(a_simhash.value)), len(bin(b_simhash.value)))
    # 汉明距离
    distince = a_simhash.distance(b_simhash)
#     print(distince)
    similar = 1 - distince / max_hashbit
    return similar
    
t1 = ['遨游', 'AI', '专注', '一站式', '游戏']
t2 = ['遨游', 'AI', '专注', '二站式', '游戏13', '放大了发', 'FdafA', '放大上课']
simhash_demo(t1, t2)
>>> 0.6515151

ps:t1可以是分词后的list,也可以是直接一句str字符串。

再DataFrame上应用:输入句子input_t_cut,计算每篇内容与input_t_cut的相似度:在这里插入图片描述

articles['相似度'] = articles['标题内容关键词'].apply(lambda x: simhash_demo(x, input_t_cut))
articles.sort_values('相似度', ascending=False).head(60)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值