文本相似度
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个词汇
12345def jaccard_sim(str1, str2): a = set(str1.split()) b = set(str2.split()) c = a.intersection(b) return float(len ...