文章目录
NLP、数据挖掘领域中,文本分析是一个很重要的领域,这有助于我们去让计算机理解语言的作用和使用。文本分析是数据挖掘的重要手段,利用文本分析,我们将很快的读取到一本书、一篇文章、一段话中的关键词和核心思想,而文本相似度就是我们用来剔除无用信息或者重复信息的重要手段,让计算机去找文本中的不同。
在生活中,信息检索、数据挖掘、机器翻译、文档复制检测等领域都应用到“文本相似度”。文本不仅仅是文字,文本相似度的应用更广,除了文字的匹配,还可以是图片、音频等,因为它们的实质都是在计算机中都是以二进制的方式存在的。相似度,实质就是计算个体间相似程度。
关于NLP语义相似度的计算模型可以分为传统计算模型和基于神经网络的计算模型两大类。传统的计算模型主要是以TF-IDF、BM25、simhash等为代表的计算模型,它们的共同特点是不借助神经网络,而是利用传统的统计词频和相似度计算公式实现。
接下来就介绍几种计算文本相似度的常用算法。
1. 余弦相似度
- 余弦相似度定义
余弦相似度就是通过一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小。 把1设为相同,0设为不同,那么相似度的值就是在0~1之间,所有的事物的相似度范围都应该是0 ~ 1。余弦相似度的特点是余弦值接近于1,夹角趋于0,表明两个向量越相似。
但是,文本的相似度计算只是针对字面量来计算的,也就是说只是针对语句的字符是否相同,而不考虑它的语义。比如,
句子1:你真好看。
句子2:你真难看。
这两句话相似度75%,但是它们的语义相差十万八千里,可以说是完全相反。又比如,
句子1:真好吃。
句子2:很美味。
两个句子相似度为0,但是语义在某个场景下是一致的。
所以在实际中,没有很完美的解决方案。每个公司会针对业务要求来调节相似度算法,使其在某些场合能够精确计算。
这种方法类似于编辑距离计算,通过计算将它转换为特定句子最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符,但是当词义的重要性超过了句子结构时,就会出现上面相似的问题。
- 计算相似度步骤
通过计算模型公式可以明确的求出余弦相似度的值。那么对于我们写程序实现这个算法,就是把两个个体转换为向量,然后通过这个公式求出最终解。
比如向量 a ( x 1 , x 2 , x 3 , x 4 , x 5 ) a(x1, x2, x3, x4, x5) a(x1,x2,x3,x4,x5),向量 b ( y 1 , y 2 , y 3 , y 4 , y 5 ) b(y1, y2, y3, y4, y5) b(y1,y2,y3,y4,y5)。分子为 ( x 1 ∗ y 1 ) + ( x 2 ∗ y 2 ) + ( x 3 ∗ y 3 ) + ( x 4 ∗ y 4 ) + ( x 5 ∗ y 5 ) (x1*y1) +(x2*y2) + (x3*y3) +(x4*y4)+(x5*y5) (x1∗y1)+(x2∗y2)+(x3∗y3)+(x4∗y4)+(x

最低0.47元/天 解锁文章
5069

被折叠的 条评论
为什么被折叠?



