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


Posted in Python onSeptember 18, 2019

A:西米喜欢健身

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

step1:分词

A:西米/喜欢/健身

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

step2:列出两个句子的并集

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

step3:计算词频向量

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

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

step4:计算余弦值

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

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

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 相关文章推荐
Python学习小技巧之列表项的拼接
May 20 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
Flask框架Flask-Login用法分析
Jul 23 Python
Flask之flask-session的具体使用
Jul 26 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
python如何从文件读取数据及解析
Sep 19 Python
python用requests实现http请求代码实例
Oct 31 Python
python关闭占用端口方式
Dec 17 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
python之yield和Generator深入解析
Sep 18 #Python
PyTorch预训练的实现
Sep 18 #Python
用python实现英文字母和相应序数转换的方法
Sep 18 #Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 #Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 #Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 #Python
决策树剪枝算法的python实现方法详解
Sep 18 #Python
You might like
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
Java基础类库面试题
2013/09/04 面试题
英文版网络工程师求职信
2013/10/28 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL