语言模型是自然语言处理问题中一类最基本的问题,一门语言中所有可能的句子服从某一个概率分布, 每个句子出现的概率加起来为1 ,那么“语言模型”的任务就是预测每个句子在语言中出现的概率。对于语言中常见的句子, 一个好的语言模型应得出相对较高的概率:而对于不合语法的句子,计算出的概率则应接近于零。
把句子看成单词的序列, 语言模型可以表示为一个计算
的模型。语言模型仅仅对句子出现的概率进行建模, 并不尝试去“理解”句子的内容含义。比如说,语言模型能告诉我们什么样的句子是常用句子,但无法告诉我们两句话的意思是否相似或者相反。
自然语言文本的应用都依赖语言模型来优化输出文本的流畅性。生成的句子在语言模型中的概率越高,说明其越有可能是一个流畅、自然的句子。例如在输入法中,假设输入的拼音串为“ xianzaiquna ”,输出可能是“西安在去哪 "'也可能是“现在去哪’,这时输入法就利用语言模型比较两个输出的概率,得出“现在去哪”更有可能是用户所需要的输出。在统计机器翻译的噪声信道模型( Noisy Channel Model) 中,每个候选翻译的概率由一个翻译模型和一个语言模型共同决定,其中的语言模型就起到了在目标语言中挑选较为合理的句子的作用。
那么如何计算一个句子的概率呢?首先一个句子可以被看成是一个单词序列:
,
那么m为句子长度。则该句子的概率为
其中
表示一直钱m-1个单词时,第m个单词为
的概率。如果能对这一项建模,那么只要把每个位置的条件概率相乘,就能计算一个句子出现的概率。 任何一门语言的词汇量都很大,词汇的组合更是不计其数。假设一门语言的词汇量为V ,如果要将
的所有参数保存在一个模型里,将需要
个参数, 一般的句子长度远远超出了实际可行的范围。为了估计这些参数的取值,常见的方法有n-gram 模型、决策树、最大;脑模型、条件随机场、神经网络语言模型等。