斯坦福大学自然语言处理第三课“最小编辑距离(Minimum Edit Distance)”

2023-11-18

一、课程介绍

斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程,由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课:
https://class.coursera.org/nlp/

以下是本课程的学习笔记,以课程PPT/PDF为主,其他参考资料为辅,融入个人拓展、注解,抛砖引玉,欢迎大家在“我爱公开课”上一起探讨学习。

课件汇总下载地址:斯坦福大学自然语言处理公开课课件汇总

二、最小编辑距离

1)定义

编辑距离(Minimum Edit Distance,MED),又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需要的最少编辑操作次数。允许的编辑操作包括:将一个字符替换成另一个字符(substitution,s),插入一个字符(insert,i)或者删除一个字符(delete,d),如下图所示:

在大学算法设计相关课程上,想必大家都已经学习过使用动态规划算法解最小编辑距离,形式化定义如下:

最终求得D(n,m)即为字符串X[0...n]与Y[0...m]之间的最小编辑距离。

2)应用

最小编辑距离通常作为一种相似度计算函数被用于多种实际应用中,详细如下: (特别的,对于中文自然语言处理,一般以词为基本处理单元)

  • 拼写纠错(Spell Correction):又拼写检查(Spell Checker),将每个词与词典中的词条比较,英文单词往往需要做词干提取等规范化处理,如果一个词在词典中不存在,就被认为是一个错误,然后试图提示N个最可能要输入的词——拼写建议。常用的提示单词的算法就是列出词典中与原词具有最小编辑距离的词条。

这里肯定有人有疑问:对每个不在词典中的词(假如长度为len)都与词典中的词条计算最小编辑距离,时间复杂度是不是太高了?的确,所以一般需要加一些剪枝策略,如:

  1. 因为一般拼写检查应用只需要给出Top-N的纠正建议即可(N一般取10),那么我们可以从词典中按照长度依次为len、len-1、len+1、len-2、len-3、...的词条比较;
  2. 限定拼写建议词条与当前词条的最小编辑距离不能大于某个阈值;
  3. 如果最小编辑距离为1的候选词条超过N后,终止处理;
  4. 缓存常见的拼写错误和建议,提高性能。
  • DNA分析:基因学的一个主要主题就是比较 DNA 序列并尝试找出两个序列的公共部分。如果两个 DNA 序列有类似的公共子序列,那么这些两个序列很可能是同源的。在比对两个序列时,不仅要考虑完全匹配的字符,还要考虑一个序列中的空格或间隙(或者,相反地,要考虑另一个序列中的插入部分)和不匹配,这两个方面都可能意味着突变(mutation)。在序列比对中,需要找到最优的比对(最优比对大致是指要将匹配的数量最大化,将空格和不匹配的数量最小化)。如果要更正式些,可以确定一个分数,为匹配的字符添加分数、为空格和不匹配的字符减去分数。

全局序列比对尝试找到两个完整的序列 S1和 S2之间的最佳比对。以下面两个 DNA 序列为例:

S1GCCCTAGCG

S2GCGCAATG

如果为每个匹配字符一分,一个空格扣两分,一个不匹配字符扣一分,那么下面的比对就是全局最优比对:

S1'GCCCTAGCG

S2'GCGC-AATG

连字符(-)代表空格。在 S2'中有五个匹配字符,一个空格(或者反过来说,在 S1'中有一个插入项),有三个不匹配字符。这样得到的分数是 (5 * 1) + (1 * -2) + (3 * -1) = 0,这是能够实现的最佳结果。

使用局部序列比对,不必对两个完整的序列进行比对,可以在每个序列中使用某些部分来获得最大得分。使用同样的序列 S1和 S2,以及同样的得分方案,可以得到以下局部最优比对S1''和 S2''

S1      = GCCCTAGCG

S1''=                 GCG

S2''=                 GCG

S2      =             GCGCAATG

这个局部比对的得分是 (3 * 1) + (0 * -2) + (0 * -1) = 3。

  • 命名实体抽取(Named Entity Extraction):由于实体的命名往往没有规律,如品牌名,且可能存在多种变形、拼写形式,如“IBM”和“IBM Inc.”,这样导致基于词典完全匹配的命名实体识别方法召回率较低,为此,我们可以使用编辑距离由完全匹配泛化到模糊匹配,先抽取实体名候选词。

具体的,可以将候选文本串与词典中的每个实体名进行编辑距离计算,当发现文本中的某一字符串的编辑距离值小于给定阈值时,将其作为实体名候选词;获取实体名候选词后,根据所处上下文使用启发式规则或者分类的方法判定候选词是否的确为实体名。

  • 实体共指(Entity Coreference):通过计算任意两个实体名之间的最小编辑距离判定是否存在共指关系?如“IBM”和“IBM Inc.”, "Stanford President John Hennessy "和"Stanford University President John Hennessy"。
  • 机器翻译(Machine Translation):
  1. 识别平行网页对:由于平行网页通常有相同或类似的界面结构,因此平行网页在HTML结构上应该有很大近似度。首先将网页的HTML标签抽取出来,连接成一个字符串,然后用最小编辑距离考察两个字符串的近似度。实际中,此策略一般与文档长度比例、句对齐翻译模型等方法结合使用,以识别最终的平行网页对。
  2. 自动评测:首先存储机器翻译原文和不同质量级别的多个参考译文,评测时把自动翻译的译文对应到与其编辑距离最小的参考译文上,间接估算自动译文的质量,如下图所示:
  • 字符串核函数(String Kernel):最小编辑距离作为字符串之间的相似度计算函数,用作核函数,集成在SVM中使用。

3)变形

在基本的编辑距离基础上,结合实际应用,往往需要做一些变形或改进,如某些拼写错误相对其他更容易发生,同义词替换、虚词或修饰成分被删除(或插入)应该得到较小的惩罚,等等。

改进后的最小编辑距离公式如下所示:

三、参考资料

  1. Lecture Slides: Minimum Edit Distance
  2. http://en.wikipedia.org
  3. 双语平行网页挖掘系统的设计与实现 
  4. 机器翻译系统评测规范
  5. Improved-Edit-Distance Kernel for Chinese Relation Extraction

转自 http://52opencourse.com/

 

转载于:https://www.cnblogs.com/renly/archive/2013/01/06/2848228.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

斯坦福大学自然语言处理第三课“最小编辑距离(Minimum Edit Distance)” 的相关文章

  • Python实现GWO智能灰狼优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 视频讲解 如需数据 代码 文档 视频讲解可以直接到文章最后获取 1 项目背景 灰狼优化算法 GWO 由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化
  • HLS图像处理系列——肤色检测

    本博文采用Xilinx HLS 2014 4工具 实现一个肤色检测的模块 其中 本文重点是构建HLS图像处理函数 新建HLS工程的步骤 本博文不再详述 本工程新建之后 只添加了五个文件 如下图所示 其中 top cpp中的主函数最终会综合生
  • 全球公有云一哥AWS十年宕机故障大全

    任何一个公有云供应商 在发展的历史长河中 都遭遇了这样那样的宕机 故障 或因人为因素 或因雷电太凶 或因机房停电 或因光缆被挖 或因代码错输 这些问题的出现与解决 正好也是公有云服务不断优化与提升的过程 不过 作为全球公有云的一哥 从可以查
  • Windows10下安装MXNet-走过的那些坑

    一 一开始看到各种安装方法 简单的 用pip安装mxnet的python CPU版本和GPU版本 windows还是linux python2还是python3 安装命令都一样 用pip安装mxnet的python CPU版本 pip in
  • 数据库CPU满载如何处理

    当数据库CPU满载时 我们首先要做的是让CPU降下来 优先保证系统的可用性 什么情况会导致数据库CPU飙升呢 QPS过高 高并发 也就是数据库承载的流量过大 慢SQL 少量或大量慢SQL占用CPU资源 拖垮了数据库 这类慢sql通常表现为
  • 第3章 ChatGPT简介

    3 1ChatGPT厚积薄发 最近 工智能公司OpenAI推出的ChatGPT风靡全球 其上线仅两个月 注册用户破亿 ChatGPT包含丰富的知识 不仅能更好地理解人类的问题和指令 流畅进行多轮对话 还在越来越多领域显示出解决各种通用问题和
  • DNS server列表整理

    收集DNS服务器的意义不在于能越过GFW 而是在当前DNS污染越发严整的环境下 能够找到一个比较好的DNS server以便提供优质的github和onedrive 或microsoft相关软件 访问体验 这一篇会持续更新 并且根据日常体验
  • 详解通往Web3的护照:去中心化身份DID

    介绍 互联网的创建没有为人们提供本地身份验证层 由此 数字身份问题被纳入网站和应用程序范畴 这种方法可能适用于互联网的早期阶段 但现在线上有数十亿人 但缺点正变得越来越明显 用户名和密码仍占主导地位 尽管这被反复证明是不安全的模型 普通人必
  • 安卓各个平台适配

    标题安卓各个平台适配 一 安卓6 0适配 1 targetSdkVersion Android 6 0 API 级别 23 2 相关API 3 简单的例子 4 封装库 二 安卓7 0适配 1 使用FileProvider 1 manifes
  • httpip工具实践

    应用场景 jenkins在发布完成后需要请求一个接口验证数据 如果是正确的返回相应数据 采用传统的curl没有色差输出 不方便阅读 使用http命令结果会有色彩输出 方便阅读 安装方法 官网地址https httpie org CentOS
  • Docker在云平台上的最佳实践:基于容器技术的DevOps探索

    12月9日 在云栖计算之旅线下沙龙上 阿里云容器服务团队的高级研发工程师秦妤嘉分享了 基于容器技术的DevOps探索 首先介绍了DevOps和CD 接着分析了Docker如何打破传统CD壁垒 最后讲解了怎样从零开始搭建一个持续交付系统 视频
  • 华为OD机试真题- 对称字符串【2023Q2】【JAVA、Python、C++】

    题目描述 对称就是最大的美学 现有一道关于对称字符串的美学 已知 第 1 个字符串 R 第 2 个字符串 BR 第 3 个字符串 RBBR 第 4 个字符串 BRRBRBBR 第 5 个字符串 RBBRBRRBBRRBRBBR 相信你已经发
  • 《高效能程序员的修炼》之译者序

    出版社的冀康一开始来找我谈翻译这本书的时候 我的第一反应是 这兄弟真是不知道我现在有多忙 我每天要处理200多封邮件 在资源有限的情况下经常要同时带6 7个项目 而且每个项目的交付计划都很紧 压力很大 每天起码工作12个小时 有时候还要熬夜
  • python连续输入多行_python-遍历Pandas DataFrame并插入行的最快方法

    我正在构建一个工具 以帮助您每周自动执行来自多个实验室设置的数据审查 每天都会生成一个制表符分隔的文本文件 每行代表每2秒获取的数据 因此共有43200行和许多列 每个文件为75mb 我正在使用pandas readcsv加载七个文本文件
  • Python基础知识笔试

    Python基础知识笔试 单选题 2 5分 20题 1 下列哪个表达式在Python中是非法的 B A x y z 1 B x y z 1 C x y y x D x y 2 python my py v1 v2 命令运行脚本 通过 fro
  • JavaScript 基础

    JavaScript 基础 JavaScript 是一门编程语言 可为网站添加交互功能 例如 游戏 动态样式 动画以及在按下按钮或收到表单数据时做出的响应等 本文介绍了 JavaScript 的精彩之处和主要用途 JavaScript 到底
  • Python中的列表和元组

    Python中的列表和元组 1 列表和元组 2 Python 中的列表和元组都支持负数索引 3 列表和元组都支持切片操作 4 列表和元组都可以随意嵌套 5 两者也可以通过 list 和 tuple 函数相互转换 6 列表和元组常用的内置函数
  • easyexcel和poi对比_POI 和 EasyExcel

    POI 和 easyExcel 讲解 转自狂神老师 仅作为个人笔记使用 一 POI 常用进程 1 将用户信息导出为excel表格 导出数据 2 将Excel表中的信息录入到网站数据库 习题上传 开发中经常会设计到excel的处理 如导出Ex
  • 五、深入理解JDK1.7中HashMap哈希冲突解决方案

    导读 前面文章一 深入理解 Java集合初篇 中我们对Java的集合体系进行一个简单的分析介绍 上两篇文章二 Jdk1 7和1 8中HashMap数据结构及源码分析 三 JDK1 7和1 8HashMap数据结构及源码分析 续 中我们分别对
  • Windows+VS2019用vcpkg编译colmap以及用Cmake编译colmap源码

    Windows VS2019用vcpkg编译colmap以及用Cmake编译colmap源码 Window下官方建议用vcpkg安装 这里我已经安装好了VS2019以及cuda11 7 1 安装vcpkg git clone https g

随机推荐