栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python levenshtein算法 字符串相似度

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python levenshtein算法 字符串相似度

#!/usr/bin/python
# coding:utf-8

def    levenshtein_ratio(first, second):
    if len(first)== 0 and len(second) == 0:
        return 1.0
    distance = levenshtein_distance(first,second,1,1,2)
    return 1-float(distance)/(len(first)+len(second))

def    levenshtein_distance(first, second, cost_ins = 1 , cost_del = 1 , cost_rep = 1):
    '''
    计算两个字符串之间的编辑距离
    :输入参数 first: 第一个字符串
    :输入参数 second: 第二个字符串
     :输入参数 cost_ins: 插入开销
    :输入参数 cost_del: 删除开销
     :输入参数 cost_rep: 替换开销
    :返回值: 编辑距离
   '''
    if len(first)== 0 or len(second) == 0:
        return len(first)+len(second)
    first_length = len(first) + 1
    second_length = len(second)+ 1
    distance_matrix = [range(i, second_length + i) for i in range(first_length)]
    # 初始化矩阵
    for i in range(1, first_length):
        for j in range(1, second_length):
            deletion = distance_matrix[i-1][j] + cost_del
            insertion = distance_matrix[i][j-1] + cost_ins
            substitution = distance_matrix[i-1][j-1]
            if first[i-1] != second[j-1]:
                substitution += cost_rep
            distance_matrix[i][j] = min(insertion, deletion, substitution)
    return distance_matrix[first_length-1][second_length-1]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号