自然语言处理简介

时间:2024-04-13 18:26:59
  1. 什么是自然语言处理(Natural Language Processing, NLP)

简单地说,自然语言处理(NLP)就是让机器理解人所说、所写的语言。虚拟助手(Virtual Assistants, VAs),例如Google Assistant,Cortana和Apple Siri,主要是NLP系统。当一个人问虚拟助手“你能告诉我附近一家比较好的意大利餐馆吗?”时,会发生许多NLP任务。首先,VA需要将话语转换为文本(即语音到文本Speech to Text)。接下来,它必须理解请求的语义(例如,用户正在寻找有意大利美食的好餐厅)并制定结构化请求(例如,美食=意大利,评级= 3-5,距离<10公里)。然后,VA必须搜索餐馆,按位置和菜肴过滤,然后按收到的评级对餐馆进行排序。为了计算餐馆的整体评级,NLP系统可以查看每个用户提供的评级和文本描述。最后,当用户到达餐厅以后,VA又能帮助用户将意大利语的菜单翻译成汉语或者其他语言。这个例子表明NLP已成为人类生活中不可或缺的一部分。

NLP是一项极具挑战性的研究,因为词语和语义具有高度复杂的非线性关系,而将这些信息转换为鲁棒的数值表示非常困难。并且,每种语言都有自己的语法和词汇。 因此,处理文本数据涉及各种复杂的任务,例如文本解析(例如,标记化Tokenization和词干化Stemming)、形态分析、词义消歧,以及理解语言的基础语法结构。

自然语言处理相关任务

  • 标记化(Tokenization):标记化是将文本语料分离为原子单元(例如,单词)的任务。 虽然看似微不足道,但是标记化是一项重要任务。
  • 词义消歧(Word-sense Disambiguation,WSD):WSD是识别一个词正确含义的任务。 例如,在句子中,“这课书很(深),不太容易理解”。“这块布颜色太(深),做夏天衣服不合适”。深有两种不同的含义。 WSD对于诸如问答之类的任务至关重要。
  • 命名实体识别(Name Entity Recognition, NER):NER尝试从给定的文本主体或文本语料中提取实体(例如,人,位置和组织)。 例如,"约翰在星期一在学校给玛丽两个苹果"的句子将转换为[约翰]名字,在[星期一]时间给[学校]组织[玛丽]名[两个]数字苹果。 NER是信息检索和知识表示等领域的必修课。
  • 词性(PoS)标记:PoS标记是为词标注词性的任务。 它既可以是名词、动词、形容词、副词、介词等基本标签,也可以是专有名词、普通名词、短语动词、动词等等。
  • 句子/概要分类:句子或概要(例如,电影评论)分类有许多用途,例如垃圾邮件检测、新闻文章分类(例如,政治、技术和运动)和产品评论评级(即正面或负面)。 这是通过训练具有标记数据的分类模型(即,由人注释的评论,具有正面或负面标签)来实现的。
  • 语言生成:在语言生成中,学习模型(例如,神经网络)使用文本语料库(大量文本文档)进行训练,预测随后的新文本。 例如,语言生成可以通过使用现有的科幻故事进行训练来生成一个全新的科幻故事。
  • 问答(QA):QA技术具有很高的商业价值,它是聊天机器人和VA的基础技术。许多公司已经采用Chatbots来提供客户支持。聊天机器人可用于回答和解决直接的客户问题(例如,更改客户的每月移动计划),无需人工干预即可完成。QA涉及NLP的许多其他方面,例如信息检索和知识表示。
  • 机器翻译(MT):MT是将句子/短语从源语言(例如,德语)转换为目标语言(例如,英语)的任务。 这是一项非常具有挑战性的任务,因为不同的语言具有高度不同的形态结构,这意味着它不是一对一的转换。 此外,语言之间的单词到单词关系可以是一对多,一对一,多对一或多对多。 这涉及机器翻译中的单词对齐问题。

如下图所示,可以把NLP不同任务按多层级分类。在第一级,分类为分析(分析现有文本)和生成(生产新文本)任务。然后分析类可以进一步分为语法(Syntactic,语言结构为基础的任务)、语义(Semantic,语义为基础的任务)、以及其他(Pragmatic,很难解决的开放问题)。

自然语言处理简介

 

  1. 传统的自然语言处理方法

 

在Deep Learning深度学习出现之前,传统的自然语言处理方法如下图所示。

自然语言处理简介

解决NLP任务的传统方法涉及一组不同的子任务。 首先,需要对文本语料进行预处理,重点是减少词汇量和干扰,例如,去掉标点符号和停止词,以获取所需的重要语言信息。

接下来,就是一系列特征工程步骤。 特征工程的主要目标是使算法的学习更容易。 这些特征通常是手工设计的,并且偏向于人类对语言的理解。 特征工程对于经典NLP算法非常重要,因此,性能最佳的系统通常具有最佳的特征工程。 此外,特征工程阶段可以使用外部资源(如WordNet(词汇数据库))来开发更好的特性。

接下来,学习算法使用所获得的特征和可选的外部资源进行训练,以期在给定任务中表现良好。 例如,对于文本摘要任务,同义词库就是很好的外部资源。最后,训练好的模型就能对新输入文本进行预测,输出预测标签。

传统NLP方法的缺点:

  • 传统NLP中使用的预处理步骤强制权衡嵌入在文本中的潜在有用信息(例如,标点符号和时态信息),以便通过减少词汇量来使学习成为可能。 尽管预处理仍然在现代基于深度学习的解决方案中使用,但由于深度网络具有较大的代表性,因此它不像传统的NLP那样重要。
  • 特征工程需要手动执行。 为了设计可靠的系统,需要设计好的功能。 由于需要广泛探索不同的特征空间,因此这个过程非常繁琐。 此外,为了有效地探索强大的功能,需要领域专业知识,这对于某些NLP任务来说可能是稀缺的。
  • 它需要各种外部资源才能表现良好,而这些资源多数不是免费的。 这种外部资源通常包括存储在大型数据库中的手动创建的信息。 创建一个任务可能需要几年时间,具体取决于任务的严重性(例如,机器翻译规则库)。

 

  1. 自然语言处理的深度学习方法

我认为可以安全地说深度学习彻底改变了机器学习,特别是在计算机视觉,语音识别,当然还有NLP等方面。 深度模型在机器学习的许多领域创造了一系列范式转换,因为深层模型从原始数据中学习了丰富的特征,而不是使用有限的人工设计特征。这使得令人讨厌且昂贵的特征工程被淘汰。 有了这个,深层模型使传统工作流程更有效,因为深层模型同时执行特征学习和任务学习。 此外,由于深层模型中的大量参数(即权重),它可以包含比人类设计的更多的特征。 然而,由于模型的可解释性差,深度模型被认为是黑盒子。 例如,理解深度模型对于给定问题所学习的“如何”和“什么”特征仍然是一个悬而未决的问题。

深度学习和NLP的当前发展

自2000年初开始以来,出现了许多不同的深度模型。即使它们有相似之处,例如所有这些模型都使用输入和参数的非线性变换,细节也会有很大差异。 例如,卷积神经网络(CNN)可以原样从二维数据(例如,RGB图像)中学习,而多层感知器模型需要将输入解包为一维矢量,从而导致重要的空间信息丢失。

处理文本时,作为对文本最直观的解释之一是将其视为一系列字符,学习模型应该能够进行时间序列建模,因此需要记忆过去。要理解这一点,请考虑语言建模任务; 单词cat的下一个单词应该与单词climb的下一个单词不同。包含该能力的一种流行的模型被称为递归神经网络(RNN)。

应该注意,记忆不是学习模型固有的微不足道的操作。相反,应该仔细设计持久记忆的方法。此外,术语“内存”不应与仅查看当前输入的非顺序深度网络的学习权重相混淆,其中顺序模型(例如,RNN)将同时查看学习权重和前一个元素,预测下一个输出的序列。

RNN的一个突出缺点是它们不能记住超过几个(大约7个)时间步长,因此缺乏长期记忆。 长短期记忆(LSTM)网络是封装长期记忆的RNN的扩展。 因此,如今LSTM通常优于标准RNN。

总之,如下图所示,我们可以将深度网络主要分为两类:非连续模型,一次只处理单个输入用于训练和预测(例如,图像分类)和处理输入序列的任意长度的顺序模型(例如,单个单词是单个输入的文本生成)。然后我们可以将非顺序(也称为前馈)模型分类为深(大约少于20层)和非常深的网络(可以大于数百层)。 顺序模型分为短期记忆模型(例如,RNN)和长期记忆模型。

自然语言处理简介