1. 什么是语言模型
语言模型是针对某种语言的概率模型,目的是建立能够描述给定词序列在语言中出现的概率分布。简单地说,语言模型就是用来计算一个句子是否合理的概率。
对于语言序列W1,W2,...,Wn,语言模型就是计算该序列的概率,即P(W1, W2,...,Wn),例如P(我爱学习) > P(习学爱我)。
此时你可能觉得语言模型很简单或者认为它没有什么大的存在价值,但事实上它应用非常广泛,而且也并不是如我们想象的那么简单。
语言模型起源于语音识别,输入一段音频数据,语音识别系统通常会生成多个句子作为候选,究竟哪个句子更合理?就需要用到语言模型对候选句子进行排序。如今语言模型的应用范围早已扩展到机器翻译、拼写检查、问答、文摘等众多NLP领域。
一直以来,如何让计算机可以理解我们人类的语言,都是人工智能领域的大问题。作为自然语言处理(Natural Language Processing,NLP)系统的核心组件,现在的语言模型(Language Model,LM)不仅能够提供词序列的联合概率,还能够提供词的向量表示。
2. 有哪些语言模型
构建一个语言模型有很多方法,早期的语言模型是基于规则构建的,它既费时又费力,而且并不能涵盖多种语言学现象。直到 20 世纪 80 年代,人们提出了统计语言模型,引入概率来表示单词序列的合理性。21世纪初,百度深度学习研究院的徐伟提出了用神经网络来训练语言模型的思想,Bengio提出了第一个前馈神经网络语言模型(FFNNLM),神经网络语言模型也凭借着良好的性能发展非常迅猛。下面我将对统计语言模型(N-gram)和神经网络语言模型(Bengio提出的FFNNLM)做详细阐述。
3. N-gram模型
前面我们提到:语言模型是一个可以计算一个句子出现的概率的模型. 一个句子S是由n个词语 组成的. 那么, 根据贝叶斯公式, 我们可以计算:
我们观察上式会发现,比较好算, 也还ok,就比较有难度了,随着n的增大,计算会越来越难,几乎根本不可能估算出来。那怎么办嘞?
3.1 马尔科夫假设
数学家马尔科夫针对无法计算这种情况,提出了一种偷懒且高效的方法:马尔科夫假设!
n-1阶马尔科夫假设:文本中每个词的出现概率仅和前面n-1个词有关,而与其他词无关。
根据n-1阶马尔科夫假设我们可以得到:
基于上式,我们就能定义n-gram语言模型了:
N的取值 | 模型名称 | 公式定义 |
---|---|---|
1 | unigram | |
2 | bigram |