自然语言处理入门新手上路.docx
《自然语言处理入门新手上路.docx》由会员分享,可在线阅读,更多相关《自然语言处理入门新手上路.docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、自然语言处理入门新手上路自然语言处理NaturalLanguageProcessingNLP是一门交融了计算机科学、人工智能和语言学的穿插学科它们的关系如图1-1所示。这门学科研究的是怎样通过机器学习等技术让计算机学会处理人类语言乃至实现终极目的理解人类语言或者人工智能。事实上自然语言处理这个术语并没有被广泛承受的定义。注重语言学构造的学者喜欢使用计算语言学ComputationalLinguisticsCL这个表达而强调最终目的的学者那么更偏好自然语言理解NaturalLanguageUnderstandingNLU这个术语。由于NLP听上去含有更多工程意味所以本书将一直使用该术语而不去细究
2、它们的异同。如同其本身的复杂性一样自然语言处理一直是一个艰深的课题。固然语言只是人工智能的一局部人工智能还包括计算机视觉等但它非常独特。这个星球上有许多生物拥有超过人类的视觉系统但只有人类才拥有这么高级的语言。自然语言处理的目的是让计算机处理或者“理解自然语言以完成有意义的任务比方订机票、购物或者同声传译等。完全理解以及表达语言是极其困难的完美的语言理解等价于实现人工智能。在这一章中我们将围绕自然语言处理的缩略图解析一些根本概念。著名的图灵测试就是根据机器是否能像人类一样理解语言来判断它是否具备人工智能。SmithN.A.LinguisticstructurepredictionJ.Synth
3、esislecturesonhumanlanguagetechnologies,2020,4(2):1-274.1.1自然语言与编程语言作为我们将要处理的对象自然语言具备高度灵敏的特点。我们太熟悉自己的语言就像水对鱼来讲是透明的一样我们很难体会到语言的复杂程度。不如拿自然语言与人工语言做一番比拟看看计算机理解我们的语言是多么困难。1.1.1词汇量自然语言中的词汇比编程语言中的关键词丰富。在我们熟悉的编程语言中能使用的关键词数量是有限且确定的。比方C语言一共有32个关键字Java语言那么有50个。固然我们可以自由地取变量名、函数名以及类名但这些名称在编译器看来只是区别符号不含语义信息也不影响程序
4、的运行结果。但在自然语言中我们可以使用的词汇量是无穷无尽的几乎没有意义完全一样的词语。以汉语为例由国家语言文字工作委员会发布的?当代汉语常用词表草案?一共收录了56008个词条。除此之外我们还可以随时创造各种类型的新词而不仅限于名词。1.1.2构造化自然语言是非构造化的而编程语言是构造化的。所谓构造化指的是信息具有明确的构造关系比方编程语言中的类与成员、数据库中的表与字段都可以通过明确的机制来读写。举个例子我们来看看两种语言对同一事实的表述一些面向对象的编程语言可以如此书写classCompany(object):def_init_(self,founder,logo)-None:self.f
5、ounderfounderself.logologoappleCompany(founder乔布斯,logoapple)于是程序员可以通过apple.founder以及apple.logo来获取苹果公司的创始人以及标志。像这样程序语言通过classCompany这个构造为信息提供了层次化的模板而在自然语言中那么不存在这样的显式构造。人类语言是线性的字符串给定一句话“苹果的创始人是乔布斯它的logo是苹果计算机需要分析出如下结论这句汉语转换为单词序列后应该是“苹果的创始人是乔布斯它的logo是苹果第一个“苹果指的是苹果公司而第二个“苹果指的是带缺口的苹果logo“乔布斯是一个人名“它指代的是苹果
6、公司苹果公司与乔布斯之间的关系是“的创始人是与带缺口的苹果logo之间的关系为“的logo是。这些结论的得出分别涉及中文分词、命名实体识别、指代消解以及关系抽取等自然语言处理任务。这些任务目前的准确率都达不到人类程度。可见人类觉得很简单的一句话要让计算机理解起来并不简单。1.1.3歧义性自然语言含有大量歧义这些歧义根据语境的不同而表现为特定的义项。比方汉语中的多义词只有在特定的上下文中才能确定其含义甚至存在成心利用无法确定的歧义营造幽默效果的用法。除了上文“苹果的两种意思之外“意思这个词也有多种意义。比方下面这那么经典的笑话。他讲“她这个人真有意思funny。她讲“他这个人怪有意思的funny
7、。于是人们以为他们有了意思wish并让他向她意思意思express。他火了“我根本没有那个意思thought她也生气了“你们这么讲是什么意思intention事后有人讲“真有意思funny。也有人讲“真没意思nonsense。原文见?生活报?1994.11.13.第六版吴尉天1999这个例子中特地用英文注解“意思的不同义项从侧面表达了处理中文比处理英文更难。但在编程语言中那么不存在歧义性。假如程序员无意中写了有歧义的代码比方两个函数的签名一样那么会触发编译错误。1.1.4容错性书刊中的语言即使经过编辑的屡次校对也仍然无法完全防止错误。而互联网上的文本那么更加随性错别字或者病句、不标准的标点符号
8、等随处可见。不过哪怕一句话错得再离谱人们还是可以猜出它想表达的意思。而在编程语言中程序员必须保证拼写绝对正确、语法绝对标准否那么要么得到编译器无情的警告要么造成潜在的bug。事实上区别于标准的新闻领域怎样处理不标准的社交媒体文本也成为了一个新的课题。摘自宗成庆?统计自然语言处理?。编程语言被特意设计为无歧义确实定上下文无关文法并且能在O(n)时间内分析完毕其中n为文本长度。1.1.5易变性任何语言都是不断开展变化的不同的是编程语言的变化要缓慢温以及得多而自然语言那么相对迅速嘈杂一些。编程语言由某个个人或者组织创造并且负责维护。以C为例它的创造者是BjarneStroustrup它如今由C标准委
9、员会维护。从C98到C03再到C11以及C14语言标准的变化是以年度为单位的迁越经过且新版本大致做到了对旧版本的前向兼容只有少数废弃掉的特性。而自然语言不是由某个个人或者组织创造或者制定标准的。或讲任何一门自然语言都是由全人类共同约定俗成的。固然存在普通话、简体字等标准但我们每个人都可以自由创造以及传播新词汇以及新用法也在不停地赋予旧词汇以新含义导致古代汉语以及当代汉语相差宏大。此外汉语不断吸收英语以及日语等外语中的词汇并且也在输出niubility等中式英语。这些变化是连续的每时每刻都在进展给自然语言处理带来了不小的挑战。这也是自然语言明明是人类创造的却还要称作“自然的原因。1.1.6简单性
10、由于讲话速度以及听话速度、书写速度以及浏览速度的限制人类语言往往简洁、干练。我们经常省略大量背景知识或者常识比方我们会对朋友讲“老地方见而不必指出“老地方在哪里。对于机构名称我们经常使用简称比方“工行“地税局假定对方熟悉该简称。假如上文提出一个对象作为话题那么下文经常使用代词。在连续的新闻报道或一本书的某一页中并不需要重复前面的事实而假定读者已经熟知。这些省略掉的常识是沟通双方共有而计算机不一定拥有的这也给自然语言处理带来了障碍。1.2自然语言处理的层次按照处理对象的颗粒度自然语言处理大致可以分为图1-2所示的几个层次。本节逐一介绍这些自然语言处理任务的定义为读者提供一个概览。1.2.1语音、
11、图像以及文本自然语言处理系统的输入源一共有3个即语音、图像与文本。其中语音以及图像固然正引起越来越大的关注但受制于存储容量以及传输速度它们的信息总量还是没有文本多。另外这两种形式一般经过识别后转化为文本再进展接下来的处理分别称为语音识别SpeechRecognition以及光学字符识别OpticalCharacterRecognition。一旦转化为文本就可以进展后续的NLP任务。所以文本处理是重中之重。1.2.2中文分词、词性标注以及命名实体识别这3个任务都是围绕词语进展的分析所以统称词法分析。词法分析的主要任务是将文本分隔为有意义的词语中文分词确定每个词语的类别以及浅层的歧义消除词性标注并
12、且识别出一些较长的专有名词命名实体识别。对中文而言词法分析常常是后续高级任务的根底。在流水线式的系统中假如词法分析出错那么会涉及后续任务。所幸的是中文词法分析已经比拟成熟根本到达了工业使用的水准。指的是前一个系统的输出是后一个系统的输入并且前一个系统不依赖于后续系统。作为一个初级且资源丰富的任务词法分析将在本书后续章节中详细阐述。另外由于这是读者接触的第一个NLP任务它将引出许多有趣的模型、算法以及思想。因此词法分析不仅是自然语言处理的根底任务它所属的章节也会成为读者知识体系的根底。1.2.3信息抽取词法分析之后文本已经呈现出局部构造化的趋势。至少计算机看到的不再是一个超长的字符串而是有意义的
13、单词列表并且每个单词还附有自己的词性和其他标签。根据这些单词与标签我们可以抽取出一局部有用的信息从简单的高频词到高级算法提取出的关键词从公司名称到专业术语其中词语级别的信息已经可以抽取不少。我们还可以根据词语之间的统计学信息抽取出关键短语乃至句子更大颗粒度的文本对用户更加友好。值得一提的是一些信息抽取算法用到的统计量可以复用到其他任务中会在相应章节中详细介绍。1.2.4文本分类与文本聚类将文本拆分为一系列词语之后我们还可以在文章级别做一系列分析。有时我们想知道一段话是褒义还是贬义的判断一封邮件是否是垃圾邮件想把许多文档分门别类地整理一下此时的NLP任务称作文本分类。另一些时候我们只想把相似的文
14、本归档到一起或排除重复的文档而不关心详细类别此时进展的任务称作文本聚类。这两类任务看上去挺相似实际上分属两种截然不同的算法流派我们会在单独的章节中分别讲解。1.2.5句法分析词法分析只能得到零散的词汇信息计算机不知道词语之间的关系。在一些问答系统中需要得到句子的主谓宾构造。比方“查询刘医生主治的内科病人这句话用户真正想要查询的不是“刘医生也不是“内科而是“病人。固然这三个词语都是名词甚至“刘医生离表示意图的动词“查询最近但只有“病人才是“查询的宾语。通过句法分析可以得到如图1-3所示的语法信息。我们发现图1-3中果然有根长长的箭头将“查询与“病人联络起来并且注明了它们之间的动宾关系。后续章节会
15、详细介绍上面这种树形构造和句法分析器的实现方法。不仅是问答系统或者搜索引擎句法分析还经常应用于基于短语的机器翻译给译文的词语重新排序。比方中文“我吃苹果翻译为日文后那么是“私我林檎苹果食吃两者词序不同但句法构造一致。1.2.6语义分析与篇章分析相较于句法分析语义分析侧重语义而非语法。它包括词义消歧确定一个词在语境中的含义而不是简单的词性、语义角色标注标注句子中的谓语与其他成分的关系乃至语义依存分析分析句子中词语之间的语义关系。随着任务的递进它们的难度也逐步上升属于较为高级的课题。即便是最前沿的研究也尚未到达可以实用的准确程度。另外相应的研究资源比拟稀缺群众难以获取所以本书不会涉及。1.2.7其
16、他高级任务除了上述“工具类的任务外还有许多综合性的任务与终端应用级产品联络更严密。比方自动问答根据知识库或者文本中的信息直接答复一个问题比方微软的Cortana以及苹果的Siri自动摘要为一篇长文档生成简短的摘要机器翻译将一句话从一种语言翻译到另一种语言。注意一般认为信息检索InformationRetrieveIR是区别于自然语言处理的独立学科。固然两者具有亲密的联络但IR的目的是查询信息而NLP的目的是理解语言。此外IR检索的未必是语言还可以是以图搜图、听曲搜曲、商品搜索乃至任何信息的搜索。现实中还存在大量不需要理解语言即可完成检索任务的场景比方SQL中的LIKE。本书作为入门读物不会讨论
17、这些高级任务但解析自然语言处理的整个宏观图景有助于我们开拓视野找准定位与方向。1.3自然语言处理的流派上一节比拟了自然语言与人工语言的异同展示了自然语言处理的困难所在介绍了一些常见的NLP任务。这一节扼要介绍进展自然语言处理的几种不同手法。1.3.1基于规那么的专家系统规那么指的是由专家手工制定确实定性流程。小到程序员日常使用的正那么表达式大到飞机的自动驾驶仪都是固定的规那么系统。在自然语言处理的语境下比拟成功的案例有波特词干算法Porterstemmingalgorithm它由马丁波特在1980年度提出广泛用于英文词干提取。该算法由多条规那么构成每个规那么都是一系列固定的ifthen条件分支
18、。当词语知足条件那么执行固定的工序输出固定的结果。摘录其中一局部规那么为例收录于表1-1中。专家系统要求设计者对所处理的问题具备深化的理解并且尽量以人力全面考虑所有可能的情况。它最大的弱点是难以拓展。当规那么数量增加或多个专家维护同一个系统时就容易出现冲突。比方表1-1这个仅有3条规那么的简单系统规那么1以及规那么2其实有冲突类似feed这样的单词会同时知足这两个规那么的条件进而引起矛盾。此时专家系统通常依靠规那么的优先级来解决。比方定义规那么1优先于规那么2当知足规那么1的条件时那么忽略其他规那么。几十条规那么尚可承受随着规那么数量与团队人数的增加需要考虑的兼容问题也越来越多、越来越复杂系统
19、维护本钱也越来越高无法拓展。大多数语言现象比英文词干复杂得多我们已经在上文解析了不少。这些语言现象没有必然遵循的规那么也在时刻变化使得规那么系统显得僵硬、死板与不稳定。区别于汽车的无人驾驶技术飞机的自动驾驶系统只能处理预定情况在异常情况下会报警或者切换到手动驾驶。下面的例子中feed为特殊情况不是过去式不执行交换。bled是bleed的过去式不应执行“去ed。sing不是如今进展时不应执行“去ing。1.3.2基于统计的学习方法为了降低对专家的依赖自适应灵敏的语言问题人们使用统计方法让计算机自动学习语言。所谓“统计指的是在语料库上进展的统计。所谓语料库指的是人工标注的构造化文本我们会在接下来的
20、小节中详细阐述。由于自然语言灵敏多变即便是语言学专家也无法总结出完好的规那么。哪怕真的存在完美的规那么集也难以随着语言的不停开展而逐步晋级。由于无法用程序语言描绘自然语言所以聪明的人们决定以举例子的方式让机器自动学习这些规律。然后机器将这些规律应用到新的、未知的例子上去。在自然语言处理的语境下“举例子就是“制作语料库。统计学习方法其实是机器学习的别称而机器学习那么是现代实现人工智能的主流途径。机器学习在自然语言处理中的重要性非常之大可以讲自然语言处理只是机器学习的一种应用。此处我们仅仅用“举例学习来简单理解后续章节将浓墨重彩地系统学习。1.3.3历史既然自然语言处理是机器学习的应用层那么如同人
21、工智能的历史一样自然语言处理也经历了从逻辑规那么到统计模型的开展之路。图1-4列出了历史上几个重要的时间段。20世纪50年度代是人工智能与自然语言处理的萌芽期出现了许多奠基性的工作。其中最具代表性的是数学家阿兰图灵在论文ComputingMachineryandIntelligence提出的人工智能的充分条件图灵测试和语言学家乔姆斯基的?句法构造?认为句子是按某种与语境无关的普遍语法规那么生成的。有趣的是先驱们的早期估计或者理论都过于乐观。图灵曾预言在2021年度一台1GB内存的计算机就能以70%的概率在5分钟内不被识破机器的身份然而这个乐观的预言截至今日也没有实现。而乔姆斯基的“普遍语法那么
22、因为对语义的无视而备受争议并在后续理论中做了相应修正。无论是人工智能还是自然语言处理都是任重道远的课题。20世纪80年度代之前的主流方法都是规那么系统由专家手工编写领域相关的规那么集。那时候计算机以及计算机语言刚刚创造从事编程的都是精英学者。他们雄心勃勃认为只要通过编程就能赋予计算机智能。代表性工作有MITAI实验室的BASEBALL和Sun公司2020年度被甲骨文公司收买的LUNAR分别专门答复北美棒球赛事的问题以及阿波罗探月带回来的岩石样本问题。这一时期还有很多类似的问答系统都是主要依赖手写规那么的专家系统。以BASEBALL为例其中的词性标注模块是这样判断score的词性的“假如句子中不
23、含其他动词那么score是一个动词否那么是名词。接着该系统依靠词性上的规那么合并名词短语、介词短语和副词短语。语法模块那么根据“假设最后一个动词是主要动词并位于tobe之后之类的规那么判断被动句、主语以及谓语。然后该系统利用词典上的规那么来将这些信息转化为“属性名属性值或者“属性名的键值对用来表示知识库中的文档和问句。最后利用类似“假设除了问号之外所有属性名都匹配那么输出该文档中问句所求的属性的规那么匹配问句与答案。如此僵硬严格的规那么导致该系统只能处理固定的问句无法处理与或者非逻辑、比拟级与时间段。于是这些规那么系统被称为“玩具。为了方便表述这样的规那么逻辑1972年度人们还特意创造了Pro
24、logProgramminginLogic语言来构建知识库和专家系统。20世纪80年度代之后统计模型给人工智能以及自然语言处理领域带来了革命性的进展人们开场标注语料库用于开发以及测试NLP模块1988年度隐马尔可夫模型被用于词性标注1990年度IBM公布了第一个统计机器翻译系统1995年度出现第一个强健的句法分析器基于统计。为了追求更高的准确率人们继续标注更大的语料库TREC问答语料库、CoNLL命名实体识别、语义角色标注与依存句法语料库。而更大的语料库与硬件的开展又吸引人们应用更复杂的模型。到了2000年度大量机器学习模型被广泛使用比方感悟机以及条件随机场。人们不再依赖死板的规那么系统而是期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自然语言 处理 入门 新手 上路
限制150内