Caroline Eppright | 内容策略专家 | 2021 年 3 月 25 日
自然语言处理 (NLP) 是人工智能 (AI) 的一个分支,它能够使计算机理解、生成和处理人类语言,支持用户使用自然语言文本或语音来询问 (interrogate) 数据,因此又被称为“语言输入 (language in)”。在现实中,大多数消费者可能都与 NLP 进行过互动,只是没有意识到而已。例如,Oracle Digital Assistant (ODA)、Siri、Cortana 和 Alexa 等虚拟助手背后的核心技术就是 NLP。正是基于 NLP 技术,这些虚拟助手才能在用户询问问题时理解用户的请求,使用自然语言做出回应。NLP 支持文本和语音,适用于所有人类语言。除了虚拟助手外,其他基于 NLP 的工具还包括 Web 搜索、垃圾邮件过滤、自动文本或语音翻译、文档摘要、情绪分析以及语法/拼写检查等等。例如,一些电子邮件程序可以使用 NLP 技术来读取、分析和响应消息,自动基于消息内容提供建议,帮助用户更高效地回复电子邮件。
有一些术语在含义上与 NLP 基本相同,例如自然语言理解 (NLU) 和自然语言生成 (NLG) — 分别指使用计算机来理解和生成人类语言。其中,NLG 可针对所发生的事情提供口头描述,因此又被称作“语言输出”,即使用“图形语法”将有意义的信息汇总为文本。
在实践中,人们常使用 NLU 来表示 NLP。正是因为计算机能够理解所有人类语言的结构和含义(即 NLU),开发人员和用户才能使用自然语句和表达来与计算机交互(即 NLP)。如果说计算语言学 (CL) 旨在研究人类语言计算,NLP 就是一门通过构建计算工件来理解、生成或处理人类语言的工程学科。
NLP 的研究始于 20 世纪 50 年代数字计算机诞生后不久,涉及语言学和人工智能两大领域。不过,过去几年里 NLP 的重大突破是机器学习(人工智能的一个分支,旨在开发相应的系统来学习数据并进行归纳)驱动的。其中,深度学习(一种机器学习形式)可以学习大型数据集中高度复杂的模式,非常适合学习来自 Web 的数据集中的自然语言的复杂性。
自动处理日常任务:基于 NLP 的聊天机器人可以代替人工座席来处理大量日常任务,让员工腾出时间来处理更具挑战性和更有趣的任务。例如,聊天机器人和数字助手可以识别各种用户请求,然后从企业数据库中找到相匹配的条目并有针对性地为用户创建响应。
优化搜索:对于文档和 FAQ 检索,NLP 可以优化关键字匹配搜索,包括基于上下文消除歧义(例如“carrier”在生物医学和工业领域分别表示不同的含义);匹配同义词(例如在用户搜索“automobile”时检索提及“car”的文档);考虑形态变化(这对非英语查询非常重要)。利用基于 NLP 的学术搜索系统,医生、律师以及其他领域的专家能够更加轻松、便捷地获取高度相关的前沿研究信息。
搜索引擎优化:NLP 可帮助企业通过搜索分析来优化内容,提升自家组织在线上搜索中的展示排名。如今搜索引擎一般使用 NLP 技术来对结果进行排序,如果企业了解如何有效利用 NLP 技术,就能获得相比竞争对手更加靠前的排名,进而提高可见度。
分析和组织大型文档集合:文档聚类和主题建模等 NLP 技术有助于您轻松了解大型文档集合(例如企业报告、新闻文章或科学文档)中内容的多样性。这些技术通常被用于法律取证目的。
社交媒体分析:NLP 可以分析客户评论和社交媒体评论,帮助企业更有效地理解大量信息。例如,情绪分析可以识别社交媒体评论流中的正面和负面评论,直接、实时衡量客户情绪。这可以为企业提供巨大的回报,例如提高客户满意度和收入。
市场洞察:企业可以使用 NLP 来分析客户的语言,进而更有效地满足客户需求,了解如何更好地与客户沟通。例如,面向方面 (Aspect-oriented) 的情绪分析可以检测社交媒体中关于特定方面或产品的情绪(例如“键盘很好,但屏幕太暗”),从而为产品设计和营销提供切实可行的洞察。
审核内容:如果您的企业吸引了大量用户或客户评论,NLP 可以帮助您审核这些内容,通过分析评论的用词、语气和意图来确保实现高素质和良好礼仪。
NLP 可以简化并驱动各种业务流程自动化,尤其是涉及大量非结构化文本(例如电子邮件、调研、社交媒体对话等)的业务流程。利用 NLP,企业可以更好地分析数据,做出正确的决策。以下是 NLP 的一些真实应用示例:
面向 NLP 的机器学习模型:现代 NLP 高度依赖机器学习这一人工智能技术。机器学习可以对数据集中的示例进行归纳,进而做出预测。其中,数据集被称为训练数据 — 机器学习算法使用训练数据进行训练,生成可完成目标任务的机器学习模型。
例如,情绪分析训练数据包含语句及语句相应的情绪(例如正面、负面或中性情绪)。机器学习算法将读取数据集,生成一个可接受语句“输入”并返回情绪的模型。由于这一模型可接受语句或文档作为“输入”并返回一个相应标签,因此又被称为文档分类模型。此外,文档分类程序还可以按主题(例如体育、金融、政治等)对文档进行分类。
另一种模型则可以识别并对文档中的实体进行分类。对于文档中的每一个词汇,它都会预测其是否是实体提及的一部分,如果是,则会进一步预测它涉及哪种实体。例如,在“XYZ Corp 股票昨日交易价格是 28 美元”中,"XYZ Corp" 是公司实体,“28 美元”是货币金额,“昨日”是日期。对于实体识别而言,它的训练数据是一个文本集合,其中的每一个词汇都将通过标签来指示其所代表的实体类型。由于这种模型能为输入的每一个词汇生成一个标签,因此又被称为序列标注模型。
序列到序列模型(或 seq2seq)是最近才开始应用于 NLP 的一种模型。它使用整个语句或文档作为输入(例如在文档分类程序中),可生成语句或其他一些序列(例如计算机程序)作为输出。相比之下,文档分类程序仅能生成单个符号。序列到序列模型的应用包括计算机翻译(例如使用英语语句作为输入,然后返回法语语句);文档汇总(输入内容,输出概要);语义解析(使用英语问询或请求作为输入,输出可实施该请求的计算机程序)。
深度学习、预训练模型和迁移学习:深度学习是一种广泛应用于 NLP 的机器学习。20 世纪 80 年代,研究人员将大量原始机器学习模型整合到一个网络中,开发出了神经网络。如果说神经网络是一个人的大脑,那么简单机器学习模型就是“神经元”。这些神经元按层排列,一个多层神经网络就是一个深度神经网络,而基于深度神经网络模型的机器学习就是深度学习。
深度神经网络非常复杂,通常需要使用大量数据来进行训练,其处理过程也需要大量的计算能力和时间。现代深度神经网络 NLP 模型会使用来自多样化的信息源(例如维基百科的所有内容以及从网页中抓取的数据)的数据进行训练,训练数据可能多达 10 GB 或更多;而且即使在高性能集群上,训练也可能耗时一周或更长时间。研究人员发现,使用更大规模的数据集来训练更深度的模型可以实现更高性能,因此,目前业内人员正竞相提高数据集的规模和模型的深度。
深度神经网络对数据和计算的需求非常高,这可能会严重限制其实用性。对此,迁移学习可以对经过训练的深度神经网络进行进一步训练,从而用更少的训练数据和计算能力来完成新任务。其中,最简单的迁移学习被称为微调,即使用大型通用数据集(例如维基百科)进行第一次模型训练,然后使用规模更小的、任务特定的、被实际目标任务标记的数据集做进一步训练。微调所需要的数据集的规模可能非常小(可能仅包含数百甚至数十个训练示例),可能只需要在单个 CPU 上运行几分钟。利用迁移学习,企业可以轻松在整个组织中部署深度学习模型。
如今,企业可通过完整的提供商生态系统来获取经过各种语言、数据集和预训练任务的组合训练的预训练深度学习模型,在下载这些预训练模型后,根据自己的目标任务进行微调。
了解建立 AI 卓越中心 (CoE) 能够如何利用 NLP 技术助您取得成功。我们在本电子书中介绍了建立 CoE 并有效使用高级机器学习模型的一些小技巧。
分词:分词是指将原始文本(例如一个语句或文档)切分为一个字符串(例如词或字词)序列,通常是 NLP 处理管道的第一步。其中,字符串一般是文本(会在后续处理中被视为原子单位)的重复序列,可能是词,可能是子词(被称为词素,例如英语中的 "un-" 前缀和 "-ing" 后缀),甚至可能是单个字符。
词袋模型:词袋模型将文档视为字符串或词的无序集合。换言之,一个词袋就相当于一个集合,但它会跟踪每一个元素出现的次数。词袋模型完全无视文字顺序,因此可能混淆诸如“狗咬人”与“人咬狗”这样的语句。但是,在搜索引擎这样的大规模信息检索任务中,词袋模型可以提高效率。面对较长的文档,它可以输出尽可能新的结果。
停用词删除:“停用词”是指在后续处理中可忽略的字符串,通常是一些较短的高频词,例如 "a"、"the" 和 "an"。词袋模型和搜索引擎一般会忽略停用词,以缩短处理用时,减轻数据库的存储负担。深度神经网络则通常会考虑字词顺序(因此不是词袋模型),不会删除停用词:停用词可传达含义中的微妙区别,例如 "the package was lost" 和 "a package is lost" 在删除停用词后是相同的,但它们的含义不同。
词干提取和词形还原:词素是语言中最小的语义元素,通常比字词更小。例如,"revisited" 由前缀 "re-"、词干 "visit" 和过去时态后缀 "-ed" 组成。词干提取和词形还原可将字词映射至其词干形态(例如 "revisit" + "PAST"),是预深度学习模型的关键步骤。不过,深度学习模型通常从训练数据中学习这些规律,不需要显式词干提取或词形还原步骤。
词性标注和句法分析:词性 (PoS) 标注是指为每个字词标注词性(例如名词、动词、形容词等)的过程,句法分析则旨在识别字词如何组合成为短语、子句和整个语句。其中,前者是一种序列标注任务,后者是一种扩展的序列标注任务。深度神经网络是先进的词性标注和句法分析技术。在深度学习出现前,词性标注和句法分析是语句理解的基本步骤。不过,现代深度学习 NLP 模型一般很少(如果有的话)使用词性或句法信息,因此词性标注和句法分析在深度学习 NLP 中的使用不多。
NLP 库和工具包一般在 Python 中可用,目前大多数 NLP 项目都是使用 Python 开发的。Python 的交互式开发环境让用户可以轻松开发和测试新代码。
C++ 和 Java 的代码效率更高,通常是处理大量数据时的首选语言。
以下是一些常用的 NLP 库。
TensorFlow 和 PyTorch:这是常用的两个深度学习工具包。TensorFlow 和 PyTorch 可自由用于研究和商业用途,其主要语言是 Python,但同时也支持其他多种语言。它们随带大量的预构建组件库,因此即使高度复杂的深度学习 NLP 模型一般也只需要这两个组件。它们支持高性能计算基础设施,例如搭载图形处理器单元 (GPU) 加速器的计算机集群。最后,它们还提供了优秀的文档和教程。
AllenNLP:这是一个使用 PyTorch 和 Python 实施的高级 NLP 组件(例如简单的聊天机器人)库。它提供了优秀的文档。
HuggingFace:该公司发布了数百种预训练深度学习 NLP 模型;发布了大量的在 TensorFlow 和 PyTorch 中即插即用的软件工具包,让开发人员能够快速评估不同预训练模型执行特定任务的效果。
Spark NLP:Spark NLP 是一个面向高级 NLP 的开源文本处理库,支持 Python、Java 和 Scala 编程语言。它旨在为自然语言处理管道提供一个应用编程接口 (API),不仅提供预训练神经网络模型、管道和嵌入,还支持自定义模型训练。
SpaCy NLP:SpaCy 是 Python 中的一个免费、开源的高级 NLP 库,专用于帮助用户构建可处理和理解大量文本的应用。SpaCy 非常直观,可处理常见 NLP 项目中的众多任务。
简而言之,自然语言处理能够为各种新产品提供强大支持,例如搜索引擎、聊天机器人、推荐系统以及语音文本转换系统,是一个令人兴奋的人工智能开发领域。随着计算机人机界面持续“消灭”按钮、表单和特定于域的语言,人们对自然语言处理的需求将持续增长。为此,Oracle Cloud Infrastructure 致力于通过针对 NLP 进行了性能优化的计算配置和工具,为用户提供本地部署般的优异性能。利用 Oracle Cloud Infrastructure 提供的丰富的 GPU 配置阵列,您可以在数分钟内完成部署,开始使用 NLP。
注:为免疑义,本网页所用以下术语专指以下含义: