当前位置:首页 科普知识 编辑距离

编辑距离

发布时间:2023-09-15 08:55:04

编辑距离

距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。距离可以用在自然语言处理中,例如拼写检查可以根据一个拼错的字和其他正确的字的距离,判断哪一个(或哪几个)是比较可能的字。DNA也可以视为用A、C、G和T组成的字符串,因此距离也用在生物信息学中,判断二个DNA的类似程度。Unix 下的 diff 及 patch 即是利用距离来进行文本对比的例子。

距离简介

距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。距离可以用在自然语言处理中,例如拼写检查可以根据一个拼错的字和其他正确的字的距离,判断哪一个(或哪几个)是比较可能的字。DNA也可以视为用A、C、G和T组成的字符串,因此距离也用在生物信息学中,判断二个DNA的类似程度。Unix下的diff及patch即是利用距离来进行文本对比的例子。

距离有几种不同的定义,差异在可以对字符串进行的处理。

在莱文斯坦距离中,可以删除、加入、取代字符串中的任何一个字元,也是较常用的距离定义,常常提到距离时,指的就是莱文斯坦距离。

也存在其他距离的定义方式,例如 Damerau-Levenshtein 距离是一种莱文斯坦距离的变种,但允许以单一操作交换相邻的两个字符(称为字符转置),如 AB→BA 的距离是 1(交换)而非 2(先删除再插入、或者两次替换)。

LCS(最长公共子序列)距离只允许删除、加入字元。

Jaro 距离只允许字符转置。

汉明距离只允许取代字元。

距离莱文斯坦距离

莱文斯坦距离,又称Levenshtein距离,是距离的一种。指两个字串之间,由一个转成另一个所需的最少操作次数。允许的操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

例如将kitten一字转成sitting:

    sitten (k→s)

    sittin (e→i)

    sitting (→g)

俄罗斯科学家弗拉基米尔·莱文斯坦在1965年提出这个概念。

距离例子

kitten和sitting的莱文斯坦距离是3。将kitten变为sitting的最小处理方式如下:

    kitten →sitten(将k改为s)

    sitten → sittin(将e改为i)

    sittin → sitting(最后加入g)

若是考虑LCS距离(只考虑加入及删除),LCS距离是5:

    删除位在第1个字的k

    在第1个字之前加入s

    删除位在第4个字的e

    在第4个字之前加入i

    在第6个字之后加入g

温馨提示:
本文【编辑距离】由作者 百科大全 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6