计算中有哪些好用的文本相似度算法? 您所在的位置:网站首页 jaccard相似度 计算中有哪些好用的文本相似度算法?

计算中有哪些好用的文本相似度算法?

#计算中有哪些好用的文本相似度算法?| 来源: 网络整理| 查看: 265

在研究搜索引擎的自然语言模型时,我经常会问“这两个词有多相似?”,“这两个句子有多相似?”,“这两个文件有多相似?”。 对于这种问题,我们可以更多地研究句子或文档相似性的技巧。虽然有很多文本相似度指标,但我们聊聊最常见的Jaccard相似度和余弦相似度。

Jaccard相似度

Jaccard相似性或联合上的交集定义为交叉的大小除以两个联合的大小。 我们举两个句子的例子:

句子1:AI is our friend and it has been friendly

句子2:AI and humans have always been friendly

为了使用Jaccard相似度计算相似度,我们将首先执行词形还原以将词减少到相同的词根。 在我们的例子中,“friend ”和“friendly”将成为“friend ”。 那么绘制我们得到的两个句子的维恩图:

对于上述两个句子,我们得到Jaccard相似度为5 /(5 + 3 + 2)= 0.5,这是集合的交集大小除以集合的总大小。

这里需要注意的一点是,由于我们使用集合,“friend ”在句子1中出现了两次但它并没有影响我们的计算,这将随着余弦相似性而改变。

余弦相似度

余弦相似性通过测量两个矢量之间的角度的余弦来计算相似度。 计算方法如下:

由于余弦相似,我们需要将句子转换为向量。 一种方法是使用具有TF(术语频率)或TF-IDF(术语频率 - 逆文档频率)的词袋。 TF或TF-IDF的选择取决于应用,并且实际上如何执行余弦相似性并不重要 - 这只需要矢量。 TF通常适用于文本相似性,但TF-IDF有利于搜索查询相关性。

另一种方法是使用Word2Vec或我们自己的自定义单词嵌入将单词转换为向量。

tf-idf与词嵌入有两个主要区别:

tf-idf为每个单词创建一个数字,词嵌入通常为每个单词创建一个向量。

tf-idf对整个分类文档很有用,但是词嵌入有助于识别上下文内容。

Jaccard相似度与余弦相似度之间的差异

Jaccard相似性仅对每个句子/文档采用唯一的单词集合,而余弦相似性采用向量的总长度。 (这些载体可以用词条词频或tf-idf制成)

这意味着如果您多次在句子1中重复“friend”这个词,则余弦相似性会发生变化,但Jaccard相似性却不会。例如,如果在第一句中重复单词“friend”50次,则余弦相似度下降到0.4,但Jaccard相似度保持在0.5。

Jaccard相似性对于重复无关紧要的情况是有利的,余弦相似性对于重复在分析文本相似性时重要的情况是有益的。对于两个产品描述,最好使用Jaccard相似性,因为重复单词不会降低它们的相似性。

我会在这里发布所有与科技、科学有关的有趣文章,欢迎订阅我的头条号。偶尔也回答有趣的问题,有问题可随时在评论区回复和讨论。

(码字不易,若文章对你帮助可点赞支持~)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有