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

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)不适用场景

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

  • 27
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
NLP自然语言处理)是一门研究如何使计算机能够理解和处理人类语言的领域。Python是一种广泛用于编程的编程语言。结合Python和NLP可以进行各种自然语言处理任务,如文本分类、命名实体识别、情感分析等。在Python,有许多流行的库和工具可供使用,以便进行NLP任务。以下是一些常用的Python库和工具: 1. NLTK(自然语言工具包):它是Python最常用的NLP库之一,提供了许多用于文本预处理、词性标注、词袋模型、语法分析等任务的功能。 2. spaCy :这是另一个流行的Python库,它提供了高效的自然语言处理功能,包括分词、词性标注、命名实体识别和依赖解析等任务。 3. TextBlob :这是一个易于使用的Python库,它提供了一系列简单的API,用于处理常见的NLP任务,如情感分析、词性标注和文本分类。 4. Gensim :它是一个用于主题建模和文本相似度计算的Python库,可以用于处理大规模的文本数据。 5. Scikit-learn :这是一个通用的机器学习库,其包含了许多用于文本分类、情感分析和文本聚类等任务的算法。 这些库和工具为Python开发者提供了丰富的功能和资源,便于进行各种NLP任务的开发和实验。你可以根据具体的需求选择适合的库和工具,并结合相关的算法和技术来处理自然语言数据。希望这些信息能够帮助到你。 NLTK官方网站:https://www.nltk.org/ spaCy官方网站:https://spacy.io/ TextBlob官方网站:https://textblob.readthedocs.io/ Gensim官方网站:https://radimrehurek.com/gensim/ Scikit-learn官方网站:https://scikit-learn.org/stable/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值