N 元组 (N-Gram) 及语言建模——自然语言处理之统计分析

/ NLP / 没有评论 / 1003浏览

语言建模

英文名:Language Modeling

从统计角度看,自然语言中的一个句子 s 可以由任何词串构成。不过概率 $P(s)$ 有大有小。

$s_1$= 我 刚 吃 过 晚饭
$s_2$= 刚 我 过 晚饭 吃
$P(s_1) > P(s_2)$

对于给定的自然语言 L 而言,通常 $P(s)$ 是未知的。
对于一个服从某个未知概率分布 P 的语言 L ,根据给定的语言样本估计 P 的过程被称作语言建模

$$\sum_{s\in L} P(s) = 1$$

应用领域

语言建模技术首先在语音识别研究中提出, 后来陆续用到

在语音识别中,如果识别结果有多个,则可以根据语言模型计算每个识别结果的可能性,然后挑选一个可能性较大的识别结果。

$P(s)$ 可以有不同的形式,一般可以写成

$$P(s) = f(\theta _{1},\theta _{2},...,\theta _{n})$$

$\theta _{i}$ 是模型参数,一般未知

链式规则

英文名:Chain rule

对于给定的句子$s = w_{1}w_{2}…w_{n}$,如何计算$P(s)$?

$$P(s) = p(w_{1})p(w_{2}|w_{1})p(w_{3}|w_{1}w_{2})...p(w_{l}|w_{1}...w_{l-1}) = \prod_{i = 1}^{l}p(w_{i}|w_{1}...w_{i-1})$$

P("John read a book")=P("John")*P("read|John")*P("a|John read")*P("book|John read a")

N 元组

英文名:N-gram

要估计 $p(w_i|w_1w_2…w_{i-1})$,需要考虑词串 $(w_1w_2…w_i)$ 和 $(w_1w_2…w_{i-1})$ 的出现频次

若不限制词串的长度,那么数据过于稀疏,参数空间较大,模型估计较困难

为了便于估计参数,限定只考虑 N 个词组成的词串 $(w_{i-n+1}…w_i)$ ,该词串被称作 N 元组。

一元组

英文名:unigram (n=1)

$p(w_i)$ 若语言中有20000个词,则需要估计20000个参数

二元组

英文名:bigram (n=2)

$p(w_i|w_{i-1})$ 若语言中有20000个词,则需要估计 $20000^2$ 个参数

三元组

英文名:trigram (n=3)

$p(w_i|w_{i-2}w_{i-1})$ 若语言中有20000个词,则需要估计 $20000^3$ 个参数

四元组

英文名:four-gram (n=4)

有时也称为 digram 或 quadrigram

N 元语言模型

基于 N 元组统计得到的语言模型,称为 N 元语言模型。

N 元模型是一种近似模型, N 的选择需要平衡模型的准确性和可计算性。

N 较大时

N 较小时

N-Gram模型的主要工作是在模型的的训练阶段,统计语料中各种语言模式(词汇、词性串)出现的频次

建模步骤

数据准备

I eat . -> <BOS> I eat . <EOS>

参数估计

利用训练语料,估计模型参数

数据稀疏问题

英文名:Data Sparsness

由于训练样本不足而导致所估计的分布不可靠的问题,称为数据稀疏问题。

若某 N-Gram 在训练语料中没有出现,则该 N-Gram的概率必定是0

解决的办法

ZIPF 定律

针对某个语料库,若某个词 w 的词频是 f,并且该词在词频表中的序号为 r

w 是所统计的语料中第 r 个常用词

则 $f \cdot r = k$,(k是一个常数)

若 $w_i$ 在词频表中排名第 50, $w_j$ 在词频表中排名第 150,则 $w_i$出现的频率大约是 $w_j$ 的 3 倍

ZIPF 定律结论