自然语言处理NLP(2)——统计语言模型、语料库

在上一部分中,我们已经了解了自然语言处理的基本知识:自然语言处理NLP(1)——概述。

在这一部分中,我们将简要介绍NLP领域的基本模型——语言模型,我们还将对自然语言处理的基础——语料库的概念进行介绍。这些都是在学习自然语言处理之前所必备的知识。此外,我们默认大家有一定的信息论和概率论基础,在这里不对信息论和概率论知识进行赘述。

接下来,我们进入正题。

 

【一】语言模型

在这一部分中,我们讨论的语言模型主要是统计语言模型,除此之外,我们在今后的文章中还会对神经网络语言模型进行介绍。

所谓语言模型,就是利用数学的方法描述语言规律。而统计语言模型,就是用句子S出现的概率P(S)来刻画句子的合理性(而不进行语言学分析处理),这是统计自然语言处理的基础模型。

假设句子S=w1,w2,...,wn,其中,wi可以暂时看作句子中的第i个词(在后面会进行具体介绍)。由于自然语言是上下文相关的信息传递方式,可以很自然地讲句子S出现的概率定义如下:

P(S) = P(w1)P(w2|w1)...P(wn|w1,w2,...wn-1)

特别地,当i=1时,P(w1|w0) = P(w1),概率定义与条件概率相同。

在统计语言模型中,输入是句子S,输出是句子S的概率P(S),模型参数是各个P,即,P(wi|w1,w2,...,wi-1)。

wi被称为统计基元,可以是字、词、短语、词类等等,通常以“词”代替;

wi由w1,w2,...wi-1决定,由特定一组w1,w2,...wi-1构成的一个序列称为wi的历史。

 

说到这里,相信大家已经发现了一个很现实却很重要的问题:在这个模型中,参数的数量也太多了!

假设我们的统计基元个数为L(在这里可以将其理解为词汇表),那么一句话中的第i个基元就有L^(i-1)种不同的历史情况。我们必须考虑到这所有不同的历史情况下产生第i个基元的概率,于是,对于长度为m的句子,模型中有L^m个自由参数P(wm|w1…wm-1)。

这样算来,这会是一个很可怕的参数数量,假设L = 5000(词汇表中的词数有5000不过分吧),m = 3,模型中的自由参数就达到了1250亿!这还仅仅是对应着一个三个词的句子,而汉语中平均每句话中有22个词,这将是一个天文数字。

要解决这个问题,就要减少历史基元的个数,也就是减少决定wi的历史词的数目。

等等!看到这里,是不是有点熟悉,这不就是大名鼎鼎的马尔可夫链嘛!(不熟悉马尔可夫链的朋友们可以自行百度一下~)

没错,我们称其为马尔可夫方法:假设任意一个词wi出现的概率只与它前面的wi-1有关,将原模型简化为二元模型:

P(S) = P(w1)P(w2|w1)...P(wi|wi-1)...P(wn|wn-1)

在此基础上,提出n元文法(n-gram):一个词由它前面的n-1个词决定(注意,是n-1哦,不是n)。

一元文法(1-gram):n=1,P(wi|w1,w2,...,wi-1) = P(wi),出现在每一位上的基元wi独立于历史;

二元文法(2-gram):n=2,P(wi|w1,w2,...,wi-1) = P(wi|wi-1),1阶马尔可夫链;

三元文法(3-gram):n=3,P(wi|w1,w2,...,wi-1) = P(wi|wi-2,wi-1),2阶马尔可夫链;

……

以此类推。

理论上讲,n元文法中的n越大越好(越能保留句子词之间的相关性),但是正如上文所说,n越大也就意味着需要估计的参数越多。一般来讲,n=3用得相对较多,n=4的时候参数就已经太多了。

值得注意的是,即使采用n较大的高阶模型,也无法覆盖全部的语言现象(因为现阶段,对于人类来讲,语言依然是一个谜)。

 

了解了语言模型之后,问题来了:如何估计语言模型的参数呢?(用于计算P(S)的各个P(wi|wi-n+1,...,wi-1)值)

利用极大似然估计(Maximum Likelihood Evaluation,MLE)。

从个人理解的角度出发,我认为利用极大似然估计在语料中统计语言模型参数的过程,可以形象化地概括为两个字:数(三声)数(四声)。

极大似然估计的过程大致如下:

假设我们的语料库中只有三句话(语料库的概念将在后面进行介绍):

1. John read Moby Dick
2. Mary read a different book
3. She read a book by Cher

现在,我们想要估计2-gram模型中,‘John read a book’ 这句话出现的概率。

P(‘John read a book’ ) = P(John|<BOS>)P(read|John)P(a|read)P(book|a)P(<EOS>| book),其中<BOS>和<EOS>分别表示句子的开始符和结束符。

我们可以从语料中(1,2,3一共三句话)统计得到:

P(John|<BOS>) = 1/3,因为<BOS>出现了三次(每个句子的开始),后面接John的有一次——即,John出现在句首;

P(read|John) = 1/1,因为John出现了一次,后面接read的有一次;

P(a|read) = 2/3,因为read出现了3词,后面接a的有两次;

P(book|a) = 1/2,因为a出现了2次,后面接book的有一次;

P(<EOS>| book) = 1/2,因为book出现了2次,book出现在句子结尾(后面接<EOS>)的有1次。

因此,P(S) = 1/18。

通过这个小小的例子,我们可以发现,语言模型可以预测句子的下一个词(已知前面的词),也可以计算一句话出现的概率,决定哪一个词序列出现的概率大。

下面,我们再举一个例子:

还是上面的语料库,还是使用2-gram,我们想要求‘Cher read a book’的概率。

看起来没什么问题啊,按着上面的套路做就可以了啊,但是在实际计算的时候我们发现:P(Cher|<BOS>) = 0,Cher这个词根本就没有出现在句首过!

这也就意味着,无论后面几个概率值是多少,我们计算出来的整个句子出现的概率都是0。

这个问题被称为零概率问题,是由数据稀疏(匮乏)造成的。

那么遇到了这个问题,该如何解决呢?

进行数据平滑。

数据平滑的方法有很多种,在这里不一一进行赘述,有兴趣的朋友可以自行百度了解。

总之,数据平滑之后,不会出现上面例子中出现的零概率问题,我们就可以安安心心地用语言模型计算一句话出现的概率啦~

 

到这里,对语言模型的介绍就基本结束了,我们还剩下一些边边角角的问题需要解决:比如,如何评价语言模型。

目前,语言模型的评价一般有两种方法:

1.实用方法:通过查看该模型在实际应用(如机器翻译)中的表现来评价,优点是直观、实用,缺点是缺乏针对性、不够客观。

2.理论方法:为了评价语言模型,提出了一个“困惑度”的概念,方法如下:

平滑过后的n-gram模型句子的概率为(与语言模型中的描述相同):P(S) = P(w1)...P(wi|wi-n+1,...,wi-1)...

假设测试语料T由k个句子t1,t2,...,tk构成,那么整个测试集T的概率为:p(T) = P(t1)P(t2)...P(tk)

定义模型对于测试预料的交叉熵为:

其中,分母项为测试语料T中的词数(可以理解为测试文本集的单词表)。

定义模型的困惑度为:

困惑度越低,模型评价越高。

 

在这里,多说几句题外话:

对于一个模型而言,最重要的部分有四个:输入、输出、参数、对应关系(函数)。

对于任何一个模型而言,把握住这四个基本要素,相信会帮助大家理解得更加透彻(特别是今后我们会提到的神经网络)。

 

【二】语料库(corpus)

语料库是什么?

语料库就是,存放在计算机里的原始语料文本 或 经过加工后带有语言学信息标注的语料文本。为了方便理解,我们可以将其看作一个数据库,我们从中提取语言数据,以便对其进行分析、处理。

 

语料库有三点特征:

1.语料库中存放的是在实际使用中真是出现过的语言材料。

2.语料库是以计算机为载体承载语言知识的基础资源,但并不等于语言知识。

3.真实语料需要经过分析、处理和加工,才能成为有用的资源。(这一点尤为重要,在NLP知识的学习中,需要对语言原材料进行一系列的处理才能够使用)

 

在这里,不对语料库进行系统的介绍,仅需要了解“我们可以从中提取语言数据来用”就可以啦~

如果有朋友对语料库的分类和现阶段一些著名的语料库感兴趣,可以自行百度了解~

 

现在,我们已经对统计语言模型和语料库有了基本的了解,在下一部分的内容中,我们将介绍神经网络语言模型和一些在NLP领域常用的基本的神经网络。

 

如果本文中某些表述或理解有误,欢迎各位大神批评指正。

谢谢!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69808.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一起来学自然语言处理----语料库和词汇资源

语料库和词汇资源 1、自然语言工具包&#xff08;NLTK&#xff09;2、获取文本语料1.语料库古腾堡语料库网络和聊天文本布朗语料库路透社语料库就职演说语料库标注文本语料库在其他语言的语料库语料库结构载入自己的语料库 2.条件频率分布理解条件频率分布使用双连词生成随机文…

【自然语言处理】浅谈语料库

文章目录 【自然语言处理】浅谈语料库前言一、浅谈语料库1、语料和语料库2、语料库语言学3、 建议语料库的意义 二、语料库深入了解1、语料库划分与种类2、语料库构建原则3、语料标注的优缺点 三、自然语言处理工具包&#xff1a;NLTK1、 了解NLTK2、 获取NLTK3、 Standford NL…

NLP浅谈语料库

NLP浅谈语料库 1. 浅谈语料库 1.1 语料和语料库 ​ 语料通常指在统计自然语言处理中实际上不可能观测到大规模的语言实例。所以人们简单地用文本作为替代&#xff0c;并把文本中的上下文关系作为现实世界中语言的上下文关系的替代品。 ​ 语料库一词在语言学上意指大量的文…

任正非谈成功秘诀:28年只对准一个城墙口冲锋

文/记者 赵东辉、李斌、刘诗平、蔡国兆、彭勇、何雨欣 任正非和华为公司&#xff0c;堪称当代商业史上的传奇。 1987年&#xff0c;年满43岁的任正非和5个同伴集资2&#xff0e;1万元成立华为公司&#xff0c;利用两台万用表加一台示波器&#xff0c;在深圳的一个“烂棚棚”里起…

AI流量监控,哪些AI应用正在迅速崛起?

“ 通过对网站数据分析工具SimilarWeb的数据监控&#xff0c;观察AI相关站点的网站访问量变化&#xff0c;来发掘AI应用端的变化趋势&#xff0c;找到当下最火爆的AI应用。” AI网站访问量数据变化 访问量成长周冠军 LLamaIndex本周流量成长冠军是llamaindex.ai&#xff0c;周访…

chatgpt赋能python:Python不报错,为什么还是运行不了?

Python不报错&#xff0c;为什么还是运行不了&#xff1f; 如果你是一位有着10年 Python 编程经验的工程师&#xff0c;你很可能会遇到这样的问题&#xff1a;代码没有报错&#xff0c;但运行时却出现了一些奇怪的问题。 在这篇文章中&#xff0c;我们将着重探讨这个问题&…

CTFHub | 前端验证

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

chatgpt赋能python:Python绕过验证码分析

Python绕过验证码分析 介绍 验证码&#xff08;CAPTCHA&#xff09;是一种常见的人机验证机制&#xff0c;用于保护网站不被自动化机器人恶意攻击。但是&#xff0c;对于一些恶意攻击者而言&#xff0c;绕过这种验证机制是他们完成攻击的必由之路。Python是一种强大的编程语言…

如何区分GPT3.5和4?

切换模型 前两天申请的GPT 4的API调用权限终于申请下来了。 这两天我也是抓紧开发&#xff0c;让自己搭建的国内网站&#xff08;aichatroom.cn&#xff09;可以快速支持上使用GPT 4。 GPT 3.5和GPT4的区别 GPT-3.5 和 GPT-4 分别代表了 OpenAI 发布的两个不同版本的自然语言处…

2021年度泰晤士全球大学【计算机科学排名】公布

转载于 青塔 泰晤士世界大学学科排名&#xff08;THE World University Rankings by Subject&#xff09;涵盖工程技术、理学、生命科学、计算机科学、教育学、临床前期与临床健康、商业与经济、法学、社会科学、艺术与人文、心理学等11个学科领域。 学科排名采用与世界大学排名…

再见正则表达式!这次彻底告别手写!

这篇文章的目的是让你能得到完美的正则表达式&#xff0c;而且还不用自己拼。 说到正则表达式&#xff0c;一直是令我头疼的问题&#xff0c;这家伙一般时候用不到&#xff0c;等用到的时候发现它的规则是一点儿也记不住&#xff0c;\d表示一个数字&#xff0c;\s表示包括下划…

软银成功收购波士顿动力,收获顶尖的机器人技术

波士顿动力&#xff08;Boston Dynamics&#xff09;在机器人领域里属于顶尖的研发公司&#xff0c;而这家在行业内取得了巨大成功的公司&#xff0c;却被Alphabet(谷歌母公司)整体出售给日本软银&#xff0c;并且与Boston Dynamics一起被出售的是日本本土的一家机器人公司Scha…

深度学习经典入门项目—波士顿房价预测

目录 房价预测--线性回归数据处理数据形状变换数据集划分数据归一化处理housing.data数据格式 模型设计线性回归模型设计 训练配置训练过程保存并测试模型保存模型测试模型 房价预测–线性回归 波士顿房价预测数据集是经典的机器学习、深度学习入门的数据集。下面我们用这个数…

本周AI热点回顾:波士顿动力机器狗去新西兰放羊了、微软WSL将支持GPU、ERNIE-GEN刷新SOTA

01 波士顿动力机器狗去新西兰放羊了&#xff01;网友&#xff1a;不努力连狗都不如 波士顿动力的科学家可能做梦也没想到&#xff0c;他们研制出来的Spot机械狗&#xff0c;刚刚商用&#xff0c;就被训练来放羊了。 新西兰&#xff0c;一个因为牛奶和羊毛被中国人熟知的国家&am…

机器学习项目实践——波士顿房价预测

基于线性回归预测波士顿房价 摘要&#xff1a;分类和回归属于机器学习领域有监督学习算法的两种方法&#xff0c;有监督学习是通过已有的训练样本去训练得到一个模型&#xff0c;再使用这个模型将所有的输入映射到相应的输出&#xff0c;若输出结果是离散型称为分类&#xff0…

起底网红机器人波士顿动力

关注网易智能&#xff0c;聚焦AI大事件&#xff0c;读懂下一个大时代&#xff01; 这家“网红”机器人公司又火了。 最近&#xff0c;接连发布的两条波士顿动力机器人的最新视频让不少人感到惊讶&#xff0c;一段是发布于今年10月11日标题为“跑酷阿特拉斯”的视频&#xff0c;…

重磅干货!揭秘波士顿动力背后的专利技术

【导读】本文从波士顿动力背后申请的专利入手,从动力系统、步态分析,详细探讨了波士顿动力机器人背后的技术实现。 波士顿动力四足机器人的发展历程(前世今身) 相比于轮式或履带机器人,波士顿足式机器人具有更强的地形适应能力,身体十分灵活,可以在各种崎岖不平的地面行…

机器学习实战演练 波士顿房价预测与模型评估

介绍数据集&#xff1a; 本数据集共有506个样本&#xff0c;每个样本有13个特征及标签MEDV 特征信息&#xff1a; CRIM 城镇人均犯罪率 ZN 占地面积超过2.5万平方英尺的住宅用地比例 INDUS 城镇非零售业务地区的比例 CHAS 查尔斯河虚拟变量 ( 1 如果土地在河边&#xff1b;否则…

这就是波士顿动力第一款商用产品「机器狗」Spot

波士顿动力 CEO Marc Raibert 告诉《The Verge》称&#xff0c;最近 Spot 正在大量的「概念验证」环境下接受测试&#xff0c;包括包裹递送和监控作业。他表示&#xff0c;尽管商用版 Spot 没有具体的上线日期&#xff0c;但应该会在几个月内与公众见面&#xff0c;并且年底前肯…

波士顿动力9.21亿美元被卖,地主家也养不起网红机器狗

据韩国经济日报消息&#xff0c;消息人士透露在今天上午的董事会上&#xff0c;韩国现代集团确认将以不到一万亿韩元&#xff08;约9.21亿美元&#xff09;收购波士顿动力。 消息人士称&#xff0c;为完成波士顿动力收购&#xff0c;现代汽车已聘请高盛&#xff08;Goldman Sa…