python余弦相似度文本分类_Jaccard与cosine文本相似度的异同

本文探讨了Jaccard相似度和Cosine相似度在文本相似度计算上的差异,以及各自适用的场景。Jaccard使用集合操作,不考虑词频,而Cosine相似度基于向量角度,受词频影响。举例说明了两种方法的计算过程,并指出在处理重复词汇时的差异。最后,提出了应用场景,如商品搜索和语音转写文本的相似度比较。
摘要由CSDN通过智能技术生成

工作过程中,常常其他业务的同学问到:某两个词的相似度是多少?某两个句子的相似度是多少?某两个文档之间的相似度是多少?在本文中,我们讨论一下jaccard与cosine在文本相似度上的差异,以及他们适用的场景。在介绍二者的异同之前呢,我们首先介绍一下,jaccard相似度和cosine相似度的定义。

(想直接看结论的,请关注文末的加粗部分)

Jaccard相似度

Jaccard相似度的定义很简单,两个句子词汇的交集size除以两个句子词汇的并集size。举个例子来说:句子1: AI is our friend and it has been friendly.

句子2: AI and humans have always been friendly.

为了计算Jaccard相似度,我们首先使用英文nlp中常用的技术Lemmatization,用词根替换那些具有相同词根的词汇。在上面的例子中,friend和friendly具有相同的词根,have和has具有相同的词根。我们可以画出两个句子词汇的交集与并集情况,如图所示:

对于上面两个句子,其Jaccard相似度为5/(5+3+2)=0.5,即两个句子词汇的交集5个词汇,并集10个词汇。

def get_jaccard_sim(str1, str2):

a = set(str1.split())

b = set(str2.split())

c = a.intersection(b)

return float(len(c)) / (len(a) + len(b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值