《自然语言处理入门新手上路.docx》由会员分享,可在线阅读,更多相关《自然语言处理入门新手上路.docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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年度大量机器学习模型被广泛使用比方感悟机以及条件随机场。人们不再依赖死板的规那么系统而是期
25、望机器自动学习语言规律。要进步系统的准确率要么换用更高级的模型要么多标注一些语料。从此NLP系统可以强健地拓展而不再依赖专家们手写的规那么。但专家们仍然有用武之地根据语言学知识为统计模型设计特征模板将语料表示为方便计算机理解的形式成为立竿见影的方法这道工序被称为“特征工程。2020年度基于SVM的Turbo依存句法分析器在英语宾州树库PennTreebank上获得了92.3%的准确率是当时最先进的系统。本书将着重介绍一些实用的统计模型及实现它们并非高不可攀的技术完全可以实现且在普通的硬件资源下运行起来。2020年度之后语料库规模、硬件计算力都得到了很大提升为神经网络的复兴创造了条件。但随着标注
26、数据的增加传统模型的准确率提升越来越不明显人们需要更复杂的模型于是深层的神经网络重新回归研究者的视野。神经网络仍然是统计模型的一种其理论奠基于20世纪50年度代左右。1951年度MarvinLeeMinsky设计了首台模拟神经网络的机器。1958年度Rosenblatt首次提出可以模拟人类感悟才能的神经网络模型著名的感悟机。1989年度YannLeCun在贝尔实验室利用美国邮政数据集训练了首个深度卷积神经网络用于识别手写数字。只不过限于计算力以及数据量神经网络一直到2020年度前后才被广泛应用并被冠以“深度学习的新术语以区别于之前的浅层模型。深度学习的魅力在于它不再依赖专家制定特征模板而可以自
27、动学习原始数据的抽象表示所以它主要用于表示学习。作为入门书我们仅仅在最后一章介绍一些概念与应用作为衔接传统方法与深度学习的桥梁。准确来讲是斯坦福标准下忽略标点符号的UnlabeledAttachmentScore将会在第12章中详细介绍。1.3.4规那么与统计纯粹的规那么系统已经日渐式微除了一些简单的任务外专家系统已经落伍了。20世纪70年度代美国工程院院士贾里尼克在IBM实验室开发语音识别系统时曾经评论道“我每开除一名语言学家我的语音识别系统的准确率就进步一点。这句广为流传的快人快语未免有些刻薄但公正地讲随着机器学习的日渐成熟领域专家的作用越来越小了。实际工程中语言学知识的作用有两方面一是帮
28、助我们设计更简洁、高效的特征模板二是在语料库建立中发挥作用。事实上实际运行的系统在预处理以及后处理的局部仍然会用到一些手写规那么。当然也存在一些特殊案例更方便用规那么特殊处理。本书尊重工程理论以统计为主、规那么为辅的方式介绍实用型NLP系统的搭建。1.3.5传统方法与深度学习固然深度学习在计算机视觉领域获得了耀眼的成绩但在自然语言处理领域中的根底任务上发力并不大。这个结论或者许有点意外作为数据科学从业者用数据讲明问题最适宜。表1-2收录了?华尔街日报?语料库上的词性标注任务的前沿准确率。原话是“EverytimeIfirealinguist,theperformanceofthespeechr
29、ecognizergoesup。“姓(年度份)是一种常见的论文引用格式可通过该信息必要时参加主题关键词搜索到论文。截止2021年度除了Bi-LSTM-CRF以外其他系统都是传统模型最高准确率为97.36%而Bi-LSTM-CRF深度学习模型为97.55%仅仅进步了0.19%。2016年度传统系统NLP4J通过使用额外数据与动态特征提取算法准确率可以到达97.64%。类似的情形也在句法分析任务上重演以斯坦福标准下宾州树库的准确率为例如表1-3所示。2021年度首个神经网络驱动的句法分析器还不如传统系统TurboParser准确经过几年度的开展准确率终于到达95.7%比传统算法进步3.4%。这个成
30、绩在学术界是非常显著的但在实际使用中并不明显。另一方面深度学习涉及大量矩阵运算需要特殊计算硬件GPU、TPU等的加速。目前一台入门级塔式效劳器的价格在3000元左右一台虚拟效劳器每月仅需50元左右但仅一块入门级计算显卡就需要5000元。从性价比来看反而是传统的机器学习方法更合适中小企业。此外从传统方法到深度学习的迁移不可能一挥而就。两者是根底以及进阶的关系许多根底知识以及根本概念用传统方法讲解会更简单、易懂它们也会在深度学习中反复用到比方CRF与神经网络的结合。无论是传统模型还是神经网络它们都属于机器学习的范畴。掌握传统方法不仅可以解决计算资源受限时的工程问题还可以为将来挑战深度学习打下坚实的
31、根底。1.4机器学习在前面的小节中我们邂逅了一些机器学习的术语。按照递归学习的思路如今我们来递归解析一下机器学习的根本概念。本书固然主要面向自然语言处理不会专门设立章节详谈机器学习但仍然会在适宜的时候介绍引擎盖下的机器学习算法。机器学习是自然语言处理的基石一些根本概念仍然需要预先掌握。纯熟掌握这些术语还方便我们与其别人流畅沟通。1.4.1什么是机器学习人工智能领域的先驱ArthurSamuel在1959年度给出的机器学习定义是不直接编程却能赋予计算机进步才能的方法。聪明的读者或者许都曾经考虑过计算机是否只能执行人类设计好的步骤机器学习给了这个问题积极的答复机器可以通过学习进步自身才能而不需要程
32、序员硬编码该项才能。美国工程院院士TomMitchell给过一个更明确的定义机器学习指的是计算机通过某项任务的经历数据进步了在该项任务上的才能。简而言之机器学习是让机器学会算法的算法。这个讲法有些绕口不如拿我们熟悉的数据库做类比数据库中的“元数据指的是描绘数据的数据表名、字段等而其中的一行那么是普通数据。类比过来机器学习算法那么可以称作“元算法它指导机器自动学习出另一个算法这个算法被用来解决实际问题。为了防止混淆人们通常称被学习的算法为模型。1.4.2模型模型是对现实问题的数学抽象由一个假设函数和一系列参数构成。举个简单的例子我们要预测中国人名对应的性别。假设中国人名由函数fx()输出的符号决
33、定负数表示女性非负数表示男性。我们选取的fx()的定义如下其中w以及b是函数的参数而x是函数的自变量。那么模型指的就是包括参数在内的整个函数。不过模型并不包括详细的自变量x因为自变量是由用户输入的。自变量x是一个特征向量用来表示一个对象的特征。读者可以将式(1.1)理解为初中的直线方程可以以理解为高中的平面方程或高维空间中的超平面方程。总之不必担忧问题的抽象性我们将在第5章中用代码完好地实现这个案例。1.4.3特征特征指的是事物的特点转化的数值比方牛的特征是4条腿、0双翅膀而鸟的特征是2条腿、1双翅膀。那么在性别识别问题中中国人名的特征是什么呢首先对于一个中国人名姓氏与性别无关真正起作用的是名
34、字。而计算机不知道哪局部是姓哪局部是名。姓氏属于无用的特征不应被提取。另外有一些特殊的字壮、雁、健、强是男性常用的而另一些丽、燕、冰、雪那么是女性常用的还有一些文、海、宝、玉那么是男女通用的。让我们把人名表示为计算机可以理解的形式一个名字是否含有这些字就成了最容易想到的特征。在专家系统中我们显式编程假如有人叫“沈雁冰怎么办“雁听上去像男性而“冰听上去像女性而这个名字其实是男性用的。看来每个字与男女的相关程度是不一样的“雁与男性的相关程度似乎大于“冰与女性的相关程度。这个冲突似乎可以通过“优先级解决不过这种机械的工作交给机器好了。在机器学习中“优先级可以看作特征权重或者模型参数。我们只需要定义一
35、系列特征让算法根据数据自动决定它们的权重就行了。为了方便计算机处理我们将它们表示为数值类型的特征这个经过称为特征提取。以“沈雁冰的特征提取为例如表1-4所示。特征的数量是因问题而定的2个特征显然缺乏以推断名字的性别我们可以增加到4个如表1-5所示。作家茅盾原名沈德鸿字雁冰以字行于世因此“沈雁冰同样为人熟知。有时候我们还可以将位置信息也参加特征中比方“是否以雪字结尾。我们还可以组合两个特征得到新的特征比方“是否以雪字结尾并且倒数第二个字是吹这样就可以让“西门吹雪这个特殊名字得到特殊处理而不至于同“小雪“陆雪琪混为一谈。工程上我们并不需要逐个字地写特征而是定义一套模板来提取特征。比方姓名为name
36、的话那么定义特征模板为name1name2之类只要我们遍历一些姓名那么name1name2可能组合而成的特征就根本覆盖了。这种自动提取特征的模板称作特征模板。怎样挑选特征怎样设计特征模板这称作特征工程。特征越多参数就越多参数越多模型就越复杂。模型的复杂程度应当与数据集匹配按照递归学习的思路数据集的概念将在下一节中介绍。1.4.4数据集怎样让机器自动学习以得到模型的参数呢首先得有一本习题集。有许多问题无法直接编写算法规那么解决比方人名性别识别我们讲不清楚什么样的名字是男性所以我们准备了大量例子人名x及其对应的性别y作为习题集祈望机器自动从习题集中学习中国人名的规律。其中“例子一般称作样本。这本习
37、题集在机器学习领域称作数据集在自然语言处理领域称作语料库会在1.5节详细介绍。数据集的种类非常多根据任务的不同而不同。表1-6收录了一些常用的数据集。在使用数据集时我们不光要考虑它的规模、标注质量还必须考虑它的受权。大局部数据集都不可商用许多冷门领域的数据集也比拟匮乏此时我们可以考虑自行标注。1.4.5监视学习假如这本习题集附带标准答案y那么此时的学习算法称作监视学习。监视学习算法让机器先做一遍题然后与标准答案作比拟最后根据误差纠正模型的错误。大多数情况下学习一遍误差还不够小需要反复学习、反复调整。此时的算法是一种迭代式的算法每一遍学习都称作一次迭代。监视学习在日语中被称作“教師学習意思是“有
38、教师的学习。通过提供标准答案人类指出了模型的错误充当了教师的角色。这种在有标签的数据集上迭代学习的经过称为训练训练用到的数据集称作训练集。训练的结果是一系列参数特征权重或者模型。利用模型我们可以为任意一个姓名计算一个值假如非负那么给出男性的结论否那么给出女性的结论。这个经过称为预测。总结一下监视学习的流程如图1-5所示。在性别识别的例子中非构造化数据是许多个类似“沈雁冰“丁玲的人名经过人工标注后得到含有许多个类似“沈雁冰男“丁玲女样本的标注数据集然后通过训练算法得到一个模型最后利用这个模型我们可以预测任何名字如“陆雪琪的性别。待预测的名字不一定出如今数据集中但只要样本数量充足且男女平衡、特征模
39、板设计得当、算法实现正确我们仍然可以预期一个较高的准确率。另外图1-5中的标注数据其实也是构造化数据。但由于它含有人工标注的本钱有时被称作“黄金数据golddata与模型预测的、有一定误差的结果还是有很大区别的。本书将从第3章开场详细介绍一些NLP中实用的监视学习方法。1.4.6无监视学习假如我们只给机器做题却不告诉它参考答案机器仍然可以学到知识吗可以此时的学习称作无监视学习而不含标准答案的习题集被称作无标注unlabeled的数据集。无监视学习在日语中被称作“教師学習意为“没有教师的学习。没有教师的指导机器只能讲发现样本之间的联络而无法学习样本与答案之间的关联。无监视学习一般用于聚类以及降维
40、两者都不需要标注数据。聚类已经在1.2节中介绍过了我们不再赘述。在性别识别的例子中假如我们选择将一系列人名聚成2个簇的话“周树人“周立人很可能在一个簇里面“陆雪琪以及“曹雪芹在另一个簇里面。这是由样本之间的相似性以及簇的颗粒度决定的但我们并不知道哪个簇代表男性哪个簇代表女性它们也未必能通过肉眼区分。降维指的是将样本点从高维空间变换到低维空间的经过。机器学习中的高维数据比比皆是比方在性别识别的例子中以常用汉字为特征的话特征数量轻易就打破了2000。假如样本具有n个特征那么样本对应着n1维空间中的一个点多出来的维度是给假设函数的因变量用的。假如我们想要让这些样本点可视化那么必须将其降维到二维或者三
41、维空间。有一些降维算法的中心思想是降维后尽量不损失信息或讲让样本在低维空间中每个维度上的方差都尽量大。试想一下这样的极端案例平地上竖直地插着一些等长的钢管将这些钢管的顶端降维到二维平面上就是拔掉钢管后留下来的孔洞。垂直维度上钢管长度都是一样的没有有用信息于是被舍弃掉了。有一些无监视方法可以以用来驱动中文分词、词性标注、句法分析等任务。由于互联网上存储了丰富的非构造化数据所以无监视学习特别诱人。然而无监视学习时模型与用户之间没有发生任何信息交换这种缺乏监视信号的学习导致模型无法捕捉用户的标准最终预测的结果往往与用户心目中的理想答案相去甚远。目前无监视学习的NLP任务的准确率总比监视学习低十几个到
42、几十个百分点无法到达消费要求。本书将在第10章详细介绍聚类算法的原理以及实现。1.4.7其他类型的机器学习算法假如我们训练多个模型然后对同一个实例执行预测会得到多个结果。假如这些结果多数一致那么可以将该实例以及结果放到一起作为新的训练样本用来扩大训练集。这样的算法被称为半监视学习。由于半监视学习可以综合利用标注数据以及丰富的未标注数据所以正在成为热门的研究课题。现实世界中的事物之间往往有很长的因果链我们要正确地执行一系列彼此关联的决策才能得到最终的成果。这类问题往往需要一边预测一边根据环境的反应规划下次决策。这类算法被称为强化学习。强化学习在一些涉及人机交互的问题上成果斐然比方自动驾驶、电子竞
43、技以及问答系统。本书作为入门读物不会深化这些前沿课题。但解析这些分支的存在有助于构建完好的知识体系。称作启发式半监视学习是所有半监视学习方法中最容易理解的一种。1.5语料库语料库作为自然语言处理领域中的数据集是我们教机器理解语言不可或者缺的习题集。在这一节中我们来解析一下中文处理中的常见语料库和语料库建立的话题。1.5.1中文分词语料库中文分词语料库指的是由人工正确切分后的句子集合。以著名的1998年度?人民日报?语料库为例该语料库由北京大学计算语言学研究所结合富士通研究开发中心有限公司在人民日报社新闻信息中心的答应下从1999年度4月起到2002年度4月底共同标注完成。语料规模到达2600万
44、汉字市售为1998年度上半年度的语料局部约1300万字约730万词。在2005年度的第二届国际中文分词比赛中曾经公开过约1个月份的语料。其中的一句样例为先有通货膨胀干扰后有通货紧缩叫板。从这句简单的标注语料中无须语言学知识我们也能发现一个问题为何“通货膨胀是一个词而“通货紧缩却分为两个词呢这涉及语料标注标准以及标注员内部一致性的问题。我们将在后续章节中详细介绍这些话题如今只需留个印象语料标准很难制定标准很难执行。事实上中文分词语料库固然总量不多但派别却不少。我们将在第3章中解析这些语料的受权、下载与使用。1.5.2词性标注语料库它指的是切分并为每个词语指定一个词性的语料。总之我们要教机器干什么
45、我们就得给机器示范什么。仍然以?人民日报?语料库为例1998年度的?人民日报?一共含有43种词性这个集合称作词性标注集。这份语料库中的一句样例为迈向/v充满/v祈望/n的/u新/a世纪/n/w一九九八年度/t新年度/t讲话/n/w附/v图片/n/m张/q/w这里每个单词后面用斜杠隔开的就是词性标签关于每种词性的意思将会在第7章详细介绍。这句话中值得注意的是“祈望的词性是“名词n。在另一些句子中“祈望还可以作为动词。1.5.3命名实体识别语料库这种语料库人工标注了文本内部制关心的实体名词和实体类别。比方?人民日报?语料库中一共含有人名、地名以及机构名3种命名实体萨哈夫/nr讲/v/w伊拉克/ns
46、将/d同/p结合国/nt销毁/v伊拉克/ns大规模/b杀伤性/n武器/n十分/a委员会/n/nt继续/v保持/v合作/v。/w这个句子中的加粗词语分别是人名、地名以及机构名。中括号括起来的是复合词我们可以观察到有时候机构名以及地名复合起来会构成更长的机构名这种构词法上的嵌套现象增加了命名实体识别的难度。命名实体类型有什么取决于语料库制关心什么。在本书第8章中我们将演示怎样标注一份语料库用来实现对战斗机名称的识别。1.5.4句法分析语料库汉语中常用的句法分析语料库有CTBChineseTreebank中文树库这份语料库的建立工作始于1998年度历经宾夕法尼亚大学、科罗拉多大学以及布兰迪斯大学的奉
47、献一直在发布多个改良版本。以CTB8.0版为例一共含有来自新闻、播送以及互联网的3007篇文章共计71369个句子、1620561个单词以及2589848个字符。每个句子都经过了分词、词性标注以及句法标注。其中一个句子可视化后如图1-6所示。图1-6中中文单词上面的英文标签表示词性而箭头表示有语法联络的两个单词详细是何种联络由箭头上的标签表示。关于句法分析语料库的可视化以及利用将会在第12章中介绍。1.5.5文本分类语料库它指的是人工标注了所属分类的文章构成的语料库。相较于上面介绍的4种语料库文本分类语料库的数据量明显要大很多。以著名的搜狗文本分类语料库为例一共包含汽车、财经、IT、安康、体育
48、、旅游、教育、招聘、文化、军事10个类别每个类别下含有8000篇新闻每篇新闻大约数百字。另外一些新闻网站上的栏目经过了编辑的手工整理互相之间的区分度较高可以作为文本分类语料库使用。情感分类语料库那么是文本分类语料库的一个子集无非是类别限定为“正面“负面等而已。假如这些语料库中的类目、规模不知足实际需求我们还可以按需自行标注。标注的经过实际上就是把许多文档整理后放到不同的文件夹中。1.5.6语料库建立语料库建立指的是构建一份语料库的经过分为标准制定、人员培训与人工标注这3个阶段。标准制定指的是由语言学专家分析并制定一套标注标准这份标准包括标注集定义、样例以及施行方法。在中文分词以及词性标注领域比拟著名的标准有北京大学计算语言学研究所发布的?当代汉语语料库加工标准词语切分与词性标注?以及中国国家标准化管理委员会发布的?信息处理用当代汉语词类标记标准?。