NLP基础笔记4——语言模型

一、简介

首先放一张基于Language Model的NLP主要模型算法梳理框图。

NLP基础笔记4——语言模型

NLP语言模型可分为传统语言模型与神经语言模型。

简言之,语言模型就是给句子(词序列)分配一个概率。这个概率表示这句话“合理程度”。举个例子:

你儿子在我手上,快点把打过来。 prob=0.80
# 这样一个句子,非常“通顺”,就得到一个很高的概率值。
特朗普在厕所里摆满了多个艺员。 prob=0.20
# 这样一个句子,非常“怪异”,也可能是有别字、语病的,就得到一个很低的概率值。

 

把语言模型(词序列-->概率)写成公式:

NLP基础笔记4——语言模型

上述公式使用了链式法则,即当前第n个词用哪一个,完全取决于前n-1个词。有了上面的公式,我们就可以基于训练语料,计算一个句子的概率值了。

 

常见的概率模型有:N-gram 模型、决策树、最大熵模型、隐马尔可夫模型、条件随机场、神经网络等,目前常用于语言模型的是 N-gram 模型和神经语言模型(下面介绍)

二、N-gram 语言模型

许许多NLP 应用程序基于语言模型,语言模型定义了关于自然语言中的字、字符或字节序列的概率分布

最早成功的语言模型基于固定长度序列的标记模型,称为n-gram。一个n-gram 是一个包含n 个标记的序列。

NLP基础笔记4——语言模型

训练n-gram 模型是简单的,因为最大似然估计可以通过简单地统计每个可能的n-gram 在训练集中出现的次数来获得。几十年来,基于n-gram 的模型都是统计语言模型的核心模块。

对于小的n 值,模型有特定的名称:n = 1 称为一元语法(unigram),n = 2 称为二元语法(bigram)及n = 3 称为三元语法(trigram)。

三、神经概率语言模型(NPLM,neural language model

神经语言模型(Neural Language Model, NLM)是一类用来克服维数灾难的语言模型,它使用词的分布式表示对自然语言序列建模(Bengio et al., 2001b)。

不同于基于类的n-gram 模型,神经语言模型在能够识别两个相似的词,并且不丧失将每个词编码为彼此不同的能力。神经语言模型共享一个词(及其上下文)和其他类似词(和上下文之间)的统计强度。模型为每个词学习的分布式表示,允许模型处理具有类似共同特征的词来实现这种共享。例如,如果词dog 和词cat 映射到具有许多属性的表示,则包含词cat 的句子可以告知模型对包含词dog 的句子做出预测,反之亦然。因为这样的属性很多,所以存在许多泛化的方式,可以将信息从每个训练语句传递到指数数量的语义相关语句。维数灾难需要模型泛化到指数多的句子(指数相对句子长度而言)。该模型通过将每个训练句子与指数数量的类似句子相关联克服这个问题。

参考文献

[1]《Deep Learning》

[2]语言模型系列之N-Gram、NPLM及Word2vec

[3]NLP基础

[4]stanford nlp第四课“语言模型(Language Modeling)”