关于初高中就常见的余弦相似度,在很多人的记忆里,估计只剩下“余弦相似度”这一概念,却没发现它的应用却常常在我们身边,更没想到那些曾吐槽过的数学公式,应用起来竟然跑到了其他领域:文本相似度比较。
在比较文本相似度之前,我们先借用数学的另一个概念:概率,反映的是某事件发生的可能性,用0-1之间的数值来表示。而文本的相似程度也可用0-1之间的概率值来表示,0则表示完全没有相似可言,1则表示两篇文章一模一样,有了这个概念,下面进行一下知识回顾。
知识回顾
还是先回顾一下余弦相似度的公式:
在向量空间内有两个向量a和b,如图:
![2f912b0ba0d054ceda2cb75dc0e154be.png](https://i-blog.csdnimg.cn/blog_migrate/8f992180afa8f7ad523f12cfdb58b81d.jpeg)
那么a和b两个向量的夹角的余弦值计算公式如下:
![6f1043deac1ab4c098a9cef652f627b8.png](https://i-blog.csdnimg.cn/blog_migrate/33ffc7e203b723a55ba2189147325b35.jpeg)
即两个向量的余弦值等于两个向量的数量积除以两个向量模的积。
说了这么多这个公式有何用处呢,和文本相似度又有什么关系呢?
且听我慢慢道来!
原理
根据中学所学知识,当两个向量越来越靠近时,两向量的夹角的余弦值会越来越大,当两个向量完全重叠时,其夹角为0,两个向量的余弦为1。而两个文本的越来越相似时,其相似度也越来也越趋近于1,于是乎,将文本映射到向量空间上(事实上大部分文本的计算也是这么做的),讲人话就是把两个向量当做两个文本,当两个文本越来越相似的时候,两个文本对应的向量在向量空间内的夹角也就越小,夹角的余弦值也就越趋近于1,所以在一定范围内,我们可以用余弦相似度来计算文本相似度,计算的步骤如下:
1、将文本转为数学向量(词向量)
2、使用余下相似度公式计算文本向量的余弦值
3、计算结果即可表示文本之间的相似程度
应用余弦相似的原理,具体实践一下!
文本相似度计算
假设现在有两个短文本
文本1.为中华之崛起而读书
文本2.为中国人民谋幸福,为中华民族谋复兴
将两个文本映射到向量空间上(具体映射方法论请参考以往文章:电脑为何能计算语言文字,难道语言也能进行数学的加减乘除?)得到文本向量为:
文本1:a=【1,1,1,1,1,1,0,0,0,0,0,0】
文本2:b=【2,1,0,0,0,0,1,2,1,1,1,1】
那么根据上面所学的理论知识,文本1和文本2的相似度为:
![1483a51310f6b81171f2b188117b9505.png](https://i-blog.csdnimg.cn/blog_migrate/521493a9b5c2287c4a42080e4b85b78a.jpeg)
近似计算,两个文本的相似度大约为32.75%。
“好的,先生/小姐姐,结束请挂机!”
“不好意思,说错了:结束,求关注!”