<< 新闻中心

文本相似度算法——余弦相似性算法


——文本相似度算法小讲堂

2020-07-07 17:13:11 作者 书写人生

余弦相似是skycto文本相似度计算服务中10大相似算法之一,skycto文本相似算法服务主要以webservice形式对外提供相似度计算接口,独立自主可控,可用于国产化平台。skycto文本相似度服务能够独立部署、联合部署、嵌入部署等多种形式,支持国产化OpenJDK、中标麒麟、龙芯、飞腾等软硬件。skycto文本相似算法服务支持1:1相似度计算(阈值范围:0.0-1.0),支持1:N计算相似度Top排序(按照最相似前N排序返回),支持数据库指定字段计算并排序,支持数据库多个字段联合计算排序,支持Lucene快速索引等。

√  算法一:余弦相似性算法

 概念:又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。简单来说这个算法就是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"

 余弦(余弦函数),三角函数的一种。在Rt△ABC(直角三角形)中,∠C=90°,角A的余弦是它的邻边比三角形的斜边,即cosA=b/c,也可写为cosA=AC/AB。余弦函数:fx=cosxxR

 假设a向量是(x1, y1),b向量是(x2, y2),那么可以将余弦定理改写成下面的形式:

      

 向量a和向量b的夹角 的余弦计算如下

      

 扩展,如果向量ab不是二维而是n维,上述余弦的计算法仍然正确。假定ab是两个n维向量,a是(a1a2a3…,an  b (b1,b2,b3,….bn),则ab的夹角 的余弦等于:

       

 余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于0,即两个向量相等,这就叫"余弦相似性"

 步骤:

 (1)将对比的两个句子进行分词,列出所有的分词

 (2)用所有的分词组成一个向量,根据每个句子的分词来分析统计出自己的词频向量

 (3)计算这两个分量的相似性,值越大就表示越相似。

eg

 句子A:我爱购物 句子B: 我爱读书

 ① 先进行分词

 A=我//购物 B=//读书

 ② 列出所有的词

 { 我//购物/读书 }

 ③计算词频(出现次数)

 A={1,1,1,0} (每个数字对应上面的字) B={1,1,0,1}

 然后把词频带入公式(4

 

 最终值=0.67,即相似度为0.67

 值越大就表示越相似。


了解更多 skycto™分词文本匹配算法及NLP自然语言处理服务组件,联系我们,快速轻松实现国产化安可环境的文字语言处理技术。

 我们的联系方式:

 公司名称:四川书写人生科技有限公司

 通信地址:成都市金牛区兴盛西路2号固特大厦3幢A座405A

 公司座机:028-83410634

 微信电话:191-8044-7517

 联系邮件:admin@skycto.com

 我们承诺:邮件12小时回,微信4小时回复,欢迎致电联系。


推荐阅读

首页 分享微博 分享微信 回到顶部