語言模型

統計式的語言模型是一個機率分佈，给定一个长度为  的字詞所組成的字串 ，派機率給字串：。

语言模型提供上下文来区分听起来相似的单词和短语。例如，短语“再给我两份葱，让我把记忆煎成饼”和“再给我两分钟，让我把记忆结成冰”听起来相似，但意思不同。

語言模型經常使用在許多自然語言處理方面的應用，如語音識別，機器翻譯，詞性標註，句法分析，手写体识别和資訊檢索。由於字詞與句子都是任意組合的長度，因此在訓練過的語言模型中會出現未曾出現的字串(資料稀疏的問題)，也使得在語料庫中估算字串的機率變得很困難，這也是要使用近似的平滑n-元語法(N-gram)模型之原因。

在語音辨識和在資料壓縮的領域中，這種模式試圖捕捉語言的特性，並預測在語音串列中的下一個字。

在语音识别中，声音与单词序列相匹配。当来自语言模型的证据与发音模型和声学模型相结合时，歧义更容易解决。

當用於資訊檢索，語言模型是與文件有關的集合。以查詢字「Q」作為輸入，依據機率將文件作排序，而該機率代表該文件的語言模型所產生的語句之機率。

模型类型

单元语法（unigram） 
一个单元模型可以看作是几个单状态有限自动机的组合。 它会分开上下文中不同术语的概率, 比如将  拆分为.

在这个模型中，每个单词的概率只取决于该单词在文档中的概率，所以我们只有一个状态有限自动机作为单位。自动机本身在模型的整个词汇表中有一个概率分布，总和为1。下面是一个文档的单元模型。

 

为特定查询(query)生成的概率计算如下

 

不同的文档有不同的语法模型，其中单词的命中率也不同。不同文档的概率分布用于为每个查询生成命中概率。可以根据概率对查询的文档进行排序。两个文档的单元模型示例:

在信息检索环境中，通常会对单语法语言模型进行平滑处理，以避免出现P(term)= 0的情况。一种常见的方法是为整个集合生成最大似然模型，并用每个文档的最大似然模型对集合模型进行线性插值来平滑化模型。

n-元语法 
在一个 n-元语法模型中，观测到序列  的概率  可以被近似为

 

此处我们引入马尔科夫假设，一个词的出现并不与这个句子前面的所有词关联，只与这个词前的 n 个词关联（n阶马尔科夫性质）。在已观测到 i-1 个词的情况中，观测到第i个词 wi 的概率，可以被近似为，观测到第i个词前面n个词（第 i-(n-1) 个词到第 i-1 个词）的情况下，观测到第i个词的概率。第 i 个词前 n 个词可以被称为 n-元。

条件概率可以从n-元语法模型频率计数中计算:

 

术语 二元语法(bigram) 和三元语法(trigram) 语言模型表示 n = 2 和 n = 3 的 n-元 。

典型地，n-元语法模型概率不是直接从频率计数中导出的，因为以这种方式导出的模型在面对任何之前没有明确看到的n-元时会有严重的问题。相反，某种形式的平滑是必要的，将一些总概率质量分配给看不见的单词或n-元。使用了各种方法，从简单的“加一”平滑(将计数1分配给看不见的n-元，作为一个无信息的先验)到更复杂的模型，例如或 。

例子 
在二元语法模型中 (n = 2) , I saw the red house 这个句子的概率可以被估计为

 

而在三元语法模型中，这个句子的概率估计为

 

注意前 n-1 个词的 n-元会用句首符号 
 填充。

指数型 
语言模型用特征函数编码了词和n-元的关系。 

 

其中  是,  是参数向量，  是特征函数。

在最简单的情况下，特征函数只是某个n-gram存在的指示器。使用先验的 a 或者使用一些正则化的手段是很有用的。

对数双线性模型是指数型语言模型的另一个例子。

参考资料

外部链接
LMSharp  - 开源统计语言模型工具包，支持n-gram模型（Kneser-Ney平滑），以及反馈神经网络模型（recurrent neural network model）

计算语言学
马尔可夫模型