跳到主内容
快讯直播
AI智模界
AI 词典

编辑距离:最朴素的字符串相似度

一句话定义

编辑距离(Edit Distance)衡量的是:把字符串 A 改成字符串 B,最少需要几次「单字符级」的动手操作。最经典的一种叫 Levenshtein Distance,它只允许三种操作——插入一个字符、删除一个字符、替换一个字符,每种都记 1 分。

它是怎么算的

举个最常见的例子:kitten 变成 sitting,需要 3 步。

```

kitten → sitten(k 替换成 s)

sitten → sittin(e 替换成 i)

sittin → sitting(末尾插入 g)

```

那机器怎么知道 3 是最少的?靠动态规划(Dynamic Programming):把「A 的前 i 个字符」和「B 的前 j 个字符」的距离记成一张表里的格子 dp[i][j],每个格子只依赖左边、上边、左上三个邻居,取三者最小值,再从对应操作上加 1。填满整张表,右下角就是答案,复杂度是 O(m×n)。

打个生活化的比方:这就像整理两排书架,你每次只允许抽出一本、塞进一本、或者把手里的书换掉一本。编辑距离算的是「最少动手几次能让两排书一致」。它不关心你换的是哪本、值不值钱,只数动作次数。

和相邻概念的区别

度量允许的操作前提看的是什么
编辑距离(Levenshtein)插入、删除、替换无字符层面的字面差异
汉明距离(Hamming Distance)只能替换两个串必须等长有多少位对不上
最长公共子序列(LCS)只做删除/保留无最多能留下多少共同字符
向量AI 词典:余弦相似度">余弦相似度(Cosine Similarity)——需要先转向量语义像不像

关键差别在最后一行:编辑距离是纯字面的。苹果手机 和 iPhone 在编辑距离眼里毫无关系,但语义模型会说它们很像。反过来,我今天很开心 和 我今天不开心 编辑距离只差 1,语义却几乎相反。

为什么它到今天还在天天出现

因为大量真实任务要的恰恰是「字面差多少」,而不是「意思像不像」:

  • 拼写纠错与搜索建议:输入 recieve,系统扫词表找编辑距离最小的 receive,这就是「你是不是想找」的底层逻辑之一。
  • 语音识别与 OCR 评测:词错误率(WER)、字符错误率(CER)本质就是编辑距离除以总长度。做识别模型的团队,天天在看这个数字。
  • 模糊匹配与数据清洗:两份客户名单里 张三 和 张 三、Beijing 和 Beijng 要不要合并,编辑距离是最省事的判据。
  • 生物信息学:DNA 序列比对的思想源头之一就是这个距离。

用之前要知道的坑

它不区分字符的重要性,长度差异会被放大——短串之间差一个字符,相对误差可能很高,所以有时会用编辑距离除以较长串长度做归一化。它没有语义,也处理不了同音字和语序。性能上,长文本两两比较是平方级开销,实践中常用长度差剪枝、只算对角线附近的带状区域、或者先做分词和索引过滤来降复杂度。

选它还是选语义向量,判断标准很简单:你要解决的是「写法不一致」,还是「说法不一致」。前者用编辑距离,便宜、可解释、可复现;后者才需要上模型。至于各工具库的具体接口和参数,以官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。