NLP自然语言处理中的文本相似度

本文深入浅出地介绍了自然语言处理中的文本相似度算法,包括欧氏距离、曼哈顿距离、编辑距离、Jaccard相似度、余弦相似度和Jaro相似度。通过实例解析,阐述了各算法的适用场景和限制,帮助读者理解这些算法在文本相似度计算中的应用。
摘要由CSDN通过智能技术生成

1. 背景介绍

CSDN 及各类技术博客上有很多文本相似度方面的文章,但它们的侧重点是代码,目标受众是开发人员,代码基础薄弱的话看起来会比较吃力。

本文侧重讲述逻辑和使用场景,尝试将算法通俗化,尽量多举例,降低理解门槛。希望读完本文,大家可以对文本相似度有一个完整而深刻的理解,最好能在非代码维度上超过开发人员(达到了这种水平,输出的需求自然会得到开发同学最大的尊重和认同)。

文本相似度,顾名思义是指两个文本(文章)之间的相似度,在搜索引擎、推荐系统、论文鉴定、机器翻译、自动应答、命名实体识别、拼写纠错等领域有广泛的应用。

总的来说,文本相似度是自然语言处理(NLP)中必不可少的重要环节,几乎所有 NLP 的领域都会涉及到!

与之相对应的,还有一个概念——文本距离——指的是两个文本之间的距离。文本距离和文本相似度是负相关的——距离小,“离得近”,相似度高;距离大,“离得远”,相似度低。业务上不会对这两个概念进行严格区分,有时用文本距离,有时则会用文本相似度。

 

2. 各类算法

2.1 欧氏距离

数学中的一个非常经典的距离,公式如下:

例 1:计算 “产品经理” 和“产业经理是什么”之间的欧氏距离

过程如下:

  • 文本向量 A=(产,品,经,理),即 x1 = 产,x2 = 品,x3 = 经,x4 = 理,x5、x6、x7 均为空;
  • 文本向量 B=(产,业,经,理,是,什,么),即 y1 = 产,y2 = 业,y3 = 经,y4 = 理,y5 = 是,y6 = 什,y7 = 么。

这里规定,若 xi=yi,则 xi-yi=0;若 xi≠yi,|xi-yi|=1。

所以,欧氏距离d是 2

(1)适用场景

编码检测等类似领域。两串编码必须完全一致,才能通过检测,这时一个移位或者一个错字,可能会造成非常严重的后果。比如下图第一个二维码是 “这是一篇文本相似度的文章”,第二个是 “这是一篇文本相似度文章”。从人的理解来看,这两句话相似度非常高,但是生成的二维码却千差万别。

(2)不适用场景

文本相似度,意味着要能区分相似 / 差异的程度,而欧氏距离更多的只能区分出是否完全一样。而且,欧氏距离对位置、顺序非常敏感,比如 “我的名字是孙行者” 和“孙行者是我的名字”,在人看来,相似度非常高,但是

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值