ITPub博客

首页 > > > 8 语言模型简介

8 语言模型简介

作者:RayChou 时间:2019-12-30 10:25:28 0 删除 编辑

前言

  同学们好,很快我们来到了本专栏的尾声了。相信同学们学习了前面的内容后已经可以对NLP这个领域有了大致的认识。自然语言可谓千变万化,计算机要学习人类的语言实属一件难事,毕竟计算机只是一个“算数”很快的小学生。但万变不离其中,只要掌握它里面的规律,小学生还是能够学会的。在专栏的末章,我们将来介绍一下NLP中最基础的也是最难的“语言模型”以及现时最流行的一些语言模型算法。


语言模型

听到“语言模型”这个词很多同学陌生。那什么是语言模型呢?简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率。例如有这样两句话,“今天的天气真好”和“天气真好的今天”。显然P(1)>P(2),前面的句子是人话的概率比后面的概率要大得多。“语言模型”就是让计算机能自动判别一句句子是否为人话。它实际上就是计算一个是人话的概率。那么如何计算一个句子的概率呢?我们拿第一个句子举例,

S=“今天“,“的”,“天气“,“真好”

它的概率可以表示为:

说到这里可能就有疑惑了,让计算机识别人话的概率有什么作用呢?不得不说,里面的门道可深了。在前言中我说过,“语言模型”是NLP中最基础也是最难的,从本质上说,语言模型的功能是尽可能多地封装所考虑的任务的语法、语义和语用特征。就其应用而言,语言模型用于表示一系列词语的概率分布。假设给定一个长度为m的序列,语言模型可以生成一个对应的$P ( w_1 , … , w_m ) $的概率。语言模型应用广泛,包括语音识别领域、OCR字符识别、手写体字符识别、信息检索等。

语言模型通常分为两类:基于规则的语言模型和基于统计的语言模型。基于规则的语言模型又称文法型语言模型,人工编制的语言学文法,文法规则来源于语言学家掌握的语言学知识和领域知识。现阶段以统计学为基础的统计语言模型广泛使用,包括n-gram语言模型、指数语言模型、基于神经网络的语言模型等。由于篇幅的关系,在本节我们主要介绍一下n-gram模型和神经网络模型。


1、N-gram语言模型

现在同学们已经知道了什么是语言模型,那首先会遇到一个问题,如果利用上文的公式计算句子概率,万一遇到长句子时计算最后一个词的概率P(Xk|X1,X2,..,Xk-1)会变得非常麻烦,假设一下这样一句话,“今天街上的人真多,我现在有点渴了,去买水喝吧”。当我们预测“水”这个词时感觉和最前面的人真多没啥关系,而是跟旁边的“渴”有紧密关系。那我们是不是可以对公式进行一定的简化呢?当然可以,最早成功解决这一问题的语言模型就是基于长度序列的标记模型,简称为N-gram模型。它基于这样一个马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的一个或者几个词有关。那么在计算一个词的概率时,公式化简为以下公式:

我们只要将化简的公式代入前文的概率计算公式,即可计算一个句子的概率。n-gram语言模型的出现,解决了用普通的条件概率计算句子概率参数太多难以训练的问题,理论上来说n取得越大保留的词序信息就越多,生成的句子越合理,但如果n取得比较大,同样会面临数据稀疏的问题。一般来讲,n一般不会超过3, 否则参数空间过大,数据稀疏严重,对于非常对多词对的组合,在语料库中没有出现,依据最大似然估计得到的概率将会是0。对于小的n 值,模型有特定的名称:n = 1 称为一元语法(unigram),n = 2 称为二元语法(bigram)及n = 3 称为三元语法(trigram)。在日常中的应用中,应用得最多的为bigram模型。


2、神经网络语言模型

在上文提到过N-gram的出现很好地解决了自由参数多的问题,但是数据稀疏的问题还是没有解决。不慌,难题总能被突破的,别忘了我们不还有“神经网络”这一利器嘛,俗话说“神经网络”治百病,那就试试看呗。与N-gram语言模型相同,神经网络语言模型(NNLM)也是对n元语言模型进行建模,估计P(xi|xi−n+1,xi−n+2,...xi−1)P(xi|xi−n+1,xi−n+2,...xi−1)的概率,与统计语言模型不同的是,神经网络语言模型不通过计数的方法对nn元条件概率进行估计,而是直接通过一个神经网络对其建模求解。我们先来看下面的图,

读过前面内容的同学有没有发现这个图好熟悉,没错这个就是Word2vec的模型结构。我们依然来用这个例子,“美丽的珠海是经济特区”。我们把中间的“珠海”抠掉,然后用前后的三个词去预测珠海这个词的概率。在讲Word2vec的时候,我们并没有使用整个模型,而仅仅使用了隐藏层的参数从而获取每个词的词向量。其实Word2vec说白了也就是训练一个语言模型。

利用神经网络去建模当前词出现的概率与其前 n-1 个词之间的约束关系。很显然这种方式相比 n-gram 具有更好的泛化能力,只要词表征足够好。从而很大程度地降低了数据稀疏带来的问题。但是这个结构的明显缺点是仅包含了有限的前文信息。


小结

  本节我们介绍了语言模型以及常用的N-gram模型和神经网络模型。前者解决了用普通的条件概率计算句子概率参数太多难以训练的问题,但是没有解决数据稀疏的问题。而后者可以解决数据稀疏问题,但依然只包含了有限的信息。在接下来的篇幅,我要介绍几样“重型武器”,它们在NLP领域均取得优异的成绩。敬请关注接下来的内容,如你对本节有疑惑,欢迎在讨论区和我讨论。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954080/viewspace-3132155/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
现任金山办公软件人工智能组高级AI研发工程师。多年从事机器学习,特别是NLP自然语言处理算法的研究及开发工作。拥有丰富的软件开发经验,以及丰富的人工智能算法训练平台开发经验。

注册时间:2019-11-14

  • 博文量
    71
  • 访问量
    60565