余弦相似性计算及python代码实现过程解析

 更新时间:2019年09月18日 11:43:41   作者:郭雪原  
这篇文章主要介绍了余弦相似性计算及python代码实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

A:西米喜欢健身

B:超超不爱健身,喜欢打游戏

step1:分词

A:西米/喜欢/健身

B:超超/不/喜欢/健身,喜欢/打/游戏

step2:列出两个句子的并集

西米/喜欢/健身/超超/不/打/游戏

step3:计算词频向量

A:[1,1,1,0,0,0,0]

B:[0,1,1,1,1,1,1]

step4:计算余弦值

余弦值越大,证明夹角越小,两个向量越相似。

step5:python代码实现

import jieba
import jieba.analyse
def words2vec(words1=None, words2=None):
 v1 = []
 v2 = []
 tag1 = jieba.analyse.extract_tags(words1, withWeight=True)
 tag2 = jieba.analyse.extract_tags(words2, withWeight=True)
 tag_dict1 = {i[0]: i[1] for i in tag1}
 tag_dict2 = {i[0]: i[1] for i in tag2}
 merged_tag = set(tag_dict1.keys()) | set(tag_dict2.keys())
 for i in merged_tag:
  if i in tag_dict1:
   v1.append(tag_dict1[i])
  else:
   v1.append(0)
  if i in tag_dict2:
   v2.append(tag_dict2[i])
  else:
   v2.append(0)
 return v1, v2
def cosine_similarity(vector1, vector2):
 dot_product = 0.0
 normA = 0.0
 normB = 0.0
 for a, b in zip(vector1, vector2):
  dot_product += a * b
  normA += a ** 2
  normB += b ** 2
 if normA == 0.0 or normB == 0.0:
  return 0
 else:
  return round(dot_product / ((normA**0.5)*(normB**0.5)) * 100, 2)  
def cosine(str1, str2):
 vec1, vec2 = words2vec(str1, str2)
 return cosine_similarity(vec1, vec2)
print(cosine('阿克苏苹果', '阿克苏苹果'))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python实现合成多张图片到PDF格式

    Python实现合成多张图片到PDF格式

    在日常生活中,经常会遇到需要提交身份证正反面证明资料的情况,而且这些网站大部分只接受pdf格式,这时候我们就需要把身份证正反面两张图片合成为一个pdf文件。本文将为大家提供用Python实现这一要求的方法,需要的可以参考一下
    2022-02-02
  • Python+Redis从零打造分布式锁实战示例

    Python+Redis从零打造分布式锁实战示例

    Redis作为一款高性能的内存键值数据库,凭借其支持原子操作、高并发和数据持久化等特性,非常适合用来实现分布式锁,本文将详细探讨如何使用Python结合Redis从简单到复杂地实现分布式锁,并提供相应的示例代码
    2024-01-01
  • 在tensorflow中实现去除不足一个batch的数据

    在tensorflow中实现去除不足一个batch的数据

    今天小编就为大家分享一篇在tensorflow中实现去除不足一个batch的数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python环境安装配置实用的提示

    Python环境安装配置实用的提示

    想要使用Python语言编写程序,我们必须下载Python安装包并配置Python环境,这篇文章主要给大家介绍了关于Python环境安装配置实用提示的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Python列表pop()函数使用实例详解

    Python列表pop()函数使用实例详解

    这篇文章主要介绍了Python列表pop()函数使用实例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • pytorch 如何查看数据类型和大小

    pytorch 如何查看数据类型和大小

    这篇文章主要介绍了pytorch 实现查看数据类型和大小的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 教你如何编写、保存与运行Python程序的方法

    教你如何编写、保存与运行Python程序的方法

    这篇文章主要介绍了教你如何编写、保存与运行Python程序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python实现希尔排序算法的原理与用法实例分析

    Python实现希尔排序算法的原理与用法实例分析

    这篇文章主要介绍了Python实现希尔排序算法,简单讲述了希尔排序的原理并结合具体实例形式分析了Python希尔排序的具体实现方法与使用技巧,需要的朋友可以参考下
    2017-11-11
  • python编程进阶之异常处理用法实例分析

    python编程进阶之异常处理用法实例分析

    这篇文章主要介绍了python编程进阶之异常处理用法,结合实例形式分析了python异常捕获、处理相关语句、使用技巧与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • 用python实现文件备份

    用python实现文件备份

    大家好,本篇文章主要讲的是用python实现文件备份,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论