域名和网站建站公司链接,做公司网站 国外系统,甘肃省住房建设厅网站证书查询,如何查询网站备案信息引言
在文本处理和自然语言处理#xff08;NLP#xff09;中#xff0c;衡量两个字符串相似度是一项重要任务。Levenshtein 距离#xff08;也称编辑距离#xff09;是一种常见的算法#xff0c;用于计算将一个字符串转换为另一个字符串所需的最少编辑操作次数。这些操作…引言
在文本处理和自然语言处理NLP中衡量两个字符串相似度是一项重要任务。Levenshtein 距离也称编辑距离是一种常见的算法用于计算将一个字符串转换为另一个字符串所需的最少编辑操作次数。这些操作包括插入、删除和替换。
本文将详细介绍 Levenshtein 距离的原理并通过 Python 代码示例展示其实际应用。 什么是 Levenshtein 距离
Levenshtein 距离定义为两个字符串之间的最小编辑操作次数使得一个字符串可以变为另一个字符串。允许的三种操作为
插入一个字符删除一个字符替换一个字符。
例如
kitten 和 sitting 的 Levenshtein 距离为 3因为可以通过以下三步完成转换 替换 k 为 s替换 e 为 i在末尾插入 g。 Levenshtein 距离的计算原理
Levenshtein 距离使用动态规划Dynamic Programming实现其核心思想是将问题分解为多个子问题通过递归公式逐步计算解决。
假设字符串 AA 长度为 mm字符串 BB 长度为 nn则动态规划表 dp[i][j]dp[i][j] 表示将 A[0:i]A[0:i] 转换为 B[0:j]B[0:j] 的最小编辑距离。 Levenshtein 距离的 Python 实现
我们用一个简单的 Python 函数实现 Levenshtein 距离
def levenshtein_distance(a, b):m, n len(a), len(b)# 初始化动态规划表dp [[0] * (n 1) for _ in range(m 1)]# 填充边界条件for i in range(m 1):dp[i][0] ifor j in range(n 1):dp[0][j] j# 计算动态规划表for i in range(1, m 1):for j in range(1, n 1):cost 0 if a[i - 1] b[j - 1] else 1dp[i][j] min(dp[i - 1][j] 1, # 删除dp[i][j - 1] 1, # 插入dp[i - 1][j - 1] cost # 替换)return dp[m][n]# 示例
a kitten
b sitting
distance levenshtein_distance(a, b)
print(f{a} 和 {b} 的 Levenshtein 距离为: {distance})运行结果
kitten 和 sitting 的 Levenshtein 距离为: 3Levenshtein 距离的应用场景 拼写纠错 Levenshtein 距离可用于计算用户输入与正确单词之间的相似度从而推荐正确的单词。例如输入 recieve通过计算与候选词的距离可以推荐 receive。 模糊匹配 在数据库中模糊查找类似记录比如搜索 Jon 时匹配 John。使用 Python 的 TheFuzz 库可以轻松实现。 文本去重 用于检测相似文本并去重例如处理社交媒体内容或产品描述。 DNA 序列比对 Levenshtein 距离在生物信息学中也有重要应用用于比较 DNA 或 RNA 序列的相似性。 使用 Python 库快速计算 Levenshtein 距离
除了手动实现外我们还可以使用开源库 Levenshtein 或 TheFuzz 快速计算。
安装
pip install python-Levenshtein示例代码
import Levenshteina kitten
b sitting
distance Levenshtein.distance(a, b)
print(f{a} 和 {b} 的 Levenshtein 距离为: {distance})结果
kitten 和 sitting 的 Levenshtein 距离为: 3总结
Levenshtein 距离是一种高效且实用的字符串相似度度量方法。通过动态规划算法实现它在拼写纠错、模糊匹配和文本去重等领域得到了广泛应用。无论是从学习算法原理还是通过现有库快速应用Levenshtein 距离都能为开发者带来极大帮助。 其它
多个字符串比较的例子 比较字符串i love you 和love he
我们利用动态规划的方式逐步计算字符串 i love you 和 love he 的 Levenshtein 距离以下是详细的过程。 1. 初始化动态规划表
假设
AiloveyouA i love you 长度为 10包括空格BloveheB love he 长度为 8包括空格
动态规划表 dpdp 大小为 (101)×(81)11×9(101) \times (81) 11 \times 9。 初始状态如下
第一行填充列索引从空字符串到 B 的编辑距离第一列填充行索引从空字符串到 A 的编辑距离
lovehe01234567i12l3o4v5e67y8o9u10 2. 填充动态规划表
根据递归公式
dp[i][j]min{dp[i−1][j]1,删除dp[i][j−1]1,插入dp[i−1][j−1]cost,替换dp[i][j] \min \begin{cases} dp[i-1][j] 1, \text{删除} \\ dp[i][j-1] 1, \text{插入} \\ dp[i-1][j-1] \text{cost}, \text{替换} \end{cases}
其中
如果 A[i−1]B[j−1]A[i-1] B[j-1]则 cost0\text{cost} 0否则 cost1\text{cost} 1。
填充过程 i1,j1i 1, j 1比较 i 和 l 插入dp[1][0]12dp[1][0] 1 2删除dp[0][1]12dp[0][1] 1 2替换dp[0][0]11dp[0][0] 1 1 所以 dp[1][1]1dp[1][1] 1。 i1,j2i 1, j 2比较 i 和 o 插入dp[1][1]12dp[1][1] 1 2删除dp[0][2]13dp[0][2] 1 3替换dp[0][1]12dp[0][1] 1 2 所以 dp[1][2]2dp[1][2] 2。
... 依此类推。
最终动态规划表填充完成后如下
lovehe01234567i1123456722234456l32334556o43234566v54323456e6543234576543234y87654334o98765444u109876555 3. 结果
表格右下角的值 dp[10][8]5dp[10][8] 5表示将 i love you 转换为 love he 需要 5次编辑操作。 4. 操作过程
通过回溯动态规划表我们可以得到具体的编辑操作
删除 i从 i love you 中删除第一个字符替换 y 为 h替换 o 为 e删除 去掉额外的空格删除 u
最终得到字符串 love he 。
文章转载自: http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn http://www.morning.hxpff.cn.gov.cn.hxpff.cn http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn http://www.morning.nuejun.com.gov.cn.nuejun.com http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.dhrbj.cn.gov.cn.dhrbj.cn http://www.morning.hjwkq.cn.gov.cn.hjwkq.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.fygbq.cn.gov.cn.fygbq.cn http://www.morning.httzf.cn.gov.cn.httzf.cn http://www.morning.mnwmj.cn.gov.cn.mnwmj.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn http://www.morning.mhcft.cn.gov.cn.mhcft.cn http://www.morning.jxhlx.cn.gov.cn.jxhlx.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn http://www.morning.xykst.cn.gov.cn.xykst.cn http://www.morning.lyrgp.cn.gov.cn.lyrgp.cn http://www.morning.wqkfm.cn.gov.cn.wqkfm.cn http://www.morning.zcncb.cn.gov.cn.zcncb.cn http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.pqwhk.cn.gov.cn.pqwhk.cn http://www.morning.rqhdt.cn.gov.cn.rqhdt.cn http://www.morning.nwljj.cn.gov.cn.nwljj.cn http://www.morning.ckfqt.cn.gov.cn.ckfqt.cn http://www.morning.skksz.cn.gov.cn.skksz.cn http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.ptmch.com.gov.cn.ptmch.com http://www.morning.qllcm.cn.gov.cn.qllcm.cn http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn http://www.morning.lgkbn.cn.gov.cn.lgkbn.cn http://www.morning.tkchg.cn.gov.cn.tkchg.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.jqhrk.cn.gov.cn.jqhrk.cn http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn http://www.morning.wxgd.cn.gov.cn.wxgd.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.krtcjc.cn.gov.cn.krtcjc.cn http://www.morning.jsxrm.cn.gov.cn.jsxrm.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.kdrly.cn.gov.cn.kdrly.cn http://www.morning.kwyq.cn.gov.cn.kwyq.cn http://www.morning.tssmk.cn.gov.cn.tssmk.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.qgkcs.cn.gov.cn.qgkcs.cn http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn http://www.morning.fzwf.cn.gov.cn.fzwf.cn http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn http://www.morning.yaqi6.com.gov.cn.yaqi6.com http://www.morning.cnqff.cn.gov.cn.cnqff.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.fjshyc.com.gov.cn.fjshyc.com http://www.morning.bppml.cn.gov.cn.bppml.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.tkcz.cn.gov.cn.tkcz.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.pkwwq.cn.gov.cn.pkwwq.cn http://www.morning.pfgln.cn.gov.cn.pfgln.cn http://www.morning.rzscb.cn.gov.cn.rzscb.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.hcrxn.cn.gov.cn.hcrxn.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.kzcfp.cn.gov.cn.kzcfp.cn http://www.morning.lbjdx.cn.gov.cn.lbjdx.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.ccyns.cn.gov.cn.ccyns.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.zrgsg.cn.gov.cn.zrgsg.cn http://www.morning.fnfhs.cn.gov.cn.fnfhs.cn http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn http://www.morning.rykgh.cn.gov.cn.rykgh.cn