斯坦福大学-自然语言处理入门 笔记 第五课 拼写纠正与噪音通道(Noisy Channel)

一、拼写纠正任务

1、拼写任务

  • 发现拼写错误
  • 纠正拼写错误
    • 自动纠正
    • 给出纠正建议(一个词)
    • 给出纠正建议(一些词)

2、拼写错误的类型

  • 拼写出来的不是单词(non-word spelling error):graffe→giraffe
  • 拼写出来的是另一个单词
    • 排字(Typographical )错误:three→there
    • 认知错误(同音异形):too→two

3、拼写出来的不是单词的错误(non-word spelling error)

  • 错误发现:预先有一个字典,任何不在字典中的单词就是错误,字典越大越好
  • 错误纠正:
    • 生成修正可选项:和错误相似的实际单词
    • 选择最好的那个
      • 最短加权编辑距离
      • 最高噪音通道(noisy channel)概率

4、拼写出来是另一个单词(real word spelling error)

  • 对每一个单词,w,生成一个候选集(candidate set)
    • 找到发音相似的候选词
    • 找到拼写相似的候选词
    • 把w也放在候选集中
  • 选择最好的候选词
    • 噪音通道
    • 分类

二、拼写的噪音通道(noisy channel)模型

1、噪音通道模型

  • 初始想法:一开始初始单词(original word)经过噪音通道(noisy channel)会生成噪音单词(noisy word)。我们通过对噪音单词的解码得到猜测的单词(guessed word)。
    在这里插入图片描述
  • 噪音通道模型:当我们拿到一个拼错的单词x的时候,我们可以利用下面的公式得到正确的w。
    在这里插入图片描述
  • P(w)表示语言模型
  • P(x|w)表示通道模型(channel model)或者是错误模型(error model)

2、从拼写出来的不是单词的错误(non-word spelling error)开始

  • 错误是:acress
  • 候选词生成(candidate generation)
    • 相似拼写的单词:找到最小的编辑距离
    • 相似发音的单词:找到发音的最小的编辑距离
    • 这里选取相似拼写来举例子
  • 编辑距离:我们采取Damerau-Levenshtein编辑距离
    • 对两个字符串而言,之间的基本编辑操作是:插入、删除、替换和两个相邻的字母的交换
    • 以acress来举例子来看编辑操作
      在这里插入图片描述
    • 80%的错误都是编辑距离为1的错误
    • 所有的错误都是编辑距离为1或者2的错误
    • 同时也包含连字符-和空格的插入
      • thisday→ this day
      • inlaw→in-law
  • 语言模型
    • 包含任何我们之前学习的语言模型算法,包括一元、二元、三元以及stupid backoff(针对web规模的拼写纠正)
    • 以acress的候选集举例,来看他们的语言模型
      在这里插入图片描述
  • 通道模型概率
    • 又称错误(error model)模型概率,编辑(edit)概率
    • 定义:
      • 拼错的单词X=X1,X2,X3…Xm
      • 纠正的单词w=w1,w2,w3…wm
      • P(X|w)表示编辑概率
    • 计算:混淆矩阵
      • 计算公式
        在这里插入图片描述
        其中,在这里插入图片描述
        对这四种编辑公式,我们分别构造混淆矩阵,一共是四个混淆矩阵,形如下图
        在这里插入图片描述
    • 以acress举例,通道模型计算如下
      在这里插入图片描述
  • 以acress举例,噪音通道概率计算如下:
    在这里插入图片描述
  • 改进:使用二元语言模型
    • 在大部分的情境下,二元模型会更准确
    • 例子如下:
      在这里插入图片描述

3、评估

我们可以利用一些拼写错误测试集进行评估
在这里插入图片描述

三、拼写出来是另一个单词的错误纠正(real-word spelling correction)

1、解决方案

  • 对句子中的每一个单词
    • 生成候选集,包含(单词本身、同音异形词,和原来的单词之差一个字母编辑的单词)
  • 选择最好的候选(用噪音通道,或者分类)

2、公式描述

  • 给定一个句子包含一系列单词w1,w2,w3,…,wn
  • 对每个单词都生成一系列的候选词(candidate)
    在这里插入图片描述
  • 选择一系列的单词W使得P(W)最大
  • 图解如下:
    在这里插入图片描述

3、化简版:每个句子一个错误

  • 假设句子里面只有一个单词出现了错误,只对一个单词进行纠正
    在这里插入图片描述
  • 分别计算纠正过的概率,选择概率最大的那个

4、如何确定概率

  • 语言模型:一元、二元、等等
  • 通道模型:和非单词拼写错误(non-word spelling correction)一样,除此之外加上没有发生错误的概率P(w|w)
    • P(w|w)的计算
      在这里插入图片描述
  • 一个计算的例子
    在这里插入图片描述

四、一些改进

1、人机交互的拼写问题

  • 如果对纠正很有自信:自动纠正
  • 次之,给出最好的纠正
  • 次之,给出纠正列表
  • 次之,示意出现了错误

2、噪音通道的改进

  • 不应该直接将先验和错误的模型相乘,这样的理论基础是独立假设。但是实际上先验概率放在这里是不合适的。
  • 所以,取而代之的公式应该是这样:
    在这里插入图片描述
  • 我们可以从一个发展测试集(development test set)来学习lamdba

3、语音(phonetic)错误模型

在这里插入图片描述

4、对通道模型的提升

在这里插入图片描述
在这里插入图片描述

5、基于分类方法的拼写出来是另一个单词(real word spelling error)的错误纠正

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kunpen8944/article/details/83066460