专栏首页python3在Windows下,python-Lev

在Windows下,python-Lev

(1)首先下载python-Levenshtein 网址:https://pypi.python.org/pypi/python-Levenshtein/0.10.2 (2)在切换到第三方包所在目录下,执行pip setup.py install 的命令后,报错“microsoft visual c++ 9.0 is required“,这是因为:Windows下使用pip安装包的时候,需要机器装有VS2008或VS2010才行, 如果不想装VS,可以安装一个Micorsoft Visual C++ Compiler for Python 2.7的包。下载网址:https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266 (3)然后再cd /d +文件目录 执行pip setup.py install 命令。 (4)验证Levenshtein是否安装成功。from Levenshtein import*;看是否报错。 (5)简单的实现代码 注意若使用”from Levenshtein import*“导入,则在调用函数时,不用加Levenshtein; Levenshtein.distance(str1,str2)函数 计算编辑距离是描述一个字符串转化成另一个字符串最少的操作次数,在其中的操作包括插入、删除、替换。

>>>distance('abc','ac')
>1                          由abc删除b得到ac操作一次
>distance('kitten','sitting')
>3                          kitten(k先替换为s)sitten(e替换为i)sittin(最后添加g)sitting
>>>ratio('abc','ac')
>0.8

Levenshtein.hamming(str1,str2)函数 计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字符串之间对应位置上不同字符的个数。

>>>hamming('abc','cba')                
>2
>>>hamming('abc','cam')
>3

Levenshtein.distance(str1,str2) 计算莱文斯坦比。计算公式r = (sum-Idist)/sum, 其中sum是指str1和str2字串的长度总和,Idist是类编辑距离:这里的类编辑距离不是1中所说的编辑距离,1中三种操作中每个操作+1,而此处,删除,插入依然+1,但是替换+2 这样设计的目的:ratio(‘a’,’c’), sum = 2,按1中的计算为(2-1)/2 = 0.5, 但是‘a’,’c’显然没有重合,不合算,但是替换操作+2,就可以解决这个问题。

>>>ratio('abc','abc')   (6-0)/6=1
>1.0
>>>ratio('abc','ab')    (6-1)/6=0.8
>0.8
>>>ratio('abc','abd')   (6-2)/6=0.6666666666
>0.66666666666

(6)编辑距离实现要动态规划:参考:https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ERP知识普及连载(3)

    用户2398817
  • C#经典面试题及答案 (3)

    答:初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载

    用户2398817
  • macos安装ffmpeg以及出现问题

    就是freetype动态库指定的目录不存在,或许没有安装,使用brew命令安装,显示已经安装,重新卸载安装也不行 但是安装完成之后也不行,一直报错 执行命令报错...

    用户2398817
  • ERP知识普及连载(3)

    用户2398817
  • 虚拟化底层结构分析+还原快照恢复原理

    虚拟机技术是虚拟化技术的一种,所谓虚拟化技术就是将事物从一种形式转变成另一种形式,最常用的虚拟化技术有操作系统中内存的虚拟化,实际运行时用户需要的内存空间可能远...

    北亚数据恢复中心
  • 『互联网架构』软件架构-netty高性能序列化协议protobuf(56)

    1.码流的大小,也就是解析后的二进制的大小,很明显原生的jdk序列化,字符长度很长,下面的滚动条都很长。数据越多,传输的带宽越大。在项目开发中内网通信的带宽都是...

    IT故事会
  • Appium系列|测试脚本实现 (五)

    这节课我们会来介绍下WebView的操作,之前我们介绍的都是原生控件的操作,WebView和其他原生控件的操作有点差别,WebView里面包含的控件用之前的定位...

    测试邦
  • 本周网络空间态势摘要

    1. 美国国会将在2018年推出多项网络安全法案 据外媒报道,美国众议院将数据泄露和消费者保护问题视为2018年的首要议程。众议院金融服务小组委员会主席布莱恩•...

    企鹅号小编
  • Python|找出井字棋的获胜者

    第一个玩家 A 总是用 "X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。

    算法与编程之美
  • 手把手教你搭建一个属于自己的网站

    网站也可以理解为web应用程序,只不过无需用户下载,只要有网络,随时随地都能访问。

    游魂

扫码关注云+社区

领取腾讯云代金券