NLP任务概览

NLP任务概览

本文为台湾大学李宏毅老师视频课程笔记。本课程介绍了 (2020年)NLP 领域常见的 17 种任务。本文只会从输入输出的角度概览多种 NLP 任务,并简介它们的常见做法,并不会细致地介绍每个任务模型的具体细节。

两种模式与任务分类

NLP 是一个很广阔的研究领域,有许多种任务。但是如果简单地按照它们的输入输出来看的话,无外乎以下两种模式:

  • 输入文本,输出文本
  • 输入文本,输出类别

在这里插入图片描述

以下我们分别介绍两种模式种的任务。

输入文本,输出类别

输入文本,输出类别这一大类又可以分为两类。第一种是输入一段文本(token 序列),然后模型输出一个类别,表示这段文本整体是某种类别。第二种是输入一段文本(token序列),模型对输入的每个 token 进行分类,输出多个类别。

如今,不管是第一种还是第二种,“输入文本,输出类别” 这一大类 NLP 任务,通常是用 BERT 模型及其变体来做。

在这里插入图片描述

输入文本,输出文本

对于输入文本,输出文本这一大类,最直觉的想法然就是用 seq2seq model 了。

这里有一个需要注意的点是 NLP 中有的 seq2seq 任务(如摘要等)可以在编解码器之间加一个 copy mechnaism,允许输出直接从输入中 copy 一些内容。

在这里插入图片描述

多输入

之前介绍的都是单输入的情况,但是在很多任务中,也会有需要输入多个文本的情况,这时该怎么做呢?常见的做法也是有两种。

第一种是分别用两个网络来处理两个文本,然后再用一个网络将他们的输出进行融合,这两个网络之前通常也会加一个注意力机制。

另一种更加直接的做法在近年来比较流行。即将两个文本直接输入同一个网络,但是在他们中间加一个特殊的 token (如图中的 <SEP>),以示分隔。

在这里插入图片描述

NLP任务汇总

综上集中分法,可以将 NLP 的任务分为以下 8(+1) 类。接下来,我们将分别介绍表格中的任务。

在这里插入图片描述

前处理相关

Part Of Speech (POS) Tagging

将输入的文本句子中的每个词语都标注上词性(动词/形容词/名词)。

输入:文本

输出:每个 token 的类别

为什么需要考虑句子中词语的词性呢?考虑下面这个句子,句子中出现了两个 saw,但是它们的词性明显是不一样的,前者是看见,动词;后者是锯子,名词。如果在进行其他下游任务(如翻译等)之前,就能识别出每个单词的词性,作为附加信息输入到下游任务网络,无疑会改善网络的性能。因此,POS 经常用作前处理。

Join saw the saw.

但是,在今天,下游任务模型越来越强大。因此,可能下游任务模型本身就可以自己隐式地进行 POS,作为显式的前处理的 POS 过程可能已经不再需要了。

在这里插入图片描述

Word Segmentation

分词是中文自然语言处理中很重要的一项任务,因为中文单字本身并不是词语,我们需要将单字组成的句子划分为多个词语。

输入:文本

输出:每个 token 的类别

从输入输出的角度来看,分词就是输入一个文本,输出每个 token 的类别。这里的类别通常就是一个简单的二分类,Y 表示当前 token 是一个词语的结尾,N 则表示不是。

与 POS 类似的,分词在以前也经常作为下游任务的预处理过程。但是在下游模型越来越强大的今天,分词预处理也通常不再需要了。

分词还存在一个问题,就是同一个句子可能有多种不同但是都合理的分词方法。

在这里插入图片描述

Parsing

句法分析(Parsing)有两种形式,分别是成分分析(constituency parsing)和依存分析(dependency parsing)。它们在输入输出形式是一致的,都是输入一个句子,输出一个树。

Parsing 的输入输出形式比较特殊,不在我们提到的两种模式之中。

Parsing 与以上二者类似,经常作为前处理的步骤。但在表达能力更强的大模型时代,单独进行 Parsing 作为前处理似乎也没有必要性了。

在这里插入图片描述

Coreference Resolution

指代消解是要找出文本中的哪些词汇指的是同一件东西,尤其是代词(如 he,she,it 等)所指代的实体。

举个例子,考虑以下文本:

Paul Allen was born ion January 21, 1953. He attended Lakeside School.

指代消解就是要识别出句中的 ‘Paul Allen’ 和 ‘He’ 指的是同一个人。当然,这是最基础的指代消解,还有更多更复杂的情况就不一一列举。

指代消解的输入输出形式也比较特殊,不在我们提到的两种模式之中。

指代消解也常被用作前处理。

Grammar Error Correction

语法错误纠正是指对于输入的含有语法错误的句子,模型输出修改后的正确的句子。

输入:(可能含有语法错误的)文本

输出:(正确的)文本或修改方式

语法错误纠正乍看起来好像任务的形式稍微有点麻烦,因为句子的长短、句子的错误类型、修正的方式都有很多种。但实际上,主流的做法是直接将它作为一个 seq2seq 的模型来训练就好了,输入有错误的句子,输出正确的句子。
在这里插入图片描述

当然,模型也可以输出对应的修改方式。只要设定一些类别,比如将某个词删除/替换,或者在其前后增加某个词,语法错误纠正就成了一个分类的任务。输入一段有语法错误的文本,输出每个 token(单词)对应的类别。

在这里插入图片描述

输入文本输出类别

Sentiment Classfication

情感分类,是指输入文本,模型输出这段文本情感是正向的还是负向的。

输入:文本

输出:整个文本的类别

是典型的对整个文本进行分类的任务。常用语网络评论的分类。

Stance Detection

立场检测,是指给定一个文本和另一个对该文本回复的文本,判断回复文本对原文本是什么态度。

输入:两个文本

输出:态度(立场)类别

常见的态度有 Support、Denying、Querying、Commenting(SDQC)。

例子:

原文本:李宏毅是个型男

回复文本:他只是个死臭酸宅

在这个例子中,回复文本对原文本的态度就是 Denying。

立场检测可以用于 Veracity Prediction。

Veracity Prediction

真实性预测,是指给定一个文本,然后模型来判断这个文本描述的内容是否真实。

输入:文本(和其他相关文本)

输出:整个文本的二分类

当然,只看一个文本本身很多时候并不能对其真实性作出判断。我们通常需要给模型更多的相关信息。

比如下图中,我们要预测一个 post(网络po文)的真实性,我们可以提供给模型该 po 文的回复、与该 po 文相关的百科内容等。这里给的回复信息,就可以用上面的立场检测来判断其对原文的态度是支持还是否定。

在这里插入图片描述

Natural Language Inference

自然语言推理,是指给定一个陈述,再给一个假设,然后基于陈述判断这个假设是否成立。

输入:两个文本(一个陈述和一个假设)

输出:分类结果

常见的类别有 contradiction(矛盾)、entailment(蕴含)、nertral(中性)。

在下面的例子中,给定的陈述是 “一个人骑在马上,跳过了一架断掉的飞机”

给出的假设有三个:

  • “一个人在餐馆中”,这明显是不太可能的,一个人在跳飞机,怎么可能同时在餐馆中呢。因此应该输出 contradiction
  • “一个人在户外,骑在马上”,这是很可能的,因为骑在马上,大概率是在户外。因此应该输出 entailment。
  • “一个人正在训练他的马,准备参加比赛”,这一条不好判断,因为虽然确实人是在骑马,但具体动机无法判断。因此应该输出 neutral。

在这里插入图片描述

Search Engine

现代搜索引擎当然是很复杂的一个系统,但是如果只从 NLP 模型输入输出的角度来说,它基本的能力就是判断两个输入文本的语义是否是相近的。

输入:两个文本

输出:类别(是否相近)

输入文本输出文本

Summarization

NLP 中的摘要任务分为两种,分别是 Extractive 和 Abstractive。

Extractive Summarization

抽取式摘要比较简单,从原文中选取一些句子作为摘要即可。

输入:文本序列

输出:每个 token(句子) 的类别

抽取式的文本摘要的输入输出形式很简单,输入一篇文章,输出其中每个句子是否要被抽取作为摘要的二分类结果即可。

很明显,抽取式摘要的任务比较简单,但是摘要的质量会也比较差。在中小学做语文摘要作业时老师就警告我们说不要照搬原文中的句子,而要自己总结。

在这里插入图片描述

Abstractive Summarization

生成式摘要是指模型不要从原文中照搬句子,而是要看过全文之后用自己的话来对文章进行总结。

输入:(长)文本

输出:(短)文本

这是更难但是更有意义的任务。从输入输出上来看,输入一篇文章(长文本),模型要输出一段摘要(短文章),是典型的 seq2seq 的任务。

需要注意,即使是生成式的摘要,大部分关键词也是来自原文文本的。因此,使得模型能够直接从输入文本中 copy 一些关键词,是合理的。

在这里插入图片描述

Machine Translation

机器翻译已经是我们日常生活中非常常见的应用了。除了文字到文字的翻译,可能还有语音到文字的翻译,甚至是语音到语音的翻译。这是因为,很多语言是没有文字的。

输入:文本/声音序列(语言A)

输出:文本/声音序列(语言B)

从输入输出的形式上来看,机器翻译也是 seq2seq 的模型。

我们知道,传统的机器翻译的训练,需要两种或多种语言之间含义相同的成对的语句。这是有监督的学习。这样如果想做 NNN 种多语言的相互翻译,需要去标注 N2N^2N2 这样的数据,但是世界上语言这么多,这实在是费时费力。那么,无监督的机器翻译是否是可能的呢?即只给定多种语言的大量语料,但是没有他们之间对应相同语义的成对标注,能否做这种无监督训练呢?实际上,已经有一些工作在做无监督机器翻译训练的研究了。这里也不展开讲了。

在这里插入图片描述

Question Answering

问答,是指给定一个问题和一些相关的资料,模型需要对问题做出回答。

输入:多个文本(一个问题和多个相关资料)

输出:一个文本(答案)

在前深度学习时代,人们会构建很复杂的 QA 系统,其中多个模块互相配合,最终完成 QA 的任务。

而在深度学习时代,可以用一个模型端到端地完成 QA 的任务,输入问题和相关资料,输出答案。也可以看做是一个 seq2seq 的任务。

当然,目前的 QA 任务大部分还是抽取式的,即问题的答案就在资料之中,因此,通常 QA 模型也需要允许 copy。

在这里插入图片描述

Dialogue——Chatting Bot

聊天机器人,是无目的地与用户闲聊(尬聊)。

输入:多个文本(当前聊天内容、之前聊天内容、其他相关资料)

输出:文本(聊天内容)

聊天机器人可以与人类进行对话闲聊。它需要根据当前对话和过往对话内容,再结合一些相关的资料(如知识库等),输出合理的对话内容。

从输入输出的形式上来看,聊天机器人也开始一个 seq2seq 的模型。

在这里插入图片描述

Dialogue——Task Oriented

与聊天机器人闲聊不同,任务导向的对话系统并不是无目的地进行对话,而是要根据既定的任务(比如聊天获取客人的需求信息)进行对话。

输入:多个文本(当前聊天内容、之前聊天内容)

输出:文本(聊天内容)

从输入输出的形式上来看,任务导向的对话系统与聊天机器人类似。

在这里插入图片描述

虽然输入输出的形式看起来很简单,但是目前实际的任务导向的对话系统往往都是分为多个模块来进行的。比如下图中的:

  • NLU:自然语言理解模块,对文本进行处理,NLU 一般有 intent classification 和 slot filling
    • intent classification 意图识别,输入一个文本,输出一个整体的类别。这个类别表示的是输入文本的意图,如询问信息、提供信息等。
      • 我打算九月九日入住 —> 提供信息
      • 九月九日还有房间吗?—> 询问信息
    • slot filling ,输入一个文本,输出其中每个 token 的类别,这个类别是根据具体应用场景预先设定的。slot filling 与 POS 和 NER 任务形式类似。
      • 我打算九月九日入住。九月九日:入住日(预设),其他:N。
  • State Tracker:状态跟踪模块,根据 NLU 的处理结果,得到当前的状态,由于任务导向的对话不是漫无目的的尬聊,因此模型需要关心的状态是有限的,比如例子中的联络人、入住人数等;
  • Policy:策略模块:根据当前的状态,决定下一步要问什么问题,由于关心的状态有限,因此这可以视作一个分类问题,决定要询问哪一个信息。如果系统比较简单的话(比如例子中的订房系统),可以手写规则来完成;如果任务比较复杂,可以通过强化学习来训练;
  • NLG:自然语言生成模块:根据要问什么问题,生成出自然语言的对话文本

在这里插入图片描述

任务导向的问答系统的整个流程的模块框图如下所示:

在这里插入图片描述

知识图谱

Knowledge Graph

我们知道图(graph)由节点和边组成。知识图谱也是一种图,它的节点是实体(entity,可以是人名、地名、组织名等),而它的边则是实体之间的关系。下图就是一张知识图谱。

在这里插入图片描述

知识图谱相关的任务主要有两类:

  • 给定一张知识图谱,如何使用它。如何使用知识图谱来处理其他问题,比如摘要、对话、QA 等;
  • 如何通过大量的文字构建知识图谱。比如读完整本哈利波特后,模型是否能构建出上图中的知识图谱,或者模型能够根据互联网上大量的信息构建出怎样的知识图谱。

在这里,我们将整个构建知识图谱的过程(过度)简化为两步:一是抽取实体,而是抽取关系。

NER

抽取实体,我们的任务是命名实体识别(NER),就是要抽取出句子中的 ”命名实体“。任务的形式与 POS tagging、slot filling 类似。

输入:文本

输出:文本中每个 token(单词)的类别(实体)

至于什么是命名实体,并没有通用的定义,是取决于具体的应用。它通常命名实体包括人名、地名、组织名等。但实际上,在某个任务中,我们所关心的东西,才是我们要抽取的命名实体。比如我们想要通过让模型阅读大量医学文献,来判断什么药物能够治疗新冠肺炎,那么这里的药物名,就是我们的命名实体。

NER 任务看似简单,实际上还是有不少问题。比如同一个实体可能有不同的叫法,而同一个单词又可能代表了不同的实体。这就要考虑到 entity link 和 entity resolution,这里就不展开。

Relation Extraction

抽取关系,实际上也是有一定难度的任务。但是从输入输出的角度来看,就是一个分类问题。

输入:多个文本、两个命名实体

输出:类别(两个命名实体之间的关系)

在这里插入图片描述

通用语言理解任务

在以前,对于上面这么多 NLP 的任务,都是对每一个任务,专门构建一个模型来处理。近年来,为了评估语言模型在多个 NLP 任务上的通用语言理解能力,出现了一些集成多个任务的 benchmark,如

  • GLUE
  • SuperGLUE
  • DecaNLP

这就存在一个问题,不同的 NLP 任务,输入输出形式并不完全一致,怎么能用一个模型来处理呢?实际上,所有的 NLP 的任务都可以当做 QA 的任务来处理。比如如果我们想做摘要任务,就给模型一段文本,然后问题是 ”这段文本的摘要是什么?“,模型会输出一段摘要作为答案;如果我们想做翻译任务,问题就是 ”这段中文的英文翻译是什么?“;如果我们想做情绪识别任务,问题就是 ”这段文本的情感是正向的还是负向的“。

总结

在本文中,我们跟随李老师一起概览了常见的 NLP 任务的输入输出形式,并将他们划分为输入文本输出类别和输入文本输出文本两大类。并且了解到,如果想做通用的 NLP 任务,只要将模型训练为 QA 任务的形式,然后给定关于特定任务的问题就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大物实验总结模板_期中总结大会amp;期末动员大会

在逐渐降温的双创周麦包坊的期中总结暨期末动员大会来啦在学长团和小麦包的分享下希望大家重新启航奋斗期末板块一学长团经验分享面对本学期十二门科目&#xff0c;作为过来人的前辈们给出很多对本学期各科目的针对性建议&#xff0c;可谓是干货满满&#xff0c;快来瞧瞧吧&…

PTMs:NLP预训练模型的全面总结

PTMs&#xff1a;NLP预训练模型的全面总结 转自&#xff1a;https://zhuanlan.zhihu.com/p/115014536 预训练模型(Pre-trained Models,PTMs) 的出现将NLP带入了一个全新时代。2020年3月18日&#xff0c;邱锡鹏老师发表了关于NLP预训练模型的综述《Pre-trained Models for Natur…

python中提取几列_Python一键提取PDF中的表格到Excel(实例50)

从PDF文件获取表格中的数据&#xff0c;也是日常办公容易涉及到的一项工作。一个一个复制吧&#xff0c;效率确实太低了。用Python从PDF文档中提取表格数据&#xff0c;并写入Excel文件&#xff0c;灰常灰常高效。上市公司的年报往往包含几百张表格&#xff0c;用它作为例子再合…

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

详解最大似然估计&#xff08;MLE&#xff09;、最大后验概率估计&#xff08;MAP&#xff09;&#xff0c;以及贝叶斯公式的理解 声明&#xff1a;本文为原创文章&#xff0c;发表于nebulaf91的csdn博客。欢迎转载&#xff0c;但请务必保留本信息&#xff0c;注明文章出处。 本…

重新打开_iPhone 应用停止响应或无法打开的解决办法

如果当您在 iPhone 上使用某个重要应用时&#xff0c;遇到应用停止响应、意外退出或无法打开的问题&#xff0c;请参考如下步骤尝试解决&#xff1a;1.强制退出应用&#xff1a;在 iPhone 后台强制关闭该应用之后&#xff0c;再次重新打开看看。2.重启您的设备&#xff0c;然后…

机器学习理论——优雅的模型:变分自编码器(VAE)

机器学习理论——优雅的模型&#xff1a;变分自编码器&#xff08;VAE&#xff09; 转自&#xff1a;机器学习理论—优雅的模型&#xff08;一&#xff09;&#xff1a;变分自编码器&#xff08;VAE&#xff09; 另外直观理解 VAE&#xff0c; 推荐 台大李宏毅老师的课程&#…

基于流的(Flow-based)生成模型简介

基于流的(Flow-based)生成模型简介 生成任务 我们先回顾一下所谓的生成任务&#xff0c;究竟是做什么事情。我们认为&#xff0c;世界上所有的图片&#xff0c;是符合某种分布 pdata(x)p_{data}(x)pdata​(x) 的。当然&#xff0c;这个分布肯定是个极其复杂的分布。而我们有一…

iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读

三菱PLC编程口通讯协议&#xff1a;1、三菱PLC编程口通讯协议有四个命令&#xff0c;如下&#xff1a;2、三菱FX系列PLC地址对应表&#xff1a;PLC_X Group Base AddRess128&#xff1b;Const PLC_Y_Group Base AddRess160&#xff1b;M _Group Base_AddRess 256&#xff1b;P…

DETR精读笔记

DETR精读笔记 论文&#xff1a;End-to-End Object Detection with Transformers &#xff08;发表于 ECCV-2020&#xff09; 代码&#xff1a;https://github.com/facebookresearch/detr 解读视频&#xff1a;DETR 论文精读【论文精读】 本笔记主要基于 Yi Zhu 老师的解读 引言…

GAN网络评估指标:IS、FID、PPL

GAN网络评估指标&#xff1a;IS、FID、PPL 转自&#xff1a;IS、FID、PPL&#xff0c;GAN网络评估指标 另外关于GAN的评价指标&#xff0c;推荐李宏毅老师的视频&#xff1a;【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條…

降维后输入分类器分类时报错_逻辑回归解决多分类方法及其优缺点分析

众所周知&#xff0c;逻辑回归常用于解决二分类任务&#xff0c;但是在工作/学习/项目中&#xff0c;我们也经常要解决多分类问题。本文总结了 3 种逻辑回归解决多分类的方法&#xff0c;并分析了他们的优缺点。一、One-Vs-Rest假设我们要解决一个分类问题&#xff0c;该分类问…

PyTorch 的 Autograd

PyTorch 的 Autograd 转自&#xff1a;PyTorch 的 Autograd PyTorch 作为一个深度学习平台&#xff0c;在深度学习任务中比 NumPy 这个科学计算库强在哪里呢&#xff1f;我觉得一是 PyTorch 提供了自动求导机制&#xff0c;二是对 GPU 的支持。由此可见&#xff0c;自动求导 (a…

商场楼层导视牌图片_百宝图商场电子导视软件中预约产品功能简介

百宝图商场电子导视软件中预约产品功能简介 管理端&#xff0c;可配合百宝图商场电子导视软件配套使用 1&#xff1a;数据展示&#xff1a;图形展示总预约数/预约时间峰值/预约途径/各途径数量对比 2&#xff1a;数据统计&#xff1a;有效预约数量/无效预约数量/无效预约原因备…

Pytorch autograd.grad与autograd.backward详解

Pytorch autograd.grad与autograd.backward详解 引言 平时在写 Pytorch 训练脚本时&#xff0c;都是下面这种无脑按步骤走&#xff1a; outputs model(inputs) # 模型前向推理 optimizer.zero_grad() # 清除累积梯度 loss.backward() # 模型反向求导 optimizer.step()…

相对熵与交叉熵_熵、KL散度、交叉熵

公众号关注 “ML_NLP”设为 “星标”&#xff0c;重磅干货&#xff0c;第一时间送达&#xff01;机器学习算法与自然语言处理出品公众号原创专栏作者 思婕的便携席梦思单位 | 哈工大SCIR实验室KL散度 交叉熵 - 熵1. 熵(Entropy)抽象解释&#xff1a;熵用于计算一个随机变量的信…

动手实现一个带自动微分的深度学习框架

动手实现一个带自动微分的深度学习框架 转自&#xff1a;Automatic Differentiation Tutorial 参考代码&#xff1a;https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目录 简介自动求导设计自动求导实现一个例子总结参考资料 简介 梯度…

http 错误 404.0 - not found_电脑Regsvr32 用法和错误消息的说明

​ 对于那些可以自行注册的对象链接和嵌入 (OLE) 控件&#xff0c;例如动态链接库 (DLL) 文件或 ActiveX 控件 (OCX) 文件&#xff0c;您可以使用 Regsvr32 工具 (Regsvr32.exe) 来将它们注册和取消注册。Regsvr32.exe 的用法RegSvr32.exe 具有以下命令行选项&#xff1a; Regs…

MobileNet 系列:从V1到V3

MobileNet 系列&#xff1a;从V1到V3 转自&#xff1a;轻量级神经网络“巡礼”&#xff08;二&#xff09;—— MobileNet&#xff0c;从V1到V3 自从2017年由谷歌公司提出&#xff0c;MobileNet可谓是轻量级网络中的Inception&#xff0c;经历了一代又一代的更新。成为了学习轻…

mysql 高级知识点_这是我见过最全的《MySQL笔记》,涵盖MySQL所有高级知识点!...

作为运维和编程人员&#xff0c;对MySQL一定不会陌生&#xff0c;尤其是互联网行业&#xff0c;对MySQL的使用是比较多的。MySQL 作为主流的数据库&#xff0c;是各大厂面试官百问不厌的知识点&#xff0c;但是需要了解到什么程度呢&#xff1f;仅仅停留在 建库、创表、增删查改…

teechart mysql_TeeChart 的应用

TeeChart 是一个很棒的绘图控件&#xff0c;不过由于里面没有注释&#xff0c;网上相关的资料也很少&#xff0c;所以在应用的时候只能是一点点的试。为了防止以后用到的时候忘记&#xff0c;我就把自己用到的东西都记录下来&#xff0c;以便以后使用的时候查询。1、进制缩放图…