文档章节

语言模型:介绍

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:20
字数 1080
阅读 1
收藏 0

该系列将描述一些自然语言处理方面的技术,完整目录请点击这里


这个专题,我们主要学习如何从一个句子中来构建一个语言模型。语言模型最早是应用在语音识别的问题上,当然它们仍然在现代语音识别系统中发挥着核心的作用。之后,语言模型也被广泛的应用到其他的NLP任务之中。最原始的语言模型是采用参数评估技术来实现的,这个技术在很多的NLP任务中都被使用,比如后续我们会将到的标记问题和解析问题。

假设我们有一个语料库,里面有很多的句子。比如,这是一个人民日报多年积累下来的文章。那么,我们可以根据这个语料库来设计我们的语言模型。

那么什么是语言模型呢?首先,我们需要定义一个词集 V,比如,我们对英语构建一个语言模型,那么:


在真实的环境中,V 是一个非常大的集合,它可能包含成千上万的词。我们假设 V 是一个有限集合。一个句子可以用如下参数来表示:


其中,n>=1,并且


我们假设 xn 是一个特殊符号 STOP,并且该符号不在集合 V 里面。那么,我们为什么需要在句子的最后加上 STOP ,因为这样有助于去确定一个句子是否结尾,比较方便。举个例子,比如:

the dog barks STOP
the cat laughs STOP
the cat saw the dog STOP the STOP
cat the dog the STOP
cat cat cat STOP
STOP
...

接下来,我们需要定义一个句子集合 V',这个集合中的句子是由集合 V 中的词所决定的,但这个集合是一个无限集合,因为句子的长度你无法确定。

接下来,我们正式定义语言模型。

Definition 1:语言模型有一个有限集合 V 和一个概率方程 p(x1, x2, ..., xn) 组成,使得:


因此,p(x1, x2, .., xn) 是句子的一个概率分布。
那么,根据词库,我们如何来训练我们的语言模型呢?我们首先来介绍一个非常直观的方法,但是这个方法是很笨的。我们定义 c(x1, x2, x3, ..., xn) 是句子 x1x2x3....xn 在语料库中出现的书,N 是语料库能组成的句子的总和。那么我们可以定义如下:


但正如我们刚刚说的,这是一个非常差的模型。那么为什么差呢?因为如果一个句子你没有在语料库中出现,那么你得到的概率就是 0。也就是说,如果在训练集中没有出现这个句子,那么测试集中我们一直会得到概率 0。但是我们不可能训练到每一个句子,所以这是一个非常差的模型。那么,这一章,我们的任务就是学习,如何去产生一个没有在训练集中出现的句子。

那么,我们为什么要学习语言模型呢?这个看起来很奇怪的东西,在以后的具体任务中会有什么用处呢?主要有以下两个理由:

  1. 语言模型在很多的应用中都有使用,特别语音识别和机器翻译。而且,在很多的场景中,语言模型被用作一个先验概率,判断那些词可能或者不可能出现在爱句子中。比如,在语音识别中,语言模型与声学模型相结合,用以模拟不同单词的发音。具体的实现步骤,一种
    想法是,声学模型产生很多的候选句子,然后利用语言模型对所有的候选句子进行一个排序,从而确定一个概率最大的句子。

  2. 我们描述并且定义函数 p 的技术,也就是从训练样本中得到模型的参数估计,这种方法有助于应用到其他语境中。比如,隐马尔科夫模型,自然语言解析模型。


参考:COMS W4705: Natural Language Processing

本文转载自:http://www.jianshu.com/p/792157be1b1c

AllenOR灵感
粉丝 11
博文 2635
码字总数 83001
作品 0
程序员
私信 提问
R语言从入门到精通(干货整理)

R语言从入门到精通|共有6套课程,127个课时,这门课的讲师谢佳标,是WOT峰会讲师,中国R语言大会讲师,高级数据分析师,8年以上数据挖掘建模工作实战经验,有部分研究成果获国家专利。 1. R...

让往事随风
2016/04/01
221
0
学习资料参考:从深度学习到自然语言处理

学习资料参考:从深度学习到自然语言处理 注意:本文已经更新,新版结合深度学习简介和发展历程,给出了更详尽的学习资料参考。新版链接:深度学习简介与学习资料参考 本文主要介绍一些与和相...

PeterYuan
2016/04/07
0
0
C#.NET开源项目、机器学习、足球赛事资料库

微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解) 阅读目录 1.微软牛津计划介绍 2.人脸识别(Face APIs)介绍 3.语音识别(Speech APIs)介绍 4.计算机视...

李朝强
2016/02/25
157
0
18个R语言教程

实验楼上有不少的R语言开发教程,这里做一个整理总结,你可以挑选自己感兴趣的教程进行学习,希望对学习R语言的小伙伴有所帮助; 概览如下:1个入门教程 + 4个根据书籍制作的项目教程 + 3个进...

实验楼
2017/10/30
0
0
神经网络语言建模系列之六:字符级模型

语言建模一直均以分词为最小单位,即词级语言模型。后来研究者尝试在字符级别进行语言建模,提出了数种字符级的语言模型,其中最为成功是Y. Kim and et. al. (2015)提出的模型。字符级语言模...

施孙甲由
06/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js中将字符串转换成json的三种方式

使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON )。 ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5) 中JSON的概念被正式引入了...

物种起源-达尔文
4分钟前
0
0
centos7下面python3.7安装

我这里使用的是CentOS7,默认系统自带python2.7的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的...

chenhongjiang
10分钟前
1
0
带你入门SpringCloud统一配置 | SpringCloud Config

前言 在微服务中众多服务的配置必然会出现相同的配置,如果配置发生变化需要修改,一个个去修改然后重启项目的方案是绝对不可取的。而 SpringCloud Config 就是一个可以帮助你实现统一配置选...

桌前明月
10分钟前
0
0
9.21 日常记录

先说说最近的状态: 一句话,很不好。缺失了目标感,做什么事都是浑浑噩噩的。 每天都是想着轻松的活路去做复习,没有看书,根本没有去思考如何让自己变得更好。 回想起年初的约定,也是一个...

Garphy
19分钟前
0
0
借助Python 函数进行模块化代码

你是否对函数、类、方法、库和模块等花哨的编程术语感到困惑?你是否在与变量作用域斗争?无论你是自学成才的还是经过正式培训的程序员,代码的模块化都会令人困惑。但是类和库鼓励模块化代码...

问题终结者
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部