相似度度量(Similarity )用于计算个体间的相似度,相似度度量的值越小表示个体间的相似度越小,相似度的值越大表示个体差异越大。
对于多个不同文本和短句的对话消息计算它们之间的相似度,是将这些文本中的词映射到向量空间中,形成文本中的字符与向量数据之间的映射关系,并计算多个不同向量之间的差异大小这里详细介绍成熟的向量空间余弦相似度的计算方法
空间余弦相似度(Cosine Similarity )。
馀弦相似度是利用向量空间的两个向量所成角的馀弦值,测量两个个体之间差异的大小。 余弦值越接近1,夹角越接近0度,即表示两个向量越相似,这被称为“余弦相似性”。
上图的两个向量a、b所成的角较小,所以可以说a向量和b向量具有很高的相似性。 在极端情况下,a向量和b向量完全重叠。 下图:
在上图中,我们认为a和b的向量相等。 也就是说,可以认为a、b向量表示的文本完全相似或相等。 a和b向量所成的角较大或方向相反的情况。
如上述图3的:的两个向量a那样,b所成的角较大,可以说a向量和b向量有底部的相似性,或者a向量和b向量所表示的文本几乎不相似。 那么,可以用两个向量夹角大小的函数值来计算个体的相似度吗?
矢量余弦相似度理论是基于上述计算个体相似度的方法之一。 以下进行详细的推理过程分析。
直角三角形的馀弦计算
直角三角形余弦
考虑馀弦公式,最基本的计算方法是初中最简单的计算公式,计算夹角的馀弦定值公式如下
直角三角形馀弦公式
普通三角形的余弦计算
普通三角形的馀弦夹角
但这只适用于直角三角形,而在非直角三角形中,余弦定理的公式
三角形的边a和边b所成角的馀弦计算公式如下。
一般三角形余弦公式
二维向量的馀弦计算
在向量表现的三角形中,假设a向量为[x1,y1],b向量为[x2,y2],可以对馀弦定理进行如下改写。
二维矢量之间的角度
二维矢量余弦公式
多维空间余弦角度计算
如果扩展,向量a和b不是二维而是n维,则上述余弦算法仍然是正确的。 假设a和b是两个n维向量,a为,b为,则a和b所成角的馀弦为:
多维空间矢量馀弦夹角计算公式
文本余弦相似度计算过程
举一个例子说明馀弦计算文本的相似度
举个例子说明,利用上述理论计算文本的相似性。 为了简单起见,先从句子开始。
文a
这双靴子的号码变大了。 那个号码很合适
文b
这双靴子的号码不小。 那更合适
怎么计算上面两个词的相似度?
基本的想法是,这两个词的语言越相似,内容就应该越相似。 因此,可以从词数开始计算它们的相似度。
第一步,分词。
文a
这双靴子/号码/变大了。 那个/号码/合适。
文b
这个/靴子/号码/不/小的,那个/更多/合适。
第二步,列出所有的词。
这个,靴子,号码,变大了。 那个,合适,不,很小,很
第三步,计算词数。
文a
这一双,靴子一双,号码二一大了。 其一,适当的1,不0,小的0,更0
文b
这1、靴子1、号码1、0变大了。 其一,正好一,不,小一,再多一点
第四步,写词数向量。
文a
(1,1,2,1,1,1,0,0 ) )
文b
(1,1,1,0,1,1,1,1 ) )
到了这里,问题就变成了如何计算这两个向量的相似度。 我们可以把它们想象成空间中的两条线段。 它们都从原点(0,0,)出发,指向不同的方向。 两条线段之间形成角度。 如果角度为0度,则表示方向相同且线段重叠。 这表示两个向量表示的文本完全相等。如果夹角为90度,则形成直角,意味着方向完全不相似。如果夹角为180度,则意味着方向相反。 因此,可以根据夹角的大小来判断向量的相似度。 夹角越小,表示越相似。
使用上面的多维矢量余弦公式
计算两个句子的向量
文a
(1,1,2,1,1,1,0,0 ) )
文b
(1,1,1,0,1,1,1,1 ) )
的矢量余弦值来确定两个语句的相似度。
计算过程如下。
计算结果,中心角的馀弦值为0.81,非常接近1,因此上面的句子a和句子b大致相似
由此可知,文本相似度计算的处理流程为:
)1)找到两篇文章的关键词
)每篇文章取出几个关键词,汇总成一个集合,计算针对该集合中的词的每篇文章的词数
)3)生成两篇文章各自的词数向量。
(4)计算两个向量的余弦相似度,值越大表示越相似。
公式在线编辑网站: