加权编辑距离

加权莱文斯坦距离/加权最小编辑距离(python) 不加权的最小编辑距离链接: https://blog.youkuaiyun.com/qq_36282995/article/details/116419855 之前讲解了关于不加权的最小编辑距离,即字符串之间添加、删除、修改字符的比重是一样的。 但这其实是不太合理的。 比如‘abc’转换为‘abv’,我们只需要将字母c转换为字母v即可。我们记为编辑距离为1. 对于‘abc’转换为‘abp’,只需要将字母c转换为字母p即可,编辑距离也为1. 但我们知道,在键盘上字母c和字母v的距离很近,但字母c和字母p的距离 阅读详情

在词项独立的矫正方法中,有一种叫做编辑距离的方法。

给定两个字符串s1和s2,两者的编辑距离定义为将s1转换成s2的最小编辑操作数。

这些编辑操作包括:

  1. 将一个字符插入字符串中
  2. 将一个字符从字符串中删除
  3. 将字符串中的一个字符替换为另外一个字符

对于加权的编辑距离,假定删除一个字符的权重为delCost,替换字符的权重定义为键盘上按键的曼哈顿距离dist[i][j],插入一个字符的代价为insertCost。

于是有

dp[i][j] = min(min(dp[i-1][j-1]+if(s1[i]==s2[j]) then 0 else dist[i][j],dp[i-1][j]+delCost),del[i][j-1]+delCost);

对于边界有dp[i][0] = i ; dp[0][j] = j * insertCost;


附代码如下:

//karsbin 2012.11.13

/*
 *加权编辑距离,动态规划
 *在搜索引擎拼写矫正中,通过键盘按键的曼哈顿距离给编辑距离赋权值
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <math.h>
#include <ctype.h>

const int maxn = 1024 ;
int dist[32][32] ;
int dp[maxn][maxn] ;
int delCost = 6 ;	//删除一个字符的代价
int insertCost = 6 ;//插入一个字符的代价
char dict[][11] = {"qwertyuiop","asdfghjkl*","zxcvbnm***"};	

//计算键盘按键的权值,对于其他权值,可通过给dist赋值实现
void calcWeidht()
{
	int i , j , x , y ;
	for( i = 0 ; i < 3 ; i++)
	{
		for ( j = 0 ; j < 10 ; j++)
		{
			if ( dict[i][j] == '*' )
			{
				break ;
			}
			//计算dict[i][j]和其他元素的权值
			for ( x = 0 ; x < 3 ; x++)
			{
				for ( y = 0 ; y < 10 ; y++) if( dict[x][y] != '*' )
				{
					dist[dict[i][j]-'a'][dict[x][y]-'a'] = abs(i-x)+abs(j-y);
				}
			}
		}
	}
}

inline int get_min(int a,int b)	{	return a < b ? a : b ;	}

//计算A,B的编辑距离,假定长度 < maxn-1
int calcEditDist(char A[],char B[])
{
	int lenA = strlen(A);
	int lenB = strlen(B);
	int i , j ;

	//初始化边界
	for( i = 1 ; i <= lenA ; i++)
	{
		dp[i][0] = i * insertCost ;
	}
	for ( j = 1 ; j <= lenB ; j++)
	{
		dp[0][j] = j * insertCost ;
	}

	//dp
	for ( i = 1 ; i <= lenA ; i++)
	{
		for ( j = 1 ; j <= lenB ; j++)
		{
			int changeCost = (A[i-1]==B[j-1]?0:dist[tolower(A[i-1])-'a'][tolower(B[j-1])-'a']) ;
			dp[i][j] = get_min(dp[i-1][j]+delCost,get_min(dp[i][j-1]+delCost,dp[i-1][j-1]+changeCost));
		}
	}
	
	return dp[lenA][lenB];
}

int main()
{
	char strA[maxn] , strB[maxn] ;
	calcWeidht();
	while (~scanf("%s%s",strA,strB))
	{
		printf("%s和%s的编辑距离为:%d\n",strA,strB,calcEditDist(strA,strB));
	}
}


莱文斯坦距离/最小编辑距离(python) LeetCode题目链接: https://leetcode-cn.com/problems/edit-distance/ 本题的解题思路,和经典的动态规划问题:最长公共子序列是相似的,只不过一个求最大,一个求最小。 简单来说:如果我们要比较字符串‘abc’和字符串‘def’,而且已知: s1=‘ab’和s2=‘de’的最小编辑距离为k1, s1=‘abc’和s2=‘de’的最小编辑距离为k2, s1=‘ab’和s2=‘def’的最小编辑距离为k3, 那我们知道我们有三种可能得到原问题的解: 阅读详情

相关推荐

11、基于加权符号的编辑距离在图像分类中的应用

本文提出了一种基于加权符号的编辑距离方法,并将其应用于图像分类任务。通过将图像转换为带有TF-IDF权重的符号字符串,并改进传统的编辑距离计算方式,新方法能够更准确地衡量图像之间的差异。实验表明,该方法在分类性能上优于标准编辑距离和常见的特征向量度量方法。此外,通过自动学习编辑操作成本,进一步提升了分类准确性。

threejs5artist的博客 95

【算法】dynamic programming (2)最长公共子序列:递归(自顶向下)+备忘录+输出结果字符串、编辑距离,加权编辑距离

1. 递归+备忘录的方式写LCS 不允许使用for和while循环 1.1 只输出最长的值 1.2 使用备忘录 memo = [[0 for j in range(len(s2)+1)] for i in range(len(s1)+1)] def LCS(i, j, s1, s2, memo): if i >= len(s1) or j >= len(s2)...

ysugarr 1081

12、加权符号编辑距离与关联规则挖掘新方法

本文探讨了加权符号编辑距离(WED)与标准编辑距离的差异,并将其与向量空间度量进行对比,展示了WED在小词汇量情况下的优越性能。同时,提出了一种将学习编辑成本融入WED的方法,通过最小生成树(MST)确定替换成本,从而提高分类准确率。在关联规则挖掘方面,文章指出了传统方法存在的冗余问题,引入了最小预测规则(MPR)的概念,并提出了相应的挖掘算法,能够过滤掉冗余规则,提供更简洁、更具代表性的规则集。研究成果在图像分类、医学领域等多个应用场景中具有广泛潜力,并为未来算法优化和结合其他技术提供了方向。

threejs5artist的博客 100

基于中文形近字相似度与加权编辑距离融合实现的汉字纠错算法

以本篇文章记录自己在算法开发过程中----文本纠错 上遇到的问题及解决方法。笔者调研了常用文本纠错工具及第三方库例如:pycorrector及mac-bert等,由于该库下的数据都是基于句子级文本训练得到的语言模型。例> 我要配一副眼睛 ------------我要配一副眼镜 那么[睛,镜]是可以被纠错的。但> 大和圩乡 ------------太和圩乡 使用该方式是无法进行纠错的。

LuoFan_A的博客 7375

17、动态规划算法之积:加权逻辑程序的新视角

本文探讨了将动态规划算法表示为加权逻辑程序之积的新方法。通过介绍加权逻辑程序的基本概念和PRODUCT变换的核心思想,展示了该方法在不同场景下的应用,包括编辑距离计算、有限状态自动机的交集识别以及上下文无关解析等。文章结合具体算法示例深入分析了这一方法的灵活性与实用性,为设计和优化复杂计算算法提供了统一的框架。

zzz56的博客 72

编辑距离算法详解:动态规划实现与工程应用

动态规划是算法设计中的基本思想,适用于求解具有最优子结构和重叠子问题的场景。编辑距离(Levenshtein距离)正是其经典代表,通过定义两个字符串前缀间的状态转移,可以量化插入、删除、替换三种操作的代价,从而衡量文本相似度。理解状态设计与边界条件后,利用滚动数组可将空间复杂度降至线性。该技术广泛应用于拼写纠错、模糊搜索、基因序列比对以及代码diff等真实场景。从动态规划模型出发,逐步推导编辑距离的递推逻辑与优化方法,能帮助开发者构建扎实的字符串算法基础,并在工程中灵活应用。

weixin_29574585的博客 189

超越准确率指标:MaskTextSpotterV3 如何用加权编辑距离科学评估场景文字识别结果

**MaskTextSpotterV3** 是 ECCV 2020 论文《Mask TextSpotter v3》的 PyTorch 开源实现,一个能检测并识别任意形状文本的场景文字定位(Scene Text Spotting)模型。除了模型本身,它内置的一套**加权编辑距离(Weighted Edit Distance)评估方法**同样值得学习——本文带你弄懂:为什么传统的准确率指标不足以评价文

gitblog_00248的博客 235

遥感影像分割实战:LoveDA数据集从下载到训练全流程指南(附避坑技巧)

本文以LoveDA数据集为例,提供了一份详尽的遥感影像语义分割实战指南。内容涵盖从数据下载、理解与预处理,到环境配置、模型选择与训练,再到性能调优与部署的全流程,并重点分享了多个关键环节的避坑技巧,旨在帮助开发者和研究者高效上手并解决实际问题。

cherry的博客 929

加权编辑距离 python leetcode-72 升级版本

class Solution: def __init__(self): self.delCost = 1 self.insertCost = 2 self.changeCost = 3 def minDistance(self, word1: str, word2: str) -> int: n = len(word1) m = len(word2) # 有一个字符串为空串

ailinyingai的博客 531

Hi3516CV610开发板实战:从零搭建智能视觉监控系统

本文详细介绍了从零开始基于Hi3516CV610开发板搭建智能视觉监控系统的完整实战流程。涵盖硬件连接、系统配置、摄像头集成、网络设置、固件烧录到视频处理与智能分析功能开发,提供了丰富的实践经验和调试技巧,帮助开发者快速掌握嵌入式视觉系统开发。

vvv99的博客 561

CUDA系列-Stream-1

This section describes static aspects of the CUSW_UNIT_STREAM unit’s architecture.和stream相关的其它Unit主要有Channel,Sync,Memmgr A CUDA stream is a software FIFO queue that allows commands like kernel launch and memcpy to be enqueued in it. The enqueued commands

weixin_43360707的博客 734

字符串的编辑距离

这个应该是可以运用在机器翻译,用户输入纠正 英文字和图片来源于 :  https://www.coursera.org/nlp/ The minimum edit distance  between two strings     动态规划的解法:      这里如果替换一个字符的消耗是2   Weighted Edit D

雨翔的专栏 589

Cesium 模拟飞机坠毁功能

Cesium 模拟飞机坠毁功能,粒子模拟

QQhelphelp的博客 1068

stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)

I. 最小编辑距离的定义 最小编辑距离旨在定义两个字符串之间的相似度(word similarity)。定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等。 编辑距离就是指将一个字符串通过的包括插入(insertion),删除(deletion),替换(substitution)的编辑操作转变为另一个字符串所需的最少编辑次数。比如: 如果将编辑操作从字符放大到词...

weixin_34235457的博客 215

【人工智能】OpenClaw网关API速率限制报错全解析 API rate limit reached. Please try again later.

对应HTTP标准状态码为429(请求过多)。该报错集中出现在OpenClaw GATEWAY DASHBOARD的聊天会话界面,核心特征为:用户最初以为是单一模型服务商的问题,先后更换OpenAI、Gemini、Ollama、Moonshot、Mercury-2等多个主流大模型API后,该报错仍稳定触发,尤其在执行复杂任务时高频出现。

奶爸的编程之路,也就一周冷个三天 6459

为什么先进工艺需要check那么多corner?

那么hold slack = launch clock path delay + data path delay - capture_clock_path_delay = -capture_clock_path_delay,也就是说,capture clock path delay越大,hold越难满足。而且,我们在设计的时候,一般clock频率都会过约,所以是有较大的margin的。有的foundry还会对rc的取值范围进行了约束,如cworst_T,采用的是1.5 sigma的取值范围。

芯冰乐 2087

斯坦福大学-自然语言处理入门 笔记 第三课 最小编辑距离

一、定义最小编辑距离 1、最小编辑距离的用途 拼写矫正 用户输入graffe,那么哪一个是最接近的?graf?graft?grail?还是giraffe 计算生物学 用来校准核酸序列 校准(alignment)结果 同时也用于机器翻译,信息抽取等领域 2、编辑距离 两个字符串间最小的编辑距离就是将其中一个变成另外一个时需要的最小的编辑操作次数(操作包含插入、删除、替代)。 举例...

苏三慎的博客 1308

【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)

生存和射击游戏一直是我的最爱,说起3D最普遍的应该就是射击系统了,你可以在任何情况下加入射击功能,所以我写下了这篇FPS开发记录。希望对你有帮助。在这个项目中,你将学习如何设计和实现射击系统、武器系统、玩家控制、场景设计等方面的内容。通过这个项目,你将深入了解游戏开发中的许多核心概念和技术,并且在实践中不断提升自己。本项目将带你从零开始逐步实现一个完整的第一人称射击游戏,并且会逐步引入一些高级功能,如特效、声音等。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5499

Edit Distance

本篇内容将讲述Edit Distance(编辑距离),具体包括4个方面: Defining Minimum Edit Distance Computing Minimum Edit Distance Backtrace for Computing Alignments Weighted Minimum Edit Distance Definition of Minimum Edit Distan

X-SPY的博客 520

组基轨迹建模 GBTM的介绍与实现(Stata 或 R)

组基轨迹建模(Group-Based Trajectory Modeling,GBTM)(旧名称:Semiparametric mixture model)历史:由DANIELS.NAGIN提出,发表文献《Analyzing Developmental Trajectories:A Semiparametric,Group-Based Approach》GBTM能够将一群人的轨迹分类并生成数个具有代表性的运动轨迹模型,然后对每个轨迹模型进行分析,以了解人们的运动特征、生理水平和风险等级等。

三分钟热度 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

最小编辑距离算法详解:从动态规划原理到Python工程实践

字符串相似度是文本处理、搜索引擎与自然语言处理中的基础问题,如何量化两段文本的差异,直接关系到拼写纠错、模糊匹配、数据清洗与OCR校验的实际效果。最小编辑距离,又称Levenshtein距离,通过统计插入、删除、替换三种操作的最少次数来衡量序列差异,是这类场景中最常用的算法之一。其核心是动态规划思想,将复杂问题拆解为子问题递推求解,既保证全局最优,也为性能优化留出空间。在搜索纠错、文本去重、基因序列比对等应用中,编辑距离常与长度剪枝、滚动数组等手段结合,以平衡精度与计算效率。本文结合可运行的Python代码

weixin_32183107的博客 280

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Levenshtein距离实战指南:从字符串编辑距离到工业级模糊匹配

Levenshtein距离是一种基础而关键的字符串相似度度量方法,其核心原理是计算两个字符串间通过插入、删除、替换等单字符操作相互转换所需的最少步骤数。作为一种确定性、无模型依赖的字符级度量,它规避了语义嵌入的幻觉风险,在拼写纠错、OCR后处理、短文本模糊匹配等场景中具备不可替代的技术价值。相比Jaccard(词集重合)、Cosine(向量夹角)或BERT(语义嵌入),Levenshtein更适用于对齐精度要求高、需可解释性与低延迟的工程任务,尤其在搜索推荐、地址标准化和金融票据校验中广泛落地。本文聚焦Da

weixin_34005090的博客 329

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

从‘内审协会’到‘中国内审协会’:一文搞懂编辑距离,并把它用在你的表格数据上

本文深入探讨了编辑距离算法及其在表格数据相似度计算中的应用。从字符串编辑距离的基础实现到树编辑距离(TED)的进阶应用,详细解析了如何通过动态规划优化表格相似度计算,并介绍了TEDS指标的实际应用场景和优化技巧。

weixin_29214559的博客 103

动态规划在字符串处理中的应用:字符串相似度分析

◦ 若A[i-1] == B[j-1],则dp[i][j] = dp[i-1][j-1](无需操作);4. 初始化:dp[i][0]=i(删除i个字符),dp[0][j]=j(插入j个字符)。A="kitten",B="sitting",编辑距离为3(替换k→s,删除e,插入i)。2. 状态矩阵构建:设dp[i][j]表示A前i个字符与B前j个字符的编辑距离。dp[i-1][j-1] # 替换A[i-1]为B[j-1]◦ 状态dp[i][j]表示A前i个字符与B前j个字符的公共子串数。

2501_91651160的博客 449

荐读 | 如何有效的进行公司名称匹配

本文出自 Tencent CDC原文地址https://cdc.tencent.com/2020/08/30/如何有效的进行公司名称匹配/来源:转自dataxon公众号1. 背景及主要...

lsxxx2011的专栏 5339
上一篇: 算法导论思考题 找出所缺的数字
下一篇: 多项式大于和渐进大于的区别
bin314
博客等级 码龄16年 8粉丝 21原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值