0
点赞
收藏
分享

微信扫一扫

自然语言处理——语言模型(一)


引言

本文简单介绍了一下语言模型和马尔科夫假设。

语言模型简介

语言模型(Language Model,LM)是计算给定句子或单词序列自然语言处理——语言模型(一)_自然语言处理出现概率自然语言处理——语言模型(一)_自然语言处理_02的模型,用来判断一句话是否通顺。

这里说的单词不只是代表英语单词,还代表中文词语。

比如“今天是周日”和“今天周日是”这两句话,前者显然比后者更加通顺。在机器翻译领域,语言模型可以把后者修正为前者这种通畅的表达。

那语言模型是如何判断哪个句子更好的呢,是通过概率的方式。

比如我们的语言模型能得到 P(“今天是周日”) > P(“今天周日是”)。

那如何计算一个句子的概率呢,假设句子自然语言处理——语言模型(一)_自然语言处理自然语言处理——语言模型(一)_条件概率_04这些单词组成。
那么自然语言处理——语言模型(一)_条件概率_05

下面就来说明如何计算一个句子或单词序列出现的概率,首先介绍一下马尔科夫假设。

马尔科夫假设

在介绍马尔科夫假设(Markov assumption)之前要介绍一下概率论的链式法则。

假设有两个随机变量自然语言处理——语言模型(一)_马尔科夫假设_06,如何把自然语言处理——语言模型(一)_机器翻译_07表示成条件概率呢。
由概率论知识可知:
自然语言处理——语言模型(一)_语言模型_08

那如果有四个随机变量自然语言处理——语言模型(一)_机器翻译_09呢,如何求自然语言处理——语言模型(一)_自然语言处理_10,也是一样的。
自然语言处理——语言模型(一)_自然语言处理_11

注意我们多次利用了自然语言处理——语言模型(一)_语言模型_12的形式。

自然语言处理——语言模型(一)_条件概率_13这个就叫概率论的链式法则。

我们知道,计算事件自然语言处理——语言模型(一)_自然语言处理_14发生的条件下事件自然语言处理——语言模型(一)_条件概率_15发生的条件概率为:
自然语言处理——语言模型(一)_机器翻译_16
把分母乘到左边就得到了链式法则。

那么我们把句子中的每个单词看成是随机变量的话,就可以通过链式法则来求句子自然语言处理——语言模型(一)_自然语言处理_02的概率:
自然语言处理——语言模型(一)_语言模型_18

下面我们来看下通过链式法则如何表达句子“今天\是\春节\我们\都\休息”的联合概率。

自然语言处理——语言模型(一)_自然语言处理_19

只要我们有一个很大的语料库,我们就可以提前计算好上面的这些概率,比如计算自然语言处理——语言模型(一)_条件概率_20只需要计算单词“今天”出现的次数除以单词总数;计算自然语言处理——语言模型(一)_自然语言处理_21就是计算单词“今天”后面接单词“是”的次数除以单词“今天”出现的次数。

因为语言是创造性的,你可能会碰到“一给我里giaogiao,你有没有搞错。”,这种序列可能你的训练集中根本就没有(最近流行的网络词+随意组合),导致这个序列的概率是零。

为了解决这个问题,我们引入了马尔科夫假设,也就是假设当前词出现的概率只依赖于前自然语言处理——语言模型(一)_马尔科夫假设_22个词,比如,自然语言处理——语言模型(一)_语言模型_23,就是当前单词只依赖于前一个词,
那么自然语言处理——语言模型(一)_马尔科夫假设_24

如果自然语言处理——语言模型(一)_马尔科夫假设_25,那么意味着当前单词依赖于前两个单词,
自然语言处理——语言模型(一)_马尔科夫假设_26

更一般地,如果求自然语言处理——语言模型(一)_语言模型_27

  • 自然语言处理——语言模型(一)_马尔科夫假设_28时,
    自然语言处理——语言模型(一)_自然语言处理_29
  • 自然语言处理——语言模型(一)_机器翻译_30时,
    自然语言处理——语言模型(一)_马尔科夫假设_31

下面来看一个实例,让我们更好地理解这里面的思想。

自然语言处理——语言模型(一)_机器翻译_32


假设我们已经从语料库中得到上面的概率。

下面我们令自然语言处理——语言模型(一)_语言模型_23,只依赖前一个单词的形式来比较句子“今天\是\周日”和“今天\周日\是”的概率。

自然语言处理——语言模型(一)_条件概率_34

再来看另一个句子
自然语言处理——语言模型(一)_马尔科夫假设_35

也就是“今天是周日”出现的概率要大一些,我们就认为它是二者之间语义最优的。

下篇文章将会介绍N-Gram语言模型。

参考

  1. 贪心学院课程


举报

相关推荐

0 条评论