博客
关于我
NLP学习笔记14-语言模型(下)
阅读量:117 次
发布时间:2019-02-26

本文共 1303 字,大约阅读时间需要 4 分钟。

本文属于贪心NLP 学习笔记系列。通过实践学习,我逐渐掌握了数学概念的相关知识。

二 unigram

在处理语言模型时,不考虑单词之间的顺序,依赖于马尔科夫假设。假设w1, w2, ..., wn是相互独立的:一个事件的发生与否,不会影响另外一个事件的发生。

计算单词概率的方法是:统计语料库中某个单词出现的次数,再除以语料库的总词数。

这种方法的缺点是:单词相互独立,语义上不通顺的跟通顺的概率一样,难以区分。

三 bigram(基于1st order markov assumption)

考虑单词之间(前面的单词)的顺序,计算单词概率时需要考虑前一单词。

计算方法是:统计语料库中某个单词后接目标单词的概率。

这种方法可以更好地区分语义相近的单词。

四 N-gram

一般情况下,不会考虑N太多,bigram是最多使用的。

计算方法是:统计语料库中某个单词后接目标单词的概率。

为了防止出现未登录词(OOV),可以采用平滑技术。

五 语言模型的评估

困惑度是交叉熵的指数形式。困惑度越小,表示语言模型越好。

计算困惑度的方法是:根据训练好的模型,计算每个测试句子的平均对数似然值x,困惑度为2^{-x}。x越大,困惑度越小。

六 n-gram 语言模型中的平滑技术

自然语言处理中常见的问题是出现未登录词。优化方法是平滑技术。

平滑技术的核心是拉普拉斯平滑。公式如下:

P(w_{i} | w_{i-1}) = (C(w_{i-1}, w_{i}) + 1) / (C(w_{i-1}) + v)

其中,v是词典库的大小,C(w_{i-1}, w_{i})是w_{i-1}后接w_{i}的次数。

这里的v不是所有单词出现的次数,而是词典库的大小。

七 add-k smoothing

add-1是k=1的特例。优化方法是选择k值使得困惑度最小。

通常选择k=1或k=0,具体取决于实际情况。

八 interpolation

在实际应用中,可以结合unigram、bigram和N-gram的概率,计算更准确的结果。

公式如下:

P'(w_{n} | w_{n-1}, w_{n-2}) = λ1 * P(w_{n} | w_{n-1}, w_{n-2}) + λ2 * P(w_{n} | w_{n-1}) + λ3 * P(w_{n})

其中,λ1 + λ2 + λ3 = 1。

权重λ1, λ2, λ3可以通过优化确定。

九 good-turning smoothing

在实际应用中,采用good-turning算法优化平滑方法。公式如下:

P(w) = N1 / N

其中,N1是出现1次的单词数量,N是词典库的大小。

对于出现c次的单词:

P(w) = (c + 1) * N_{c+1} / (N_c * N)

其中,N_c是出现c次的单词数量。

通常,good-turning算法得出的概率与实际测试结果相符。

十 总结

在语言模型中,选择合适的平滑方法至关重要。无论是add-1 smoothing还是good-turning smoothing,都需要根据实际情况选择最优参数。

转载地址:http://rdcy.baihongyu.com/

你可能感兴趣的文章
NOI-1.3-11-计算浮点数相除的余数
查看>>
noi.ac #36 模拟
查看>>
NOI2010 海拔(平面图最大流)
查看>>
NOIp2005 过河
查看>>
NOIP2011T1 数字反转
查看>>
NOIP2014 提高组 Day2——寻找道路
查看>>
noip借教室 题解
查看>>
NOIP模拟测试19
查看>>
NOIp模拟赛二十九
查看>>
Vue3+element plus+sortablejs实现table列表拖拽
查看>>
Nokia5233手机和我装的几个symbian V5手机软件
查看>>
non linear processor
查看>>
Non-final field ‘code‘ in enum StateEnum‘
查看>>
none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
查看>>