哈尔滨工业大学计算机学院-自然语言处理-课程总结

摘要:
这篇博客只详细介绍了噪声信道模型、n元语法和维特比算法。
1. 前言
  • 自然语言处理是关毅老师的研究生课程。
  • 本博客仅对噪声信道模型、n元文法(N-gram语言模型)、维特比算法详细介绍。
  • 其他的重点知识还包括概率上文无关文法(PCFG)、HMM形式化定义、词网格分词等等,比较简单,不做赘述。
2. 噪声信道模型

2.1 噪声信道模型原理

  • 噪声信道模型的示意图如下所示:
    哈尔滨工业大学计算机学院-自然语言处理-课程总结第1张
  • 该模型的目标是通过有噪声的输出信号试图恢复输入信号,依据贝叶斯公式,其计算公式如下所示:

[I = arg max _ { I } P ( I | O ) = arg max _ { I } frac { P ( O | I ) P ( I ) } { P ( O ) } = arg max _ { I } P ( O | I ) P ( I ) ]

  • (I)指输入信号,(O)指输出信号。
  • 噪声模型的优点是具有普适性,通过修改噪声信道的定义,可以将很多常见的应用纳入到这一模型的框架之中,相关介绍见2.1。

2.2 噪声信道模型的应用

2.2.1 语音识别

  • 语音识别的目的是通过声学信号,找到与其对应的置信度最大的语言文本。
  • 计算公式与上文相同,此时的(I)为语言文本,(O)为声学信号。
  • 代码实现过程中,有一个信息源以概率(P(I))生成语言文本,噪声信道以概率分布(P(O|I))将语言文本转换为声学信号。
  • 模型通过贝叶斯公式对后验概率(P(I|O))进行计算。

2.2.2 其他应用

  • 手写汉字识别
    • 文本 -> 书写 -> 图像
  • 文本校错
    • 文本 -> 输入编辑 -> 带有错误的文本
  • 音字转换
    • 文本 -> 字音转换 -> 拼音编码
  • 词性标注
    • 词性标注序列 -> 词性词串替换 -> 词串
3. N-gram语言模型

3.1 N-gram语言模型原理

  • N-gram语言模型基于马尔可夫假设,即下一个词的出现仅仅依赖于他前面的N个词,公式如下:

[P ( S ) = P left( w _ { 1 } w _ { 2 } dots w _ { n } ight) = p left( w _ { 1 } ight) p left( w _ { 2 } | w _ { 1 } ight) p left( w _ { 3 } | w _ { 1 } w _ { 2 } ight) ldots p left( w _ { n } | w _ { 1 } w _ { 2 } dots w _ { n - 1 } ight) ]

  • 实践中,往往采用最大似然估计的方式进行计算:

[P left( w _ { n } | w _ { 1 } w _ { 2 } dots w _ { n - 1 } ight) = frac { C left( w _ { 1 } w _ { 2 } ldots w _ { n } ight) } { C left( w _ { 1 } w _ { 2 } dots w _ { n - 1 } ight) } ]

  • 在训练语料库中统计获得字串的频度信息。

  • n越大: 对下一个词出现的约束性信息更多,更大的辨别力

  • n越小: 在训练语料库中出现的次数更多,更可靠的统计结果,更高的可靠性

3.2 平滑处理

  • 如果不进行平滑处理,会面临数据稀疏的问题,这会使联合概率的其中一项值为0,从而导致句子的整体概率值为0。

3.2.1 加一平滑法(拉普拉斯定律)

  • 公式如下:

[P _ { L a p } left( w _ { 1 } w _ { 2 } , ldots w _ { n } ight) = frac { C left( w _ { 1 } w _ { 2 } dots w _ { n } ight) + 1 } { N + B } , left( B = | V | ^ { n } ight) ]

  • 实际运算时,(N)为条件概率中先验字串的频度。

3.2.2 其他平滑方法

  • Lidstone定律
  • Good-Turing估计
  • Back-off平滑
4. 维特比算法

4.1 维特比算法原理

  • 维特比算法用于解决HMM三大问题中的解码问题,即给定一个输出字符序列和HMM模型参数,如何确定模型产生这一序列概率最大的状态序列。

[arg max _ { X } P ( X | O ) = arg max _ { X } frac { P ( X , O ) } { P ( O ) } = arg max _ { X } P ( X , O ) ]

  • (O)是输出字符序列,(X)是状态序列。
  • 维特比算法迭代过程如下:
    • 初始化

[egin{array} { l } { delta _ { 1 } ( i ) = pi _ { i } b _ { i } left( o _ { 1 } ight) } \ { psi _ { 1 } ( i ) = 0 } end{array} ]

  • 递归

[egin{array} { c } { delta _ { t + 1 } ( j ) = underset { 1 leq i leq N } max delta _ { t } ( i ) a _ { i j } b _ { j } left( o _ { t + 1 } ight) } \ { psi _ { t + 1 } ( j ) = underset { 1 leq i leq N } { arg max } delta _ { t } ( i ) a _ { i j } b _ { j } left( o _ { t + 1 } ight) } end{array} ]

  • 结束

[egin{array} { c } { P ^ { * } = max _ { 1 leq i leq N } delta _ { T } ( i ) } \ { q _ { T } ^ { * } = underset { 1 leq i leq N } { arg max } delta _ { T } ( i ) } end{array} ]

  • 最优路径(状态序列)

[q _ { t } ^ { * } = psi _ { t + 1 } left( q _ { t + 1 } ^ { * } ight) , quad t = T - 1 , ldots , 1 ]

  • 上述迭代过程,(a)状态转移矩阵,(b)是状态-输出发射矩阵。

4.2 维特比算法例子

  • 例子:
    哈尔滨工业大学计算机学院-自然语言处理-课程总结第2张

  • 计算过程:

    • 第一次迭代(此时的输出字符为A):

[delta _ { 1 } ( 0 ) = 0.5*0.5=0.25​ ]

[delta _ { 1 } ( 1 ) = 0.5*0.3=0.15​ ]

[delta _ { 1 } ( 2 ) = 0*0.2=0​ ]

  • 第二次迭代(此时的输出字符为B):

[delta _ { 2 } ( 0 ) = max(0.25*0.3*0.3, 0, 0)=0.0225 ]

[delta _ { 2 } ( 1 ) =max(0.25*0.2*0.4, 0.15*0.4*0.4, 0)=0.024 ]

[delta _ { 2 } ( 2 ) = max(0.25*0.5*0.3, 0.15*0.6*0.3, 0)=0.0375 ]

  • 第三次迭代(此时的输出字符为C):

[delta _ { 3 } ( 0 ) = max(0.0225*0.3*0.2, 0, 0)=0.00135 ]

[delta _ { 3 } ( 1 ) =max(0.0225*0.2*0.3, 0.024*0.4*0.3, 0)=0.00288 ]

[delta _ { 3 } ( 2 ) =max(0.0225*0.5*0.5, 0.024*0.6*0.5, 0)=0.0072 ]

  • 最终答案:
    哈尔滨工业大学计算机学院-自然语言处理-课程总结第3张

    • 选择最优路径的时候从后往前选,选择最后一列最大的概率值为最终结果。
      • (0.0072))。
    • 接着寻找上一步中生成该概率值((0.0072))的数作为前一步结果。
      • (0.024),因为(0.024*0.6*0.5=0.0072)
    • 以此类推。

4.3 维特比算法应用

4.3.1 基于HMM的词性标注

  • HMM的状态集合:词性标记集合
    • (t_i)为为词性标记集合中的第(i)个词性标记。
  • HMM的输出字符集合:词汇集合
  • (pi _ { mathrm { i } }):词性标记(t_i)初始概率
  • (a_{ij}):从词性标记(t_i)(t_j)的状态转移概率
  • (b_{jk}):词性标记(t_j)对应的词(w_k)的发射概率

免责声明:文章转载自《哈尔滨工业大学计算机学院-自然语言处理-课程总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇charles工具抓包教程(http跟https)把NHibernate的DomainObject转换为Json!?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Web挖掘技术

  一、数据挖掘 数据挖掘是运用计算机及信息技术,从大量的、不全然的数据集中获取隐含在当中的实用知识的高级过程。Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用。Web 数据挖掘是一项综合技术,通过从Internet 上的资源中抽取信息来提高Web 技术的利用效率,也就是从Web 文档结构和试用的集合中发现隐含的模式。 数据挖掘...

DateTime与long互转

DateTime转long: public static long GetDateLong(object time) { DateTime epoc = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); Tim...

PyTorch实现Seq2Seq机器翻译

Seq2Seq简介 Seq2Seq由Encoder和Decoder组成,Encoder和Decoder又由RNN构成。Encoder负责将输入编码为一个向量。Decoder根据这个向量,和上一个时间步的预测结果作为输入,预测我们需要的内容。 Seq2Seq在训练阶段和预测阶段稍有差异。如果Decoder第一个预测预测的输出就错了,它会导致“蝴蝶效应“,影...

linux下git push出现“更新被拒绝,因为远程仓库包含您本地尚不存在的提交。”问题的处理

一、现象: (base) [root@DL xbiquge]# git push -u origin masterTo https://github.com/sfccl/xbiquge.git! [rejected] master -> master (fetch first)error: 无法推送一些引用到 'https://sfccl:密码@gi...

自然语言处理入门 何晗 读书笔记 第1章 新手上路

第1章新手上路 自然语言处理是一门融合了计算机科学、人工智能以及语言学的交叉学科。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标----理解人类语言或人工智能。 自然语言处理这个术语没有被广泛的定义,注重语言学结构的学者喜欢使用计算语言学(CL),强调最终目的的学者更偏好自然语言理解(NLU)。 1.1自然语言与编程语言...

词向量之word2vec实践

首先感谢无私分享的各位大神,文中很多内容多有借鉴之处。本次将自己的实验过程记录,希望能帮助有需要的同学。 一、从下载数据开始     现在的中文语料库不是特别丰富,我在之前的文章中略有整理,有兴趣的可以看看。本次实验使用wiki公开数据,下载地址如下:         wiki英文数据下载:https://dumps.wikimedia.org/enwik...