余弦相似性计算及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('阿克苏苹果', '阿克苏苹果'))

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

相关文章

  • 不到20行实现Python代码即可制作精美证件照

    不到20行实现Python代码即可制作精美证件照

    这篇文章主要介绍了不到20行实现Python代码即可制作精美证件照,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python第三方库subprocess执行cmd同时输入密码获取参数

    python第三方库subprocess执行cmd同时输入密码获取参数

    本文给大家介绍python subprocess执行cmd同时输入密码获取参数,手动输入cmd命令,本文给大家逐一介绍这个命令的使用方法,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • 详解python--模拟轮盘抽奖游戏

    详解python--模拟轮盘抽奖游戏

    这篇文章主要介绍了python模拟轮盘抽奖游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python OpenCV中的图像处理物体跟踪效果

    Python OpenCV中的图像处理物体跟踪效果

    我们知道怎样将一幅图像从 BGR 转换到 HSV 了,我们可以利用这一点来提取带有某个特定颜色的物体,这篇文章主要介绍了Python OpenCV中的图像处理物体跟踪,需要的朋友可以参考下
    2023-08-08
  • python 关键字与标识符超详细整理

    python 关键字与标识符超详细整理

    这篇文章主要给大家介绍了关于Python关键字、标识符和变量的相关资料,Python关键词是Python保留的具有特定含义的特殊词语,用于执行某些操作,Python标识符是用户定义的名称,而变量是计算机内存中的一块区域,存储对象的内存地址,以便引用对象的值,需要的朋友可以参考下
    2022-03-03
  • Python3中urlopen()的用法解读

    Python3中urlopen()的用法解读

    这篇文章主要介绍了Python3中urlopen()的用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析

    Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析

    读万卷书不如行万里路,学的扎不扎实要通过实战才能看出来,本篇文章手把手带你爬取去哪儿平台的旅游景点攻略并进行可视化分析,大家可以在过程中查缺补漏,看看自己掌握程度怎么样
    2021-10-10
  • mac PyCharm添加Python解释器及添加package路径的方法

    mac PyCharm添加Python解释器及添加package路径的方法

    今天小编就为大家分享一篇mac PyCharm添加Python解释器及添加package路径的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 利用python实现xml与数据库读取转换的方法

    利用python实现xml与数据库读取转换的方法

    这篇文章主要给大家介绍了关于利用python实现xml与数据库读取转换的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 详解Python的迭代器、生成器以及相关的itertools包

    详解Python的迭代器、生成器以及相关的itertools包

    这篇文章主要介绍了详解Python的迭代器、生成器以及相关的itertools包,Iterators、Generators是Python的高级特性,亦是Python学习当中必会的基本知识,需要的朋友可以参考下
    2015-04-04

最新评论