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

你可能感兴趣的文章
NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
查看>>
NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
查看>>
node exporter完整版
查看>>
Node JS: < 一> 初识Node JS
查看>>
Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
查看>>
Node 裁切图片的方法
查看>>
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>
Node-RED中Button按钮组件和TextInput文字输入组件的使用
查看>>
Node-RED中Switch开关和Dropdown选择组件的使用
查看>>
Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
查看>>
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>
Node-RED中使用range范围节点实现从一个范围对应至另一个范围
查看>>
Node-RED中实现HTML表单提交和获取提交的内容
查看>>