博客
关于我
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/

你可能感兴趣的文章
ofbiz 定义
查看>>
OfficeWeb365 SaveDraw 文件上传漏洞复现
查看>>
office中的所有content type
查看>>
office之Excel 你会用 Ctrl + E 吗?
查看>>
Office办公软件里的“开发工具”选项卡-ChatGPT4o作答
查看>>
Offline Installation the .NET Framework 3.5 on Windows 8
查看>>
OGG初始化之使用数据库实用程序加载数据
查看>>
ogg参数解析
查看>>
ognl详解
查看>>
Ogre 插件系统
查看>>
Oil Deposits
查看>>
oj2894(贝尔曼福特模板)
查看>>
OJ4TH|Let's play a game
查看>>
OJ中处理超大数据的方法
查看>>
OJ中常见的一种presentation error解决方法
查看>>
OK335xS UART device registe hacking
查看>>
ok6410内存初始化
查看>>
OkDeepLink 使用教程
查看>>
OKHTTP
查看>>
Okhttp3添加拦截器后,报错,java.io.IOException: unexpected end of stream on okhttp3.Address
查看>>