字符串编辑距离(Edit Distance)
一、问题描述
定义
字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之间,由一个转变成另一个所需的最少编辑操作次数。许可的编辑操作包括:
将一个字符替换成另一个字符
插入一个字符
删除一个字符
应用
1. DNA分析:
基因学的一个主要主题就是比较DNA序列并尝试找出这两个序列的公共部分。如果两个DNA序列有类似的公共子序列,那么这两个序列很可能是同源的,在比对两个序列时,不仅要考虑完全匹配的字符,还要考虑一个序列中的空格或间隙和不匹配,这两方面都可能意味着突变(mutation)。在序列比对时,需要找到最优的比对(最优比对大致是指要将匹配的数量最大化,将空格和不匹配的数量最小化)。如果要更正式些,可以确定一个分数,为匹配的字符添加分数,为空格和不匹配的字符减去分数。
2. 拼写纠错(Spell Correction)&拼写检查(Spell Checker):
将每个词与词典中的词条比较,英文单词往往需要做词干提取等规范化处理,如果一个词在词典中不存在,就被认为是一个错误,然后提出 N 个最可能是要输入的词——拼写建议。常用的提示单词的算法就是列出词典中与原词具有最小编辑距离的词条。
3. 命名实体抽取(Named Entity Extraction)&实体共指(Entity Coreference):
由于实体的命名往往是没有规律的,如品牌名,且可能存在多种变形,拼写形式,如“IBM”和“IBM Inc”,这样导致基于词典完全匹配的命名实体识别方法召回率较低,为此,我们可以使用编辑距离由完全匹配泛化到模糊匹配。
4. 字符串核函数(String Kernel):
最小编辑距离作为字符串之间的相似度计算函数,用于SVM等机器学习算法中。
二、字符串编辑的分析
代码如下:
// 算法的关键是求解 dp 矩阵,该矩阵即为生物信息学中所提到过的打分矩阵
// dp 矩阵的维度为 (srclength+1) * (targetLength+1),
// 推演时可以将 ‘0’+pSource 分别排在每一行开头,‘0’+pTarget 分别排在每一列上头
int editDistance(char *pSource, char *pTarget)
{
int srcLength = strlen(pSource);
int targetLength = strlen(pTarget);
int dp[srcLength + 1][targetLength + 1];
for (int i = 0; i <= srcLength; ++i){
dp[i][0] = i; // 这一步表示由一个空串变成pSource的编辑距离
}
for (int j = 0; j <= targetLength; ++j){
dp[0][j] = j;
}
for (int i = 1; i <= srcLength; ++i){
for (int j = 1; j <= targetLength; ++j){
if (pSource[i - 1] == pTarget[j - 1]){
dp[i][j] = dp[i - 1][j - 1]; // 表示当前两个字符串最后的两个元素相等的情况
}
else{
// 表示当前两个字符串最后两个元素不相等的情况,
// 编辑距离为上述三种编辑距离中最小值加1
dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1]) + 1;
}
}
}
return dp[srcLength][targetLength]; // dp 矩阵的最后一个元素即为最终求出的编辑距离
}
---------------------
作者:xhj_enen
来源:CSDN
原文:https://blog.csdn.net/xhj_enen/article/details/88398444
版权声明:本文为博主原创文章,转载请附上博文链接!
字符串编辑距离(Edit Distance)的更多相关文章
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
利用编辑距离(Edit Distance)计算两个字符串的相似度 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可 ...
- 编辑距离——Edit Distance
编辑距离 在计算机科学中,编辑距离是一种量化两个字符串差异程度的方法,也就是计算从一个字符串转换成另外一个字符串所需要的最少操作步骤.不同的编辑距离中定义了不同操作的集合.比较常用的莱温斯坦距离(Le ...
- 行编辑距离Edit Distance——动态规划
题目描写叙述: 给定一个源串和目标串.可以对源串进行例如以下操作: 1. 在给定位置上插入一个字符 2. 替换随意字符 3. 删除随意字符 写一个程序.返回最小操作数,使得对源串进行这些操作后等 ...
- [Swift]LeetCode72. 编辑距离 | Edit Distance
Given two words word1 and word2, find the minimum number of operations required to convert word1 to ...
- [Leetcode 72]编辑距离 Edit Distance
[题目] Given two words word1 and word2, find the minimum number of operations required to convert word ...
- 编辑距离Edit Distance 非常典型的DP类型题目
https://leetcode.com/problems/edit-distance/?tab=Description 真的非常好,也非常典型. https://discuss.leetcode.c ...
- [LeetCode] One Edit Distance 一个编辑距离
Given two strings S and T, determine if they are both one edit distance apart. 这道题是之前那道Edit Distance ...
- stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)
I. 最小编辑距离的定义 最小编辑距离旨在定义两个字符串之间的相似度(word similarity).定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等. 编辑距离就 ...
- Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶
sam格式很精炼,几乎包含了比对的所有信息,我们平常用到的信息很少,但特殊情况下,我们会用到一些较为生僻的信息,关于这些信息sam官方文档的介绍比较精简,直接看估计很难看懂. 今天要介绍的是如何通过b ...
随机推荐
- 【CODEVS】2618 核电站问题
2618 核电站问题 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 一个核电站有N个放核物质的坑,坑排列在一条直 ...
- CSS制作的32种图形效果[梯形|三角|椭圆|平行四边形|菱形|四分之一圆|旗帜]
转载链接:http://www.w3cplus.com/css/css-simple-shapes-cheat-sheet 前面在<纯CSS制作的图形效果>一文中介绍了十六种CSS画各种不 ...
- Django项目:CRM(客户关系管理系统)--10--04PerfectCRM实现King_admin注册功能02
from django import conf #配置文件print("dj conf:",conf) #配置文件print("dj conf:",conf.s ...
- 【BZOJ2809】【APIO2012】dispatching
左偏树. 每个子节点维护大根堆,遍历一个儿子就往自己合并,合并发现钱不够了就删除队顶. //Achen #include<algorithm> #include<iostream&g ...
- https比http到底那里安全?
HTTPS和HTTP的概念 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP ...
- 【JZOJ3640】【COCI2014】utrka
Mission 2<=N<=300,2<=M<=N∗(N−1) Solution SPFA. 由于只是二元关系,所以条件随便写. 具体来说,如果是u⇒v. 若v的最大领先时间还 ...
- java 操作CLOB类型数据
clob类型,但对于这个类型处理起来还是比较麻烦的,varchar2长度为4000bytes,如果varchar2能满足楼主的需求,建议使用varchar2,下面提供了在Java 中读取clob类型的 ...
- python 匹配集合与补集
- CentOS 上MySQL报错Can't connect to local Mysql server through socket '/tmp/mysql.scok' (111)
好吧,这是最常见的MySQL服务没有打开 那就赶紧去打开啊! 在管理员模式下运行以下语句: /usr/local/mysql/bin/mysqld_safe --user=mysql & 成功 ...
- SPSS统计基础-均值功能的使用
SPSS统计基础-均值功能的使用 均值过程计算一个或多个自变量类别中因变量的子组均值和相关的单变量统计.您也可以获得单因素方差分析.eta 和线性相关检验. 统计量.合计.个案数.均值.中位数.组内中 ...