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

一、定义最小编辑距离

1、最小编辑距离的用途

  • 拼写矫正
    • 用户输入graffe,那么哪一个是最接近的?graf?graft?grail?还是giraffe
  • 计算生物学
    • 用来校准核酸序列
      在这里插入图片描述
    • 校准(alignment)结果
      在这里插入图片描述
  • 同时也用于机器翻译,信息抽取等领域

2、编辑距离

两个字符串间最小的编辑距离就是将其中一个变成另外一个时需要的最小的编辑操作次数(操作包含插入、删除、替代)。

举例而言,当两个字符串是intention和execution的时候,操作如下:其中d表示删除操作,s表示替代操作,i表示插入操作

在这里插入图片描述

  • 当每个操作的代价为1时,两者的距离为5
  • 当替代操作代价为2,其他保持不变时,两者的距离为8(Levenshtein)

在计算生物学中的例子,原始序列:
在这里插入图片描述
校准序列:(要么用字母校准,要么用空缺校准)
在这里插入图片描述

NLP的编辑距离还可以用来评价机器翻译(machine translation)和演讲识别(speech recognition)
这里插入图片描述](https://img-blog.csdn.net/20181013193402363?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2t1bnBlbjg5NDQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
还可以用于命名实体抽取和实体指代。
在这里插入图片描述

3、如何找到最小编辑距离

从最初的字符串到最后的字符串的路径(一系列的编辑操作)

  • 原始状态:需要转换的单词
  • 操作:插入、删除、替代
  • 目标状态:我们想要得到的单词
  • 路径代价:我们需要最小化的目标(操作的次数)
    从最初的字符串到最后的字符串的路径其实是很多的,我们不需要关注所有,只需要关注最短的路程。

4、定义最小编辑距离

  • 对于两个字符串
    • X的长度是n
    • Y的长度是m
  • 我们定义D(i,j)
    • X[1…i]和Y[1…j]之间的距离
    • i.e X的前i个字符和Y的前j个字符
  • X和Y的编辑距离是D(n,m)

二、如何计算最小编辑距离

1、动态规划算法

  • 对D(n,m)进行列表式计算(tabular computation),通过整合子问题的解决方案来解决问题
  • 自下而上
    • 对很小的i,j计算D(i,j)
    • 基于之前计算的比较小的值来计算更大的D(i,j)
    • i.e 对i(0<i<n)和j(0<j<m)来计算D(i,j)

2、定义最小编辑距离(Levenshtein)

在这里插入图片描述

  • 例子:
    在这里插入图片描述

    三、计算对应的回溯(backtrace for computing aligents)

    • 单纯编辑距离的计算是不够的
      • 我们需要得到两个字符串中相互对应的字符
    • 我们解决这个方法的手段是利用指针进行回溯
    • 当我们进入到一个格子(如上图的表格)的时候,我们需要记得前一个格子(利用指针)
    • 当我们到达右上角的时候
      • 就从右上角开始回溯,来找到对应的字符
        在这里插入图片描述
        包含指针之后,整体算法调整如下:
        在这里插入图片描述
    • 算法复杂度
      • 时间复杂度:O(nm)
      • 空间复杂度:O(nm)
      • 回溯:O(n+m)

    四、加权编辑距离

    1、 为什么要对计算进行加权?

    • 拼写错误:有些单词更容易拼错
    • 生物:某些删除和插入更加容易发生

    2、 加权编辑距离算法

在这里插入图片描述

五、计算生物学中的最小编辑距离

1、进行序列对应的原因

  • 比较不同的生物的基因和部位
  • 组合片段获得DNA
  • 比较以找出基因突变

2、NLP和计算生物学的不同

  • NLP讨论的是距离的最小化和权重
  • 计算生物学讨论的是最大化的相似度和得分(socre)

3、Needleman-Wunch 算法在这里插入图片描述

4、基础算法的变动

  • 在基因片段的开始和结束对不上是很有可能的,因此不应该对这两种情况进行惩罚。
    在这里插入图片描述

    • 改变一:初始化
      在这里插入图片描述
    • 改变二:termination
      在这里插入图片描述
  • 对应位置问题(local alignment problem):两个字符串可能是在他们的中部才有相似的部分。比如
    X=aaaa

    • 变化一:初始化
      在这里插入图片描述
    • 变化二:迭代部分
      在这里插入图片描述
    • 变化三:termination
      如果要找最佳的位置对应(local alignment),找到Fopt(公式如下)并回溯就可以了
      在这里插入图片描述
      如果要找得分大于t的位置对应(local alignment),就找到满足F(i,j)>t的F(i,j)然后进行回溯。这里存在的一个问题是,可能会出现重叠的位置对应(local alignment),如下图。
      在这里插入图片描述
      举例子而言:
      在这里插入图片描述
      可以找到两个最大的位置对应(local alignment),一个是:
      在这里插入图片描述
      还有一个是:
      在这里插入图片描述
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值