一、统计语言模型

1、什么是统计语言模型?

统计语言模型是一个单词序列上的概率分布,对于一个给定长度为m的序列,它可以为整个序列产生一个概率 P(w_1,w_2,…,w_m) 。其实就是想办法找到一个概率分布,它可以表示任意一个句子或序列出现的概率。
目前在自然语言处理相关应用非常广泛,如语音识别(speech recognition) , 机器翻译(machine translation), 词性标注(part-of-speech tagging), 句法分析(parsing)等。传统方法主要是基于统计学模型,最近几年基于神经网络的语言模型也越来越成熟。

一个语言模型通常构建为字符串s的概率分布p(s),这里的p(s)实际上反映的是s作为一个句子出现的概率。

这里的概率指的是组成字符串的这个组合,在训练语料中出现的似然,与句子是否合乎语法无关。假设训练语料来自于人类的语言,那么可以认为这个概率是的是一句话是否是人话的概率。

2、怎么建立统计语言模型?

对于一个由T个词按顺序构成的句子,p(s)实际上求解的是字符串的联合概率,利用贝叶斯公式,链式分解如下:


从上面可以看到,一个统计语言模型可以表示成,给定前面的的词,求后面一个词出现的条件概率。

我们在求p(s)时实际上就已经建立了一个模型,这里的p(*)就是模型的参数,如果这些参数已经求解得到,那么很容易就能够得到字符串s的概率。

3、求解的问题

假定字符串s为“i want to drink some water”,那么根据上面所建立的模型:

问题归结为如何求解上面的每一个概率,比如,一种比较直观的方法就是分别计算出“I want to”和“I want to drink”在语料中出现的频数,然后再用除法:


看起来好像很美好,实际上这里存在两个问题:

(1)自由参数数目:

假定字符串中字符全部来自与大小为V的词典,上述例子中我们需要计算所有的条件概率,对于所有的条件概率,这里的w都有V种取值,那么实际上这个模型的自由参数数目量级是V^6,6为字符串的长度。

从上面可以看出,模型的自由参数是随着字符串长度的增加而指数级暴增的,这使我们几乎不可能正确的估计出这些参数。

(2)数据稀疏性:

从上面可以看到,每一个w都具有V种取值,这样构造出了非常多的词对,但实际中训练语料是不会出现这么多种组合的,那么依据最大似然估计,最终得到的概率实际是很可能是0。

4、怎么解决?

上面提出了传统统计语言模型的两个问题,后面分别介绍两种方法进行求解:N-gram语言模型,神经概率语言模型

二、N-gram语言模型

1、什么是N-gram语言模型?

为了解决自由参数数目过多的问题,引入了马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的n个词有关。基于上述假设的统计语言模型被称为N-gram语言模型。

2、如何确定N的取值?

通常情况下,n的取值不能够太大,否则自由参数过多的问题依旧存在:

(1)当n=1时,即一个词的出现与它周围的词是独立,这种我们称为unigram,也就是一元语言模型,此时自由参数量级是词典大小V。

(2)当n=2时,即一个词的出现仅与它前面的一个词有关时,这种我们称为bigram,叫二元语言模型,也叫一阶马尔科夫链,此时自由参数数量级是V^2。

(3)当n=3时,即一个词的出现仅与它前面的两个词有关,称为trigram,叫三元语言模型,也叫二阶马尔科夫链,此时自由参数数量级是V^3。

一般情况下只使用上述取值,因为从上面可以看出,自由参数的数量级是n取值的指数倍。

从模型的效果来看,理论上n的取值越大,效果越好。但随着n取值的增加,效果提升的幅度是在下降的。同时还涉及到一个可靠性和可区别性的问题,参数越多,可区别性越好,但同时单个参数的实例变少从而降低了可靠性。

3、建模与求解

N-gram语言模型的求解跟传统统计语言模型一致,都是求解每一个条件概率的值,简单计算N元语法在语料中出现的频率,然后归一化。

4、平滑化

我们在传统统计语言模型提出了两个问题:自由参数数目和数据稀疏,上述N-gram只是解决了第一个问题,而平滑化就是为了解决第二个问题。

假设有一个词组在训练语料中没有出现过,那么它的频次就为0,但实际上能不能认为它出现的概率为0呢?显然不可以,我们无法保证训练语料的完备性。那么,解决的方法是什么?如果我们默认每一个词组都出现1次呢,无论词组出现的频次是多少,都往上加1,这就能够解决概率为0的问题了。

上述的方法就是加1平滑,也称为拉普拉斯平滑。平滑化还有许多方法,这里就不展开介绍了:

(1)加法平滑

(2)古德-图灵平滑

(3)K平滑

Unigram models

Unigram models也即一元文法模型,它是一种上下文无关模型。该模型仅仅考虑当前词本身出现的概率,而不考虑当前词的上下文环境。概率形式为

,即一个句子出现的概率等于句子中每个单词概率乘积。
以一篇文档为例,每个单词的概率只取决于该单词本身在文档中的概率,而文档中所有词出现的概率和为1,每个词的概率可以用该词在文档中出现的频率来表示,如下表中



三、神经网络语言模型(Neural language models)

神经语言模型使用连续表示或词汇Embedding来进行预测。 以神经网络为基础来训练模型。


在传统统计语言模型中,我们提出两个问题:自由参数数目和数据稀疏。
这里在实际上使用参数θ代替了自由参数指数级的求解,而数据稀疏问题,我们在最后使用softmax进行归一化,求解出来的概率是平滑的,所以也解决了这个问题。

语言模型(language model)相关推荐

  1. NLP中的语言模型(language model)

    什么是语言模型 本文参考维基百科语言模型 language model 统计语言模型是一个单词序列上的概率分布,对于一个给定长度为m的序列,它可以为整个序列产生一个概率 P(w_1,w_2,-,w_m ...

  2. 【PyTorch】语言模型/Language model

    1 模型描述 (1)语言模型的定义,来自于维基百科 统计式的语言模型是一个几率分布.语言模型提供上下文来区分听起来相似的单词和短语.例如,短语"再给我两份葱,让我把记忆煎成饼"和& ...

  3. Statistical language model 统计语言模型

    学习笔记来自斯坦福公开课的自然语言处理(https://class.coursera.org/nlp/),以其中讲义为主,加入自己的学习理解,以加深学习印象. 内容提纲: 1. N-GRAM介绍 2. ...

  4. 统计语言模型(Statistical Language Model)

    自然语言处理的一个基本问题就是为其上下文相关的特性建立数学模型,即统计语言模型(Statistical Language Model),它是自然语言处理的基础. 1 用数学的方法描述语言规律 假定S表 ...

  5. 论文阅读:A Neural Probabilistic Language Model 一种神经概率语言模型

    A Neural Probabilistic Language Model 一种神经概率语言模型 目录 A Neural Probabilistic Language Model 一种神经概率语言模型 ...

  6. 【预训练语言模型】WKLM: Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model

    [预训练语言模型]WKLM:Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model   知识增强的 ...

  7. NLP问题特征表达基础 - 语言模型(Language Model)发展演化历程讨论

    1. NLP问题简介 0x1:NLP问题都包括哪些内涵 人们对真实世界的感知被成为感知世界,而人们用语言表达出自己的感知视为文本数据.那么反过来,NLP,或者更精确地表达为文本挖掘,则是从文本数据出发 ...

  8. 自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)

    分类目录:<自然语言处理从入门到应用>总目录 语言模型(Language Model,LM)(也称统计语言模型)是描述自然语言概率分布的模型,是一个非常基础和重要的自然语言处理任务.利用语 ...

  9. A Neural Probabilistic Language Model 论文阅读及实战

    1.词向量介绍 在NLP任务中,第一步首先将自然语言转化成数学符号表示.一般常用的词汇表示方法:one-hot表示,这种方法是将每个单词表示为一个很长的向量,这个向量的长度是词汇表的大小,其中绝大数元 ...

  10. NTU 课程笔记 :NLP - language model

    1 language model 一个语言模型会接受一组历史单词,然后尝试着预测跟在这组单词之后的单词

最新文章

  1. Linux I/O多路复用
  2. 如何轮播 DataV 大屏
  3. 设置材质阿尔法通道和双面渲染
  4. 递归算法,JavaScript实现
  5. Hibernate 主清单文件配制说明
  6. Thinking in Java 11.10 Map
  7. sidirect 连接西门子_Intouch 与 CP343-1 通讯设置
  8. 2021年Java后端开发学习路线(建议收藏!)
  9. linux 提升管理员权限命令,​cmd怎么用命令直接提升到管理员权限|cmd原有权限提升方法...
  10. MariaDB 10.6.10离线安装
  11. Riverbed未来要往哪里去?收购Ocedo让你一目了然
  12. 解决爱思维尔期刊提供的Latex模板摘要部分改变字体颜色问题File ended while scanning use of \verbatim@start.
  13. 网络重置后WLAN网络找不到怎么办?
  14. 将fer2013转成图片,删选图片后生成新数据集(图像转换成像素值以csv存储)
  15. 开始菜单不见了怎么办 开始菜单不见了解决方法
  16. pymssql连接sql server报错:pymssql._pymssql.OperationalError
  17. 来了,最新微波通信系统频率使用规划调整即将施行!
  18. 怎么让word在分页后在下一页第一行自动加上上一页未结束的标题,并在后加一个“续”字?如图:
  19. Android11 无Root 访问data目录实现、Android11访问data目录、Android11解除data目录限制、Android11 data空白解决
  20. 天启星座(Tianqi)介绍

热门文章

  1. c语言标志位flag怎么用,怎么用flag标志位当单片机中断标志来用
  2. 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...
  3. 3904三极管是什么功能_想要单片机顺手,搞懂这些三极管知识!
  4. html单元格溢出,excel如何超出单元格显示
  5. C语言中file文件指针概念及其操作 (转载)
  6. 单包授权(spa)简介
  7. 句法结构可视化工具(成分句法)
  8. R 编程语言 - 简介
  9. 超详细的Python实现新浪微博模拟登陆(小白都能懂)
  10. 看小伙是如何用python尽览我国植被覆盖率的沧海变化