python 语句相似度计算_相似度与距离计算python代码实现

#定义几种距离计算函数

#更高效的方式为把得分向量化之后使用scipy中定义的distance方法

from math import sqrt

def euclidean_dis(rating1, rating2): #欧式距离计算

"""计算2个打分序列间的欧式距离. 输入的rating1和rating2都是打分dict

格式为{'小时代4': 1.0, '疯狂动物城': 5.0}"""

distance = 0

commonRatings = False

for key in rating1:

if key in rating2:

distance += (rating1[key] - rating2[key])^2

commonRatings = True

#两个打分序列之间有公共打分电影

if commonRatings:

return distance

#无公共打分电影

else:

return -1

def manhattan_dis(rating1, rating2): #曼哈顿距离计算

"""计算2个打分序列间的曼哈顿距离. 输入的rating1和rating2都是打分dict

格式为{'小时代4': 1.0, '疯狂动物城': 5.0}"""

distance = 0

commonRatings = False

for key in rating1:

if key in rating2:

distance += abs(rating1[key] - rating2[key])

commonRatings = True

#两个打分序列之间有公共打分电影

if commonRatings:

return distance

#无公共打分电影

else:

return -1

def cos_dis(rating1, rating2): #余弦相似度计算

"""计算2个打分序列间的cos距离. 输入的rating1和rating2都是打分dict

格式为{'小时代4': 1.0, '疯狂动物城': 5.0}"""

distance = 0

dot_product_1 = 0

dot_product_2 = 0

commonRatings = False

for score in rating1.values():

dot_product_1 += score^2

for score in rating2.values():

dot_product_2 += score^2

for key in rating1:

if key in rating2:

distance += rating1[key] * rating2[key]

commonRatings = True

#两个打分序列之间有公共打分电影

if commonRatings:

return 1-distance/sqrt(dot_product_1*dot_product_2)

#无公共打分电影

else:

return -1

def pearson_dis(rating1, rating2): #皮尔逊相似度计算

"""计算2个打分序列间的pearson距离. 输入的rating1和rating2都是打分dict

格式为{'小时代4': 1.0, '疯狂动物城': 5.0}"""

sum_xy = 0

sum_x = 0

sum_y = 0

sum_x2 = 0

sum_y2 = 0

n = 0

for key in rating1:

if key in rating2:

n += 1

x = rating1[key]

y = rating2[key]

sum_xy += x * y

sum_x += x

sum_y += y

sum_x2 += pow(x, 2)

sum_y2 += pow(y, 2)

# now compute denominator

denominator = sqrt(sum_x2 - pow(sum_x, 2) / n) * sqrt(sum_y2 - pow(sum_y, 2) / n)

if denominator == 0:

return 0

else:

return (sum_xy - (sum_x * sum_y) / n) / denominator

计算Python代码运行时间长度方法

在代码中有时要计算某部分代码运行时间,便于分析. import time start = time.clock() run_function() end = time.clock() print st ...

皮尔逊相关系数的计算(python代码版)

from math import sqrt def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] sumofab+= ...

余弦相似性计算及python代码实现

A:西米喜欢健身 B:超超不爱健身,喜欢打游戏 step1:分词 A:西米/喜欢/健身 B:超超/不/喜欢/健身,喜欢/打/游戏 step2:列出两个句子的并集 西米/喜欢/健身/超超/不/打/游戏 ...

10行Python代码计算汽车数量

当你还是个孩子坐车旅行的时候,你玩过数经过的汽车的数目的游戏吗? 在这篇文章中,我将教你如何使用10行Python代码构建自己的汽车计数程序. 以下是环境及相应的版本库: Python版本 3.6.9 ...

【Python学习】指定两点地理位置经纬度的距离计算

指定两点地理位置经纬度的距离计算 #coding=utf-8 from math import * # input Lat_A 纬度A # input Lng_A 经度A # input Lat_B ...

Python地理位置信息库geopy的使用(二):根据中心点坐标,方向,距离计算坐标

上一篇文章我们介绍了geopy的基本使用,这一篇文章我们根据中心点坐标,方向,距中心点距离计算出对应的坐标点,这种用法官网并没有给出详细的文档,我们这里做一下说明 生成坐标点的具体方法 import ...

机器学习中常用的距离及其python实现

1 概述 两个向量之间的距离(此时向量作为n维坐标系中的点)计算,在数学上称为向量的距离(Distance),也称为样本之间的相似性度量(Similarity Measurement).它反映为某类事 ...

[转] Python 代码性能优化技巧

选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

Python代码性能优化技巧

摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...

随机推荐

Python进阶【第二篇】多线程、消息队列queue

1.Python多线程.多进程 目的提高并发 1.一个应用程序,可以有多进程和多线程 2.默认:单进程,单线程 3.单进程,多线程 IO操作,不占用CPU python的多线程:IO操作,多线程提供并 ...

设计winform自带动态加载工具按钮和实现热键响应

1.初衷 主要是想设计一个自带添加工具按钮和按钮的快捷键的基窗体.这样以后所设计的窗体只要继承自这个窗体就可以实现热键响应和动态加工具按钮的功能了 写这边文章主要是为了以后使用的时候有个参考,因为这只 ...

我的WCF摸爬滚打之路(1)

等了好久终于等到今天!盼了好久终于把梦实现……哈哈,仅以此歌词来庆祝我为期3天的wcf学习之路圆满结束. 今天写这个文章的目的在于记录一下我自己在学习WCF的时候碰到的一些问题,俗话说,好记心不如烂笔 ...

一步一步学习Swift之(四)玩转UIWebView

实现原理: 1.通过UIWebView的stringByEvaluatingJavaScriptFromString方法来触发脚本 2.通过自定义连接来触发oc代码 实现过程 @IBOutlet we ...

setNeedsDisplay setNeedsLayout

setNeedsDisplay调用drawRect方法来实现view的绘制,而setNeedsLayout则调用layoutSubView来实现view中subView的重新布局 转自  http:/ ...

Inno Setup教程

一.简介 Inno Setup是一款免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务.该软件用Delp ...

C#编程实践–帮老婆计算产假方案

摘要 今天中午午休时,和老婆聊天,老婆还过几天就要请产假了,她在网上问我让我帮她数一下该怎么请假最划算,老婆是个会过日子的人,面对此种要求我当然义不容辞,不过想到这个问题我的第一反应是:这个怎么可以用 ...

HDU1829(种类并查集)

ps:本来是想找个二分图判断的题来写,结果百度到这鬼题 Problem Description Background Professor Hopper is researching the sexua ...

G. (Zero XOR Subset)-less(线性基)

题目链接:http://codeforces.com/contest/1101/problem/G 题目大意:给你n个数,然后让你把这n个数分成尽可能多的集合,要求,每个集合的值看做这个集合所有元素的 ...

js 利用数组实现类似于asp中的数据字典

---恢复内容开始--- 首先声明一个数组 var dictNew=new Array; var key; var value; for (var i = 0; i <50; i++) { // ...

你可能感兴趣的:(python,语句相似度计算)