语言模型和n元语法

  • 语言模型定义

语言模型用来构建字符串s的概率分布,即一个句子出现的概率。考虑句子中词语的联系,其句子出现的概率计算公式可以表示为:

认为第i个词出现的概率是由前面i-1个历史词决定的,这里使用频率来估计概率(这种估计概率值的方法称为极大似然估计,MLE)。在这种情况下,当i较大时,i-1个历史词的组合方式就很多,我们必须考虑所有i-1个历史词的所有组合方式和出现情况。假设词汇集大小1000,i=3,就有10亿种组合情况,导致几乎无法从训练数据集中正确估计出概率。这就是这种语言模型存在的问题,所以引入n元语法。

  • n元语法

 n元语法是指在上述的语言模型中只考虑n-1个历史词的方法。一般n值不能太大,否则也会存在参数(组合情况)过多的问题。当n=1时,称为unigram,即词语i独立于历史;当n=2时,词语i的出现只与前面一个词有关,称为bigram;当n=3时,词语i的出现与前面两个词有关,称为trigram。以二元语法为例(bigram),记为:

为了保留句子开始和结尾的特殊意义,在句子开头和结尾分别加入<BOS>、<EOS>(就相当于是分别加了一个特殊词,参与计算)

《统计自然语言处理》书中的例子:

  • 语言模型性能评价

语言模型通过对训练语料的统计,得到各个条件概率(称为模型的参数),这个过程称为模型的训练。可是如何评价训练得到的语言模型的能力呢?这里我们使用交叉熵(cross-entropy)和困惑度(perplexity)来评估。

测试数据集T,其中有句子t1,t2,t3.....

交叉熵

困惑度

其中,p(T)是整个测试集的概率,是测试集T中的总词数(包含<BOS>、<EOS>)。

一般情况下, 交叉熵和困惑度越小越好,但具体值和文本的情况有关。

猜你喜欢

转载自blog.csdn.net/Torero_lch/article/details/81626072