TypechoJoeTheme

IT技术分享

统计
NLP

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

2017-09-09
/
0 评论
/
904 阅读
/
正在检测是否收录...
09/09

语言建模

英文名: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$$

应用领域

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

  • OCR
  • 手写体识别
  • 机器翻译
  • 信息检索

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

$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模型的主要工作是在模型的的训练阶段,统计语料中各种语言模式(词汇、词性串)出现的频次

建模步骤

数据准备

  • 确定训练语料
  • 对语料进行 Tokenization 或切分
  • 句子边界标记,增加两个特殊的词\<BOS\>和\<EOS\>
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 定律描述了词频以及词在词频表中的位置间的关系

ZIPF 定律结论

  • 语言中只有很少的常用词
  • 语言中大部分词都是低频词(不常用的词)
  • 对于语言中的大多数词,它们在语料中的出现是稀疏的
  • 只有少量常用词,语料库可以提供它们规律的可靠样本
朗读
赞 · 0
版权属于:

IT技术分享

本文链接:

https://idunso.com/archives/2815/(转载时请注明本文出处及文章链接)