2023人工自能机器算法自然语言处理.docx
《2023人工自能机器算法自然语言处理.docx》由会员分享,可在线阅读,更多相关《2023人工自能机器算法自然语言处理.docx(77页珍藏版)》请在课桌文档上搜索。
1、人工自能机器算法自然语言处理目录第1章自然语言处理21.1 语言模型31.2 文法181.3 句法分析211.4 扩展文法291.5 真实自然语言的复杂性361.6 自然语言任务41第2章自然语言处理中的深度学习451.1 词嵌入461.2 自然语言处理中的循环神经网络511.3 序列到序列模型57第1章自然语言处理在本文中,我们将看到计算机如何使用自然语言与人类进行交流,并从人类所书写的内容中学习。大约10万年前,人类学会了如何说话,大约5千年前,人类又学会了如何写字。人类语言的复杂性和多样性使得智人区别于其他所有物种。当然,人类还有一些其他的特有属性:没有任何其他物种像人类那样穿衣服,进行
2、艺术创作,或者每天花两小时在社交媒体上交流。但是,艾伦图灵所提出的智能测试是基于语言,而非艺术或服饰,也许是因为语言具有普适性,并且捕捉到了如此多的智能行为:一个演讲者演讲(或作家写作)的目标是交流知识,他组织语言来表示这些知识,然后采取行动以实现这一目标。听众(或读者)感知他们的语言并推断其中的含义。这种通过语言的交流促进了文明的发展,是我们传播文化、法律、科学和技术知识的主要方式。计算机进行自然语言处理(naturallanguageprocessing,NLP)有以下3个主要原因。 与人类交流。在很多情况下,人类使用语音与计算机进行交互是很方便的,而且在大多数情况下,使用自然语言要比使用
3、一阶谓词演算等形式语言更加方便。 学习。人类已经用自然语言记录了很多知识。仅维基百科就有30()()万页事实知识,例如“婴猴是一种夜间活动的小型灵长类动物”,然而几乎没有任何一个这样的知识来源是用形式逻辑写成的。如果我们想让计算机系统知道很多知识,它最好能理解自然语言。 使用人工智能工具结合语言学、认知心理学和神经科学,促进对语言和语言使用的科学理解。在本文中,我们将探讨语言的各种数学模型,并讨论使用这些模型可以完成的任务。1.l语言模型正如我们在第8章中所看到的,形式语言(如一阶逻辑)是精确定义的。文法(grammar)定义合法句的句法(syntax)m,语义规则(semanticrule)
4、定义其含义。11在形式语言学和计算机学科中,“grammar”的标准翻译是“文法”,而在计算语言学中则多译作悟法”(摘自中国计算机学会通讯第5卷,第4期,2009,4),而“syntax”有时也译作“语法L在本书中为了区分两个概念,我们将“grammar”译作“文法”,将“syntax”译作“句法”。译者注然而,自然语言(如英语或汉语)无法如此清晰地表示。不同的人在不同的时间对于语言的判断会有所差别。所有人都会认为“Nottobeinvitedissad.”是一个合乎文法的英语语句,但是对于“Tobenotinvitedissad.”的合乎文法性则存在分歧。自然语言是存在歧义的(“Hesawh
5、erduck”可以理解为“他看到了她的鸭子”,也可以理解为“他看到她躲避某物“),也是模糊不清的LThWsgreat!”没有准确说明它有多么好,也没有说明它是什么)。自然语言没有正式定义从符号到对象的映射。在一阶逻辑中,“Richard”符号的两次使用必须指同一个人,但在自然语言中,同一单词或短语的两次出现可能指代世界上不同的事物。如果我们不能在合乎文法字符串和不合文法字符串之间做出明确的布尔判别,我们至少可以知道每个字符串的可能性或不可能性有多大。我们将语言模型(IangUagemodel)定义为描述任意字符串可能性的概率分布。这样一个模型应该认为“DoIdaredisturbtheUniV
6、erse?”作为一个英语字符串具有合理的概率,而“UniversedaretheIdisturbdo?是英语字符串的可能性极低。通过语言模型,我们可以预测文本中接下来可能出现的单词,从而为电子邮件或短信息提供补全建议。我们可以计算出对文本进行哪些更改会使其具有更高的概率,从而提供拼写或文法更正建议。通过一对语言模型,我们可以计算出一个句子最可能的翻译。用一些示例问题答案”对作为训练数据,我们可以计算出针对某一问题的最可能的答案。因此,语言模型是各种自然语言任务的核心。语言建模任务本身也可以作为衡量语言理解进度的通用基准。自然语言是复杂的,因此任何语言模型充其量只能是自然语言的一个近似。语言学家
7、爱德华萨丕尔(EdwardSwir)曾说“没有一种语言是绝对一成不变的,任何文法都会有所遗漏“(S叩ir,1921)o哲学家唐纳德戴维森(DonaldDavidson)说过“如果语言是一个明确定义的共享结构的话,就不存在语言这种东西”(DaVidSon,1986),他的意思是说,没有一种像PythOn3.8那样的确定性的英语语言模型,我们都有不同的模型,但我们仍然设法应对过去了,并进行交流。在本节中,我们将介绍一些简单的语言模型,这些模型显然是错误的,但是对某些任务来说仍然有用。1.1.1词袋模型1261节介绍了基于特定单词的朴素贝叶斯模型如何可靠地将句子分类。例如,下面的句子1被分类为bus
8、iness,句子2被分类为Weather。(1) StocksralliedonMonday,withmajorindexesgaining1%asoptimismpersistedoverthefirstquarterearningsseason.(2) HeavyraincontinuedtopoundmuchoftheeastcoastonMonday,withfloodwarningsissuedinNewYorkCityandotherlocations.在这一节,我们将回顾朴素贝叶斯模型,并将其转换为完整的语言模型。这意味着我们不仅想知道每个句子最可能属于哪一类别,我们还想知道所有
9、句子和类别的联合概率分布。这意味着我们应该考虑句子中的所有单词。给定一个由单词曲,W?,Wn组成的句子(参考第14章,我们将其记为叼.W),根据朴素贝叶斯公式式(12.21),我们有P(ClaSSIWIw)=aP(Class)YP(wjClass)朴素贝叶斯方法在字符串上的应用称为词袋模型(bag-ofwordsmodel)o它是一种生成模型,描述了句子生成的过程:想象一下,对于每个类别(businessWeathel等),我们都有一个装满单词的袋子(你可以想象每个单词都写在袋子内的纸条上,一个单词越常见,重复的纸条就越多)。要生成一段文本,首先选择其中一个袋子并丢掉其他袋子。从那个袋子中随机
10、抽出一个单词,这将是句子的第一个单词。然后将这个单词放回并抽取第二个单词。重复上述操作直到出现句末指示符(如句号)。这一模型显然是错误的:它错误地假设每个单词都与其他单词无关,因此无法生成连贯的英语语句。但它确实使得我们可以使用朴素贝叶斯公式来进行准确分类:“stocks”和“earnings”这两个词明显指向business类,而“rain和“cloudy”两个词贝Ij指向Weather类我们可以通过在文本正文或语料库(corpus)上进行监督训练来学习该模型所需的先验概率,文本的每个部分都标有它的类别。一个语料库通常由至少一百万字的文本和上万个不同词汇组成。最近,我们正在使用更大的语料库,
11、例如,拥有25亿词的维基百科和拥有140亿词的iWeb语料库(来自2200万个网页)。使用语料库,我们可以通过计算每一类别的常见程度来估计它们的先验概率P(Css)我们还可以使用计数来估算给定类别的每个单词的条件概率网吗Iaa苗)。例如,如果总共有3OOO条文本,其中300条被分类为business,那么我们可以估计P(Css=business)300/3000=0.1o如果在business类中,总共有100OOo个单词,而“stocks”一词出现了700次,那么我们可以估计P(*oc依IClass=business)700/100000=0.007o当单词数目很大(且方差较小)时,通过计数
12、进行估计的效果很好,但是在23.1.4节中,我们将看到一种在单词数目较小时估计概率的更好的方法。有时,选择另一种机器学习方法(如逻辑斯谛回归、神经网络或支持向量机)可能比朴素贝叶斯方法效果更好。机器学习模型的特征是词汇表中的单词:“a”“aardvark”zyzzyva,值是每个单词在文本中出现的次数(或者是一个布尔值,表示该单词是否在文本中出现)。这导致特征向量是高维且稀疏的在语言模型中,可能有100000个单词,因此特征向量的维数为1()()OOOo但是对短文本来说,特征向量的绝大部分特征都是0。正如我们所看到的,当我们进行特征选择(featureselection),g制特征为单词中的一
13、个子集时,某些机器学习模型效果会更好。我们可以删除非常罕见的单词(因为这些词的预测能力差异很大)和所有类别共有但对分类不起作用的单词(如“the”)。我们还可以将其他特征与基于单词的特征混合使用;例如,如果我们要对电子邮件进行分类,则可以为发件人添加以下特征:发送消息的时间、主题标题中的单词、是否存在非标准标点符号、大写字母的百分比、是否有附件等。注意,判断单词是什么并不容易。“arenV是一个单词,还是应该将它分解为“aren/t”或“areht”或其他形式?将文本划分为单词序列的过程称为分词(tokenization)。1.1.2 n元单词模型词袋模型具有一定局限性。例如,quarter”
14、一词在business和sports类中都很常见。但是“firstquarterearningsreport”这一由4个单词电成的序列只在business类中常见,4fourthquartertouchdownPaSSeS则只在SPOitS类中常见。我们希望模型可以做出区分。我们可以调整词袋模型,将“flrstquarterearningsreport”这样的特殊短语视为单个单词,但更具原则性的方法是引入一种新模型,其中每个单词都依赖于之前的单词。我们可以先让单词依赖于它所在句子中之前的所有单词:P(WLN)=(!Pg/吗,7)7=1这个模型在某种意义上是完全“正确”的,因为它捕捉了单词间所有
15、可能的交互,但它并不实用:当词汇表中有1()()OOo个单词,句子长度为40时,模型需要估计10项个参数。我们可以使用马尔可夫链模型折中,它只考虑个相邻单词之间的依赖关系,我们称之为n元模型(小grammodel)(gram源自希腊语词根g117?仍意为“写下的东西“):长度为的芋面符号序列称为元。当个别为1、2和3时,我们将於别称作一元(unigram,即1-gram)、二元(bigram,即2-gram)和三元(trigram,即3-gram)。在元模型中,每个单词出现的概率仅依赖于前面的T个单词,也就是说:12注意,元的书面符号序列的元素可以是单词、字符、音节或其他元素。编者注P(Wjl
16、W叮T)=P(WW-)NP(Wlw)=11P(W.IJ=I元模型适用于对报纸版面进行分类,它在其他分类任务上表现得也很好,如垃圾邮件检测(SPamdeteCtiOn)(区分垃圾邮件和非垃圾邮件)、情感分析(Sentimentanalysis)(将电影或商品评论分类为正面评价或负面评价)以及作者归属(authorattribution)(海明威与福克纳或莎士比亚的写作风格和使用词汇不同)。1.1.3 其他n元模型元单词模型的一种替代方法是字符级模型(character-levelmodel),其中每个字符的概率由之前的T个字符决定。这种方法有助于处理未知单词,也有助于处理倾向于将单词放在一起的语
17、言,如丹麦语单词“Speciallaegepraksisplanlagningsstabiliseringsperiode”。字符级模型适用于语言识别(IangUageidentification)任务,即给定一个文本,确定它是用哪种语言写的。即使是非常短的文本,如“Hello,WOrId”或Wiegeht飞dir”,元字母模型也可以将第一个文本识别为英语,第二个文本识别为德语,通常可以达到99%以上的准确率。(像瑞典语和挪威语这样紧密相关的语言则比较难区分,通常需要更长的样本。对于这类语言,准确率在95%以内。)字符模型非常擅长某些特定的分类任务,例如,将“dextroamphetamine
18、”识别为药品名称,“Kallenberger”识别为人名,“Plattsburg”识别为城市名,即使模型从未见过这些单词。另一种可能的模型是跳字(SkiP-gram)模型,我们收集那些距离相近的单词,但是跳过它们之间的一个(亭多个)单词。例如,给定、法语文本jenecomprendspas”,一跳二元(1-skip-bigram)应为与eCOmPrendS”和“nepas”。夜集这些内容有助于创建童好的法语模型,由为它告诉我们关于动词的词形变化(“je”之后应该用“comprends”,而不是“comprend”)和否定形式(“ne”应该与“pas”搭配)的信息。仅仅使用常规的二元模型,我们无
19、法学到这些内容。1.1.4 n元模型的平滑像)fthe”之类的高频元在训练语料库中的计数值很高,因此它们的概率估计很可能是准确的:即使使用不同的训练语料库,我们也会获得相似的估计值。而低频元由于计数值很低,容易受到随机噪声的干扰,方差较大。如果可以减小这种方差,我们的模型将表现得更好。止匕外,我们可能需要处理包含未知单词或未登录词(out-of-Vocabulary)的文本。虽然未知单词或未登录词从未在训练语料库中出现过,但将这类单词的概率设为O是错误的,因为整个句子的概率(叼川)也将变为0。对未知单词进行建模的一种方法是修改训练语料库,用特殊符号替换不常见单词,一般替换为UNK。我们可以提前
20、决定只保留部分单词。例如,50OOO个最常见的单词,或者频率超过0.0001%的所有单词,并将剩下的单词替换为unk。然后,我们照常对语料库中的几元计数,把unk符号看作同其他任意单词一样。当测试集中出现未知单词时,我们查找UNK的概率。有时,对于不同的类型,我们会使用不同的未知词符号。例如,可以用NUM替换一串数字,或者用EMA工L替换电子邮件地址。我们注意到,使用一个特殊符号,如S,来标记文本的开始(和结束)也是可取的。这样,当二元概率公式需要使用文本第一个单词前面的单词时,可以取到S,而不是错误。即使处理了未知单词,我们也会遇到未知元的问题。例如,测试文本可能包含短语“colorless
21、aquamarineideas,这3个单词可能在训练语料库中分别单独出现过,但从未以短语中的顺序出现。问题在于,一些低概率的元出现在训练语料库中,而其他同样低概率的元却从未出现。我们不希望其中一部分概率为0,而另一部分概率为一个很小的正数。我们希望对所有相似的元进行平滑(smoothing)处理为从未出现在训练语料库中的元保留模型的一部分概率,以减小模型的方差。18世纪,皮埃尔西蒙拉普拉斯(Pierre-SimonLaplace)提出了一种最简单的平滑方法,用来估计像“明天太阳不会升起”这样的罕见事件发生的概率。拉普拉斯的(不正确的)太阳系理论认为,太阳系大约有N=200万天的历史。从数据上看
22、,在过去的200万天里,太阳没有升起的概率是0,但我们并不想说这个概率完全就是0。拉普拉斯认为,如果我们采用均匀先验,并结合目前的证据,那么就可以得出,太阳明天不会升起的概率的最佳估计值为1(N+2)它要么升起要么不升起(即分母中的2),以及均匀先验表明升起和不升起的概率相同(即分子中的1)。拉普拉斯平滑(也称为加1平滑)是朝着正确方向迈出的一步,但是对许多自然语言应用来说,它的效果很差。另一种选择是回退模型(backoffmodel),首先进行九元计数统计,如果某些序列的统计值很低(或为0),就回退到T元。线性插值平滑(linearinterpolationsmoothing)就是一种通过线
23、性插值将三元模型、二元模型和一元模型组合起来的回退模型。它将概率估计值定义为户(GlC-J=4尸(GlC-)+尸(CJ%)+4P(c,)其中入+入+小=1。参数值Z可以是固定的,也可以使用EM算法训练得到。儿的值也可能取决于计数值:如果三元计数值很高,则其对应的模型权重相对更大;如果三元计数值较低,那么二元模型和一元模型的权重会更大。一些研究人员提出了更加复杂的平滑方法(如Witten-BelI和KneSeNey),而另一些研究人员则建议收集更大规模的语料库,这样即使是简单的平滑方法也能有很好的效果(其中一种方法被称为“stupidbackoff9)o二者的目标相同:减小语言模型的方差。1.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 人工 自能 机器 算法 自然语言 处理
链接地址:https://www.desk33.com/p-1081746.html