本文要点在于算法的设计:如果两个单词中不相同的字母足够少,并且随机选择几个字母在两个单词中具有相同的前后顺序,则认为两个单词是等价的。

目前存在的问题:可能会有误判。

from random import sample, randint

def oneInAnother(one, another):

'''用来测试单词one中有多少字母不属于单词another'''

return sum((1 for ch in one if ch not in another))

def testPositions(one, another, positions):

'''用来测试单词one中位置positions上的字母是否

与单词another中的相同字母具有同样的前后顺序'''

#获取单词one中指定位置上的字母

lettersInOne = [one[p] for p in positions]

print(lettersInOne)

#这些字母在单词another中的位置

positionsInAnother = [another[p:].index(ch)+p for p, ch in zip(positions,lettersInOne) if ch in another[p:]]

print(positionsInAnother)

#如果这些字母在单词another中也具有相同的前后位置关系,返回True

if sorted(positionsInAnother)==positionsInAnother:

return True

return False

def main(one, another, rateNumber=1.0):

c1 = oneInAnother(one, another)

c2 = oneInAnother(another, one)

#计算比例,测试两个单词有多少字母不相同

r = abs(c1-c2) / len(one+another)

#测试单词one随机位置上的字母是否在another中具有相同的前后顺序

minLength = min(len(one), len(another))

positions = sample(range(minLength), randint(minLength//2, minLength-1))

positions.sort()

flag = testPositions(one, another, positions)

#两个单词具有较高相似度

if flag and r<rateNumber:

return True

return False

#测试效果

print(main('beautiful', 'beaut', 0.2))

print(main('beautiful', 'beautiful', 0.2))

print(main('beautiful', 'btuaeiflu', 0.2))

某次运行结果如下:

['a', 'u']

[2, 3]

False

['a', 'u', 'f', 'u']

[2, 3, 6, 7]

True

['b', 'e', 'a', 'u', 't', 'f']

[0, 4, 3, 8, 6]

False

Python判断两个单词的相似度相关推荐

  1. python判断英文字母_Python判断两个单词的相似度

    本文要点在于算法的设计:如果两个单词中不相同的字母足够少,并且随机选择几个字母在两个单词中具有相同的前后顺序,则认为两个单词是等价的. 目前存在的问题:可能会有误判. from random impo ...

  2. python判断是否有重复单词_Python判断两个单词的相似度

    本文要点在于算法的设计:如果两个单词中不相同的字母足够少,并且随机选择几个字母在两个单词中具有相同的前后顺序,则认为两个单词是等价的. 目前存在的问题:可能会有误判. from random impo ...

  3. Python判断两个文件夹中互相不同的文件有哪些、判断一个文件夹相对于另外一个文件夹缺少了哪些文件

    Python判断两个文件夹中互相不同的文件有哪些.判断一个文件夹相对于另外一个文件夹缺少了哪些文件 目录 Python判断两个文件夹中互相不同的文件有哪些.判断一个文件夹相对于另外一个文件夹缺少了哪些 ...

  4. C++实现判断两个单词是否为变位词

    C++实现判断两个单词是否为变位词 如果两个单词中出现的字母相同,并且每个字母出现的次数也相同,那么这两个单词就称为变位词.完成一个函数判断输入的两个字符串是不是互为变位词 #include<i ...

  5. OpenCV学习笔记——判断两张图的相似度

    判断两张图的相似度 方法 直方图对比法 ORB算法 实验 1.直方图对比法 参考如何使用OpenCV3直方图方法进行人脸相似度对比 因为我的环境是VS2010+OpenCV2.4.8,所以在原版的基础 ...

  6. python判断相同,Python判断两个文件是否相同与两个文本进行相同项筛选的方法

    python判断两个文件是否相同 import hashlib def gethash(f): line=f.readline() hash=hashlib.md5() while(line): ha ...

  7. python 判断两个列表间是否具有包含关系以及获取子列表在父列表中的索引

    python 判断两个列表间是否具有包含关系以及获取子列表在父列表中的索引 import operator def get_sub_list_index(parent_list, sub_list): ...

  8. python 匹配两个字符串的相似度

    python 匹配两个字符串的相似度 用到difflib库,该库是python自带的,不需要在进行下载 用起来很简单,直接放代码: #导入库 from difflib import SequenceM ...

  9. 如何使用Python判断两张图片是否相同?

    如何使用Python判断两张图片是否相同? 在图像处理中,经常需要判断两张图片是否相同.这个问题看似简单,实际上却不容易解决.但是,使用Python语言,我们可以通过多种方式来判断图片是否相同. 方法 ...

最新文章

  1. elasticsearch5.5.2环境搭建
  2. centos升级mysql到5.5
  3. inode客户端连接成功上不了网_wifi连接上但上不了网怎么回事
  4. Java基础:继承、多态、抽象、接口
  5. markdown公式(更新中)
  6. Developer Tools
  7. 关于SMARTFORM的页数问题
  8. POJ 1325 Machine Schedule[二分图匹配*最小点覆盖]
  9. 如果股市出现震荡行情,投资者应如何应对?
  10. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-3.微信网站扫码支付介绍...
  11. 《FLUENT 14流场分析自学手册》——1.4 流体运动及换热的多维方程组
  12. SketchUp 7 linux,SketchUp各版本有哪些兼容性更改?
  13. python爬虫学习7:读取起点排行榜数据
  14. 从零学习Belief Propagation算法(二)
  15. 用计算机弹奏七月上,七月上歌词背后的故事 七月上背景故事介绍
  16. excel表格内容合并的技巧?
  17. movie_recommendation_spark1
  18. 【leetcode】108. 将有序数组转换为二叉搜索树
  19. 区块链技术加持下的十款智能硬件产(kuang)品(ji)
  20. 7-1 重要的话说三遍

热门文章

  1. java非法字符检测_Java Web 一些特殊字符的过滤(appscan检查的安全问题)
  2. ab st语言编程手册_从零开始学习ST/SCL编程语言:一赋值及条件执行指令的讲解...
  3. 电大本科c及语言设计形考答案,2020国家开放大学电大《C语言程序设计》网络课形考任务4作业及答案(15页)-原创力文档...
  4. oracle cost小 比较慢,Oracle数据库中有关CBO优化的三个问题
  5. android 使用注解
  6. 备份网站服务器文件路径,网站数据自动备份方法
  7. java swing mysql实现的员工工资管理系统项目
  8. flex 底部固定_小猿圈网站页面底部固定的方法
  9. AX7 Form继承接口
  10. 《C++ Primer Plus(第六版)》(30)(第十四章 C++中的代码重用 编程题答案)