按照从低层到高层的方式,可以划分为资源建设、基础任务、应用任务和应用系统四大类(见图1-1)。
资源建设任务:
语言学知识库建设:所谓语言学知识库,一般包括词典、规则库等。词典(Dictionary)也称辞典(Thesaurus),除了可以为词语提供音韵、句法或者语义解释以及示例等信息,还可以提供词语之间的关系信息, 如上下位、同义反义关系等。
语料库资源建设:语料库资源指的是面向某一自然语言处理任务所标注的数据。
基础任务:基础任务包括分词、词性标注、句法分析和语义分析等,这些任务往往不直接面向终端用户,除了语言学上的研究价值,它们主要为上层应用任务提供所需的特征。
应用任务:应用任务包括信息抽取、情感分析、问答系统、机器翻译和对话系统等,它们往往可以作为产品直接被终端用户使用。
应用系统:应用系统特指自然语言处理技术在某一领域的综合应用,又被称为 NLP+,即自然语言处理技术加上特定的应用领域。如在智能教育领域,可以使用文本分类、回归等技术,实现主观试题的智能评阅,帮助教师减轻工作量,提高工作效率;在智慧医疗领域,自然语言处理技术可以帮助医生跟踪最新的医疗文献,帮助患者进行简单的自我诊断等;在智能司法领域,可以使用阅读理解、文本匹配等技术,实现自动量刑、类案检索和法条推荐等。
总之,凡是涉及文本理解和生成的领域,自然语言处理技术都可以发挥巨大的作用。
虽然自然语言处理任务多种多样,刚涉足该领域的人可能会觉得眼花缭乱、无从下 手,但是这些复杂的任务基本上都可以归纳为回归、分类、匹配、解析或生成五类问题中的一种。
此外,也可以通过对研究对象的区分,将自然语言处理研究分成多个层次的任务。自然语言处理主要涉及 “名” “实” “知” “境” 之间的关系,如图1-2所示。
随着涉及的研究对象越来越多,自然语言处理的研究由浅入深,可以分为形式、语义、推理和语用四个层次。
自然语言处理自诞生之日起经历了两大研究范式的转换,即理性主义和经验主义,如图1-3所示。
受到语料规模以及计算能力的限制,早期的自然语言处理主要采用基于理性主义的规则方法,通过专家总结的符号逻辑知识处理通用的自然语言现象。然而,由于自然语言的复杂性,基于理性主义的规则方法在面对实际应用场景中的问题时显得力不从 心。
从20世纪90年代开始,随着计算机运算速度和存储容量的快速增加,以及统计学习方法的愈发成熟,使得以语料库为核心的统计学习方法在自然语言处理领域得以大规模应用。由于大规模的语料库中包含了大量关于语言的知识,使得基于语料库的统计自然语言处理方法能够更加客观、准确和细致地捕获语言规律。在这一时期,词法分析、句法分析、信息抽取、机器翻译和自动问答等领域的研究均取得了一定程度的成功。
尽管基于统计学习的自然语言处理取得了一定程度的成功,但它也有明显的局限性, 也就是需要事先利用经验性规则将原始的自然语言输入转化为机器能够处理的向量形式。 这一转化过程(也称为特征提取)需要细致的人工操作和一定的专业知识,因此也被称为特征工程。
2010年之后,随着基于深度神经网络的表示学习方法(也称深度学习)的兴起,该方法直接端到端地学习各种自然语言处理任务,不再依赖人工设计的特征。所谓表示学习,是指机器能根据输入自动地发现可以用于识别或分类等任务的表示。具体地,深度学习模型在结构上通常包含多层的处理层。底层的处理层接收原始输入,然后对其进行抽象处理,其后的每一层都在前一层的结果上进行更深层次的抽象,最后一层的抽象结果即为输入的一个表示,用于最终的目标任务。其中的抽象处理,是由模型内部的参数进行控制的,而参数的更新值则是根据训练数据上模型的表现,使用反向传播算法学习得到的。由此可以看出,深度学习可以有效地避免统计学习方法中的人工特征提取操作,自动地发现对于目标任务有效的表示。在语音识别、计算机视觉等领域,深度学习已经取得了目前最好的效果,在自然语言处理领域,深度学习同样引发了一系列的变革。
除了可以自动地发现有效特征,表示学习方法的另一个好处是打通了不同任务之间的壁垒。传统统计学习方法需要针对不同的任务设计不同的特征,这些特征往往是无法通用的。而表示学习能够将不同任务在相同的向量空间内进行表示,从而具备跨任务迁移的能力。除了可以跨任务,还可以实现跨语言甚至跨模态的迁移。综合利用多项任务、多种语言和多个模态的数据,使得人工智能向更通用的方向迈进了一步。
同样,得益于深度学习技术的快速发展,自然语言处理的另一个主要研究方向——自然语言生成也取得了长足进步。长期以来,自然语言生成的研究几乎处于停滞状态,除了使用模板生成一些简单的语句,并没有什么太有效的解决办法。随着基于深度学习的序列到序列(seqtoseq)生成框架的提出,这种逐词的文本生成方法全面提升了生成技术的灵活性和实用性,完全革新了机器翻译、文本摘要和人机对话等任务的技术范式。
虽然深度学习技术大幅提高了自然语言处理系统的准确率,但是基于深度学习的算法有一个致命的缺点,就是过度依赖于大规模有标注数据。对于语音识别、图像处理等感知类任务,标注数据相对容易获得,如:在图像处理领域,人们已经为上百万幅的图像标注了相应的类别(如ImageNet数据集);用于语音识别的 “语音–文本” 平行语料库也有几十万小时。然而,由于自然语言处理这一认知类任务所具有的 “主观性” 特点,以及其所面对的任务和领域众多,使得标注大规模语料库的时间过长,人力成本过于高昂,因此自然语言处理的标注数据往往不够充足,很难满足深度学习模型训练的需要。
早期的静态词向量预训练模型,以及后来的动态词向量预训练模型,特别是2018年以 来,以BERT、GPT为代表的超大规模预训练语言模型恰好弥补了自然语言处理标注数据不足的缺点,帮助自然语言处理取得了一系列的突破,使得包括阅读理解在内的所有自然语言处理任务的性能都得到了大幅提高,在有些数据集上达到或甚至超过了人类水平。
所谓模型预训练(Pre-train),即首先在一个原任务上预先训练一个初始模型,然后在下游任务(也称目标任务)上继续对该模型进行精调(Fine-tune),从而达到提高下游任务准确率的目的。在本质上,这也是迁移学习(Transfer Learning)思想的一种应用。然而,由于同样需要人工标注,导致原任务标注数据的规模往往也非常有限。那么,如何获得更大规模的标注数据呢?
其实,文本自身的顺序性就是一种天然的标注数据,通过若干连续出现的词语预测下 一个词语(又称语言模型)就可以构成一项原任务。由于图书、网页等文本数据规模近乎无限,所以,可以非常容易地获得超大规模的预训练数据。有人将这种不需要人工标注数据的预训练学习方法称为无监督学习(Unsupervised Learning),其实这并不准确,因为学习的过程仍然是有监督的(Supervised),更准确的叫法应该是自监督学习(Selfsupervised Learning)。
为了能够刻画大规模数据中复杂的语言现象,还要求所使用的深度学习模型容量足够大。基于自注意力的 Transformer 模型显著地提升了对于自然语言的建模能力,是近年来具有里程碑意义的进展之一。要想在可容忍的时间内,在如此大规模的数据上训练一个超大规模的 Transformer 模型,也离不开以GPU、TPU为代表的现代并行计算硬件。可以说,超大规模预训练语言模型完全依赖 “蛮力”,在大数据、大模型和大算力的加持下,使自然语言处理取得了长足的进步。如OpenAI推出的 GPT-3,是一个具有 1 , 750 1,750 1,750 亿个参数的巨大规模,无须接受任何特定任务的训练,便可以通过小样本学习完成十余种文本生成任 务,如问答、风格迁移、网页生成和自动编曲等。目前,预训练模型已经成为自然语言处理的新范式。