语音之家

 找回密码
 立即注册
搜索
热搜: 算法 软件 硬件
查看: 33|回复: 0

语音识别-语言模型篇

[复制链接]

13

主题

14

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2019-8-8 14:37:29 | 显示全部楼层 |阅读模式
语言模型的定义

语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率。
给定句子S=w1,w2 W3,..., Wn
P(S)=P(W1,W2,W3,...Wn)
这种方法有两个缺陷
   1參数空间过大。
   2数据稀疏严重。

为了解决參数空间过大的问题。引入了马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的一个或者几个词有关。
如果一个词的出现与它周围的词是独立的,那么我们就称之为unigram也就是一元语言模型:
如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram:
假设一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram

在实践中用的最多的就是bigram和trigram了,高于四元的用的非常少,由于训练它须要更庞大的语料,并且数据稀疏严重,时间复杂度高,精度却提高的不多。

自然语言处理中的一大痛点就是出现未登录词(OOV)的问题,即测试集中出现了训练集中未出现过的词,导致语言模型计算出的概率为零。
另一方面,可能某个子序列未在训练集中出现,也会导致概率为零。解决方法是采用平滑技术。

神经网络语言模型
语言模型可以看作是在给定一个序列的前提下,预测下一个词出现的概率,因此可以采用神经网络来实现。

前馈神经网络模型
先给每个词在连续空间中赋予一个向量(词向量),再通过神经网络去学习这种分布式表征。利用神经网络去建模当前词出现的概率与其前 n-1 个词之间的约束关系。
很显然这种方式相比 n-gram 具有更好的泛化能力,只要词表征足够好。但这个结构的缺点是仅包含了有限的前文信息。

循环神经网络模型
相比单纯的前馈神经网络,RNN语言模型原则上可以捕捉前向序列的所有信息。通过在整个训练集上优化交叉熵来训练模型,使得网络能够尽可能建模出自然语言序列与后续词之间的内在联系。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|yuyinbbs.cn

GMT+8, 2019-8-21 12:46 , Processed in 0.047598 second(s), 18 queries .

快速回复 返回顶部 返回列表