数学建模社区-数学中国

标题: 文本相似度计算-度量方法 [打印本页]

作者: 杨利霞    时间: 2023-4-13 21:10
标题: 文本相似度计算-度量方法
. u& N  A/ S- ]: y) e& \- k2 \

" s% H+ x. W; t  y2 j文本相似度计算-度量方法
; J$ O+ M6 r5 V2. 文本相似度计算-距离的度量

完整机器学习实现代码GitHub5 j& F! J  o9 R; l: g# ?! f
欢迎转载,转载请注明出处https://www.cnblogs.com/huangyc/p/9786731.html
0 F+ K- g& o9 v8 f( x$ D- Z) n# E欢迎沟通交流: 339408769@qq.com


& m' z, \8 @" L% w
0. 目录
' T3 B8 F6 X! }, y

1. 文本相似度计算-文本向量化

2. 文本相似度计算-距离的度量

3. 文本相似度计算-DSSM算法

4. 文本相似度计算-CNN-DSSM算法

回到顶部

1. 前言

上文介绍了文本的向量化处理,本文是在上文的向量化处理后的数据进行距离的计算。距离度量的方式有多种多样,但是一种相似度计算方式并不适用与所有的情况,需要根据不同的情况和数据类型进行选择。

回到顶部

2. 相似度计算方式

相似度就是比较两个事物的相似性。一般通过计算事物的特征之间的距离,如果距离小,那么相似度大;如果距离大,那么相似度小。

简化问题:假设有两个对象XX、YY,都包括NN维特征,X=(x1,x2,x3,..,xn),Y=(y1,y2,y3,..,yn)X=(x1,x2,x3,..,xn),Y=(y1,y2,y3,..,yn),计算XX和YY的相似性。常用的方法如下:


+ s  G2 H4 L: |1 ~! N2.1 余弦相似度

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。适合word2vec模型向量化的数据。

" n- }4 R- ]8 i% l1 B3 l

cosθ=∑ni=1xi∗yi∑ni=1x2i∑ni=1y2i−−−−−−−−−−−−−√cosθ=∑i=1nxi∗yi∑i=1nxi2∑i=1nyi2


9 f! ?. V( l7 A9 f2.2 欧式距离

欧氏距离是最常用的距离计算公式,衡量的是多维空间中各个点之间的绝对距离,当数据很稠密并且连续时,这是一种很好的计算方式。

因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,如在KNN中需要对特征进行归一化。

+ T: ^2 O, B, g1 s/ W

d=∑i=1n(xi−yi)2−−−−−−−−−−√d=∑i=1n(xi−yi)2


" v- x# |& H' d2.3 曼哈顿距离

曼哈顿距离简单来说就是统计相同坐标轴上的距离的和。

% [. x# H2 |& ?2 _

d=∑i=1n|xi−yi|d=∑i=1n|xi−yi|


& ^  b' Z0 U5 K& f1 Y2.4 闵可夫斯基距离

大家有没发现欧式距离和曼哈顿距离在形式上比较相近。是的,其实它们是闵可夫斯基距离的特殊化。适合TF-IDF向量化后的数据或者提炼出来的主题模型数据。

; C! G: r  e$ s' B; i6 g( T0 r* d

d=(∑i=1n(xi−yi)p)1pd=(∑i=1n(xi−yi)p)1p

/ W4 w9 S; A2 ~' m
2.5 皮尔森相关系数(pearson)

皮尔森相关系数是衡量线性关联性的程度。

两个连续变量(X,Y)(X,Y)的pearson相关性系数PX,YPX,Y等于它们之间的协方差cov(X,Y)cov(X,Y)除以它们各自标准差的乘积σXσX,σYσY。系数的取值总是在-1.0到1.0之间,接近0的变量被成为无相关性,接近1或者-1被称为具有强相关性。


  G+ X6 |3 k: ~9 |3 M$ b$ B2 |

PX,Y=cov(X,Y)σXσYPX,Y=cov(X,Y)σXσY

6 V& `* I' f, @( E
2.6 Jaccard相似性系数

Jaccard(杰卡德)相似性系数主要用于计算符号度量或布尔值度量的样本间的相似度。若样本间的特征属性由符号和布尔值标识,无法衡量差异具体值的大小,只能获得“是否相同”这样一种结果,而Jaccard系数关心的是样本间共同具有的特征。适合词集模型向量化的数据。

6 j6 o+ u5 Z$ I, m

J(X,Y)=|X⋂Y||X⋃Y|J(X,Y)=|X⋂Y||X⋃Y|

回到顶部

3. 总结

本文介绍的相似度计算方式,总的来说还是比较简单、易于理解。相似度计算方式的不同对最终结果的影响没有向量化方式不同影响大,但是相似度计算方式不同对计算时间影响比较大。下文将从深度学习的角度介绍文本相似度计算。

/ U7 ^( J( K; e6 ^% }' D
3. 文本相似度计算-DSSM算法

完整机器学习实现代码GitHub
$ D* C9 N/ Y; p% ]1 ^  U欢迎转载,转载请注明出处https://www.cnblogs.com/huangyc/p/9794652.html
4 S0 a0 i& k. y3 p' r& P0 K3 N欢迎沟通交流: 339408769@qq.com



7 Z5 w2 F! {+ i+ f- E7 }0. 目录
5 |7 h4 Y6 X$ `8 b/ d

1. 文本相似度计算-文本向量化

2. 文本相似度计算-距离的度量

3. 文本相似度计算-DSSM算法

4. 文本相似度计算-CNN-DSSM算法

回到顶部

1. 前言

最近在学习文本相似度的计算,前面两篇文章分别介绍了文本的向量化文本的距离度量,这两篇文章的思路主要在机器学习的框架下面,本文准备换一个思路,从深度学习的角度来处理文本相似度的问题。

本文介绍DSSM(Deep Structured Semantic Models)深度学习架构。

回到顶部

2. DSSM原理

DSSM的原理很简单,通过搜索引擎里Query和Doc的海量的点击曝光日志,用DNN把Query和Doc转化为低纬语义向量,并通过cosine距离来计算两个语义向量的距离,并且根据用户的点击选择Doc当做标签值进行有监督学习,最终训练出语义相似度模型。该模型既可以用来预测两个句子的语义相似度,又可以获得某句子的低纬语义向量表达。

这里的一个重要的概念是低纬语义向量,它的意思是把一句文本通过一定的方式转换到一个固定维度的空间上,这样就可以对不同句子间计算相似度了。然后我们的任务就是需要去找各种方法在尽量保存文本本身信息的情况下,获得一个低维语义向量。AutoEncoder算法也是一种获得低纬语义向量的方法。

5 X2 r  |0 i  Z7 \" q9 Z0 n0 ?
2.1 DSSM架构

DSSM的架构图如下所示:


- k1 a! g; T* E, Y

我们从下到上的看数据流动的过程。

输入数据:QQ代表用户的输入,DiDi代表比对的第ii个文档。

这里之所以用 3 个字母的切分粒度,是综合考虑了向量空间和单词冲突:

) R* o2 r* @) E; E) j& S! \& E5 T

以50w个单词的词库为例,Bigram的切分粒度的单词冲突为1192(冲突的定义:至少有两个单词的letter-bigram向量完全相同),而TriGram的单词冲突降为22效果很好,且转化后的向量空间3w维不是很大,综合考虑选择TriGram的切分粒度。


7 a% a9 h& h! i: T

P(D|Q)=exp(γR(Q,D))∑di∈Dexp(γR(Q,D))P(D|Q)=exp(γR(Q,D))∑di∈Dexp(γR(Q,D))

最终的loss是


5 I" Q' H/ b: I/ Y' k. m

L(Λ)=−log∏(Q,D+)P(D+|Q)L(Λ)=−log∏(Q,D+)P(D+|Q)

, F) s2 X& v1 m. [: t+ s  M
2.2 DSSM优缺点

从整体上看,DSSM还是对传统的机器学习和深度学习的方法进行了组合,先用n-gram进行矩阵压缩,再通过DNN网络进一步压缩,再通过cosine计算相似度,softmax输出归一化的相似度概率。


9 j# [! {* d; J7 V1 Z
, `" v! N0 d) y4 M$ j




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5