python计算数组余弦相似度_文本相似度计算--余弦相似度

c00198be438406e49b0d2c82042c994f.png

在线面试碰到的这个东东,临时补了一下课。。

所谓的余弦相似度就是将余弦函数应用到自然语言处理领域,做文本相似度的分析。大概的流程就是,为了计算两句话的相似度,首先需要将两句话拆分成词,也就是所谓的分词,这里中文的话方法就是利用python的jieba库,很方便,很上手。然后将两句话拆分所得的所有的分词来一个合并同类项,得到一个总的词语的集合。然后,以这个总的集合为基准,写出两句话的1/0向量表示,就是遍历总的集合的每个词,句中有就用1表示,没有就用0表示,这样两句话就可以用一串类似比特流的10字符串表示,最后,祭出我们的终极大杀器,cos表达式的公式。(以下几张图均来自网络)

印象中,余弦函数的公式长下面这样:

3424b1da425f75101f75a9e4b208e572.png

然而还有个变种,长这样:

acf41005fb38bafcc21806034a79a11a.png

应用于a,b均为向量形式,也就是我们上面得到的那一串01字符串,通过这个公式就可以完美的计算出余弦值,下面分别是公式详细版及一个实例。

4e86571f7f18f5865ae08b79e151b42f.png

09d84489fe9a856acac66c307e6f724f.png

这里我们可以看到最后得出的结果是0.81,我们都知道,0度的余弦值是1,意味着如果两个向量的夹角越小,也就是越相似,值就越接近1。完毕。

讲真,认识余弦函数也有些年头了,居然今天才知道,这家伙,还有这么牛逼的用处。以上是我翻了一遍网络上的资料然后自己对于余弦相似度的理解。但是有一个疑问,角度越小,意味着两个向量越接近,这不错,问题是,即使两个向量角度为0也就是完全重合在一起,但是端坐标不同该如何??????我们不能仅仅以角度作为唯一的相似度判断的标准吧?还是说,对于向量而言,就是如此????

最后补一句,下午在查阅相关资料的时候,脑海中一直浮现先前NHK拍的一部纪录片,《上帝公式》,也许,万物的规律,真的可以完全公式化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值