Chapter7-1_Overview of NLP Tasks

文章目录

  • 1 Introduction
  • 2 Part-of-Speech(POS) Tagging
  • 3 Word Segmentation
  • 4 Parsing
  • 5 Coreference Resolution
  • 6 Summarization
  • 7 Machine Translation
  • 8 Grammar Error Correction
  • 9 Sentiment classification
  • 10 Stance Detection
  • 11 Natural Language Inference(NLI)
  • 12 Search Engine
  • 13 Question Answering(QA)
  • 14 Dialogue
    • 14.1 Chatting
    • 14.2 Task-oriented
  • 15 Knowledge Extraction
  • 15.1 Name Entity Recognition (NER)
    • 15.2 Relation Extraction
  • 16 Benchmarks

本文为李弘毅老师【Overview of NLP Tasks】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 6 Vocoder

下篇 - 7-2 BERT and its family - Introduction and Fine-tune

总目录

1 Introduction

接下来的课程讲述的内容就基本和语音无关了,都是讲本文方面的东西了,这也是被大家称作NLP(Natural Language Processing)的部分。讲的泛一点,接下来的任务都可以概括为“输入文本,输出文本”和“输入文本,输出类别”这两大类。
ch7-1
根据输入和输出序列不同的对应关系,又可以细分为下表所示的这些类别。当然,这么一看,如果没有事先了解的话,根本不知道是在说啥,不急,接下来会一一介绍。因为这篇是Overview,所以只会讲个大概,不会细讲。
ch7-2

2 Part-of-Speech(POS) Tagging

首先来介绍以下POS Tagging,顾名思义就是给句子中的每个word做词性的判断,是动词,还是形容词,还是名词之类的等等。

为什么要搞这个东西?这个其实一般会作为其他NLP任务的上游。比如,今天有一个句子输进来了,叫做"John saw the saw”。这个句子里有两个一模一样的"saw",对下游的模型来说,也许"saw"就是"saw",它会把这两个"saw"当作一个"saw"。但是,学过英文的都知道,这里的前一个"saw"是动词"see"的过去式,后一个"saw"是一个名词,表示锯子。这个时候,如果在直接输入下游模型之前,有一个POS Tagging模型告诉下游模型,等一等,这两个“saw”的词性是不一样的,一个是动词,一个是名词,是两个完全不同的东西。这样一来,下游模型就懂了。

POS Tagging的前处理并不是必要的,因为现在一些比较厉害的模型,比如Bert,可能在训练的时候,就自己已经学到这个东西了。

POS Tagging的输入就是文本序列,输出就是序列中每个token对应的词性类别。
ch7-3

3 Word Segmentation

Word Segmentation就是分词,也是一个前处理。在英文当中,我们有空格可以作为分词的依据,但是在中文当中,我们就不知道怎么样的算作一个词,或者说怎么的叫做一个token。这个时候,就需要有一个分词的前处理。分词模型会输出每个文字对应的是否一个词的结尾。

Word Segmentation的输入是文本序列,输出是每个文字对应的类别(是否是词的结尾)。

这个技术在如今也并不是必须的,厉害的模型也是可以自己学到这个的。
ch7-4

4 Parsing

Parsing又分为Constituency Parsing和Dependency Parsing,也是一种前处理。它有点特殊,它并不像之前讲的那样是“输入文本,输出文本”或“输入文本,输出类别”这两大类中的一种。它输入的是文本,输出的是一个树状结构。这种在接下来的课程中会单独拿出来讨论。
ch7-5

5 Coreference Resolution

Coreference Resolution的中文叫做指代消解。不管是中文还是英文,都是比较少听到的词汇,如果没学过的话,就不知道在说什么东西。它也是前处理的一种,其目的是,找出一个段落中,属于同一个东西的短语或者词汇。

比如,下面这段话中,指代消解需要知道下文中浅蓝色部分的"Paul Allen",“He”,"he"和“Paul”都是指的同一个东西。它也需要知道黄色部分的"Lakeside School"和"their high school, Lakeside"是同一个东西。甚至,它需要知道,浅粉色部分的"Paul and Bill"和两个"their"是同一个东西。

这个也不在之前讲的两种情况当中,会单独拿出来讲。
ch7-6

6 Summarization

Summarization就是摘要。这个任务是希望输入一篇文章,然后输出一段这段文章的摘要。摘要有两种做法,一种叫做Extractive summarization,另一种叫做Abstractive summarization。

Extractive summarization就是像我们小学的时候做摘要一样,从原文中抄几句话下来,就是摘要了。输入是一篇文章,模型要做的事情就是,输出文章中的每个句子是不是摘要。这是很久以前的一种做法了,那个时候认为模型只能做到这样,所以就这么做了。当然,大家心里都清楚,这怎么可能生成好的摘要。

简而言之,Extractive summarization就是之前说的输入文本序列,输出每个token类别的模型,这里的token就是句子。
ch7-7

Abstractive summarization则是要高杰一些,有点像初高中考试时的概括全文主要内容的意思,要我们动脑子去自己组织句子了。不过,有一些成分还是会从原文中摘下来,只不过不适整句整句地抄了。这里抄一些内容是被鼓励的,Pointer Network就是干这个的。

简而言之,Extractive summarization就是之前说的输入文本序列,输出摘要序列的模型。
ch7-8

7 Machine Translation

Machine Translation(机器翻译)是一个典型的seq2seq的模型,这里值得一提的就是,Machine Translation不光光是文本转文本这样,它也可以语音转文本,甚至语音转语音。为什么要搞这个?因为世界上其实有很多语言是连文字都没有的。

另一点值得一提的就是,无监督的机器翻译是目前一个主要的研究方向。因为世界上的语言太多了,我们很难收集到成对的翻译资料。如果我们可以让模型只看英文学一会,再接着只看中文学一会儿,然后模型自己就会自己找到对应关系,把英文转成中文了,那就太好了。
ch7-9

8 Grammar Error Correction

Grammar Error Correction也是一个seq2seq的模型,它就是输入一个错误语法的句子,输出一个正确语法的句子的模型。我们可以很简单地,就拿一些正确与错误配对的数据,硬train一发。但是这样做,模型的任务是很难的。其实我们完全可以给模型一个更简单的任务。比如下图中的右半边有两个例子,我们可以看出,如果句子不是面目全非的那种,我们只需要把错误的单词替换掉,或者在某个单词后面加一个单词即可,这样模型就可以变成去给每个单词做分类,分为“正确”,“替换”,“追加”这三类,然后再去修改。
ch7-10

9 Sentiment classification

情感分类是典型的序列分类任务,它要做的事情就是评价一段话是好评还是差评,常常被用来分析用户的评论。输入是一段文本序列,输出是一个类别。
ch7-11

10 Stance Detection

Stance Detection就是立场检测,它要做的事情就是检测两个句子的立场是否是相同的。比如下面有人发了“李弘毅是个型男”这样一条推文,如果回复中有人说“他只是个死丑酸宅”的话,那么这两句话的立场就不一样了。立场可以分为四种,分别是“Support”,“Denying”,"Querying"以及“Commenting”,简称为(SDQC)。
ch7-12

这个技术常被用在Veracity Prediction(真实性预测)当中。比如今天有一条推文,我们不能马上知道这条推文的真实性,但是,如果推文小面的很多回复都是在“Denying”它的,那么这就很有可能是一条假消息。我们在预测时,也可以加入Wikipedia的内容,用来辅助模型判断。

总的来说,都逃不过输入是多个文本序列,输出是一个类别。
ch7-13

11 Natural Language Inference(NLI)

NLI就是自然语言推理,它要做的一件事情就是,给一个前提,再给一个假设,模型要判断在这个前提下,输入的假设是否成立。这看似是一个很难的问题,但是从一个宏观的角度来说,就是给模型输入一个前提和一个假设,然后模型做一个分类,判断是"矛盾",“蕴涵"还是"中立”。
ch7-14

12 Search Engine

搜索引擎现在也慢慢把深度学习的技术融入进去了。之前的搜索引擎都是基于的关键词匹配,对于英文中一词多义的情况就处理的不是很好。但有了深度学习模型之后,就可以了解到语义了。从宏观上来讲,也就是输入搜索的句子和文章,输出句子和文章的相似度,然后按相似度排序。
ch7-15

13 Question Answering(QA)

QA在没有深度学习之前就有了,比较有名了就是IBM的Watson,它们都是基于一些传统的机器学习模型去做的。Waston在做QA时的步骤是,先对输入的问题进行前处理,把问题分到一个很小的类别当中,然后根据类别和问题从数据库中去找备选答案,找到备选答案之后,对答案进行相关性的评分,最后把这些备选答案合并和排序,得到最终答案。整个过程是相当复杂的。
ch7-16

但有了深度学习之后,我们要做的其实就是输入问题和知识库,然后输出一个答案。这里的知识库是我们把问题输入搜索引擎之后得到的,就像程序员编程的时候一样。模型会过滤调一些无关的内容,然后整合得到最终的答案。不过,这个其实在今天还是有很多路要走的一个问题,并没有事先到这么智能。
ch7-17

今天我们能做的,也许就只能是输入一个问题和一篇文档,答案是在文档中可以找到的,最后输出的是答案在这个文档中的位置。这么一看,一下子可以看出我们距离QA的设想还有多远的路要走。
ch7-18

14 Dialogue

对话可以分为聊天型和任务导向型的。

14.1 Chatting

聊天机器人很善于尬聊,李老师在课堂上展示了以下他和cleverbot的聊天纪录,可以看出,聊天机器人还是可以知道之前聊了些什么的。聊天的模型就是把当前说的话和历史聊天纪录一起丢给模型,然后模型会吐出一个回复。我们希望模型可能还要有一些个性,针对不同的人,说话时不一样的;有一些同理心,可以安慰安慰人;有知识,可以回答我们的一些疑惑。
ch7-19

14.2 Task-oriented

任务导向型的对话,其实就是我们日常生活中越来越普遍的服务型聊天机器人。我们会限制机器人回复的内容,这个回复的内容统称为Action。比如如果时酒店的订房机器人,它的Action可能就是"问好",“询问入住日”,“询问退房日”等等。我们会把历史的聊天纪录喂给模型,然后这个模型会输出对应的Action应该是哪个。得到Action之后,还会把Action丢给NLG模型,让它生成对应的回答。如果时比较简单的场景,我们完全可以用规则写死,但是场景复杂的话,我们是希望用深度模型来解决这个问题的。
ch7-20
这里用来输出Action的Model,往往用到的是Policy & State Tracker。State就是一个来记录当前状态的东西,比如下图中的订房示例的话,我们会有一些信息要模型去填出来,模型会根据当前的聊天进度来更新这个state的表格,然后Policy的模型会根据当前的state来决定接下来的action是什么。
ch7-21

输入State Tracker的内容往往要经过Natural language understanding(NLU)。NLU要做的有意图分类和填槽。意图分类就是判断当前说的话是提供信息,还是询问之类的。填槽就和我们之前说到的POS Tagging很像了,就是输出输入句子的每个token对应的slot是什么。然后再把这些信息交给State Tracker去处理。
ch7-22

整个任务导向型的对话系统可以用下图来概括。整个过程,可以看到,用了很多模型,不过在今天,也是有end-to-end去做的可能性。
ch7-23

15 Knowledge Extraction

Knowledge Extraction要做的一件事情就是构建知识图谱(Knowledge Graph)。比如我们今天有一大堆的资料,我们要先从这堆资料当中抽取一些entities,entity可以理解为东西,然后再根据资料给有关联的entities之间画上relation。

当然,这么说其实把整个过程说成Extract Entity和Extract Relation这两步是简化了很多很多的,这个再之后的课程中会细讲。
ch7-24

15.1 Name Entity Recognition (NER)

NER要做的事情就是和POS Tagging和Slot Filling差不多的事情,给一段文本,然后给文本中每个token打标签,比如Harry Potter就是People,Hogwarts就是organizations等等。这里的entity的种类是可以根据我们关心的内容去改变的。

当然,实际情况下,某个同样的东西可能有多个名字,同样的名字也可能指向不同的东西。要解决这个问题就要用到一个叫做entity linking的技术了。这个在之后的课程再讲。
ch7-25

15.2 Relation Extraction

Relation Extraction就是一个分类的问题。我们会事先定义好有哪些relations,然后输入我们两个entities和与这两个entities相关的句子,得到最终的relation。类别中还要有一个叫做"none"的,因为有些entities虽然在同一段句子中出现,但是它们是没有关系的,这个就要看模型的能力了。
ch7-26

16 Benchmarks

为了指导机器到底理解到人类的语言到了怎样的程度,就有了很多的Benchmarks。比较权威知名的有Glue,Super Glue和Decanlp。这里只是提一下,不细讲。

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

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

相关文章

python制作文本编辑器_Python小实战:制作文本编辑器

学了半年了,该施展一下了🍺 做什么呢?做一个简单的文本编辑器吧 来,开始 知识点: 1)做窗体的知识 2)文件操作 窗体用的是tkinter简单模块,系统自带模块 有人说了:“哇&am…

OGNL 详解

Struts2 OGNL详解 1.概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整…

完善获取数据库数据的写法

上一篇:使用express搭建服务器获取MySQL数据库数据 一、完善获取数据库数据的写法 asyncawait版本: const express require(express) const db require(./db/nodejs-orm/index.js)const app express()app.get("/get_data", (req, res) …

Chapter7-2_BERT and its family - Introduction and Fine-tune

文章目录1 What is pre-train model2 How to fine-tune2.1 Input2.2 Output2.3 Fine-tune2.4 Weighted Features3 Why fine-tune本文为李弘毅老师【BERT and its family - Introduction and Fine-tune】的课程笔记,课程视频youtube地址,点这里&#x1f4…

python数据分析基础教程 numpy_Python数据分析基础教程:NumPy学习指南(第2版)

Python数据分析基础教程:NumPy学习指南(第2版) Ivan Idris (作者) 张驭宇 (译者) NumPy是一个优秀的科学计算库,提供了很多实用的数学函数、强大的多维数组对象和优异的计算性能,不仅可以取代Matlab和Mathematica的许多…

【BZOJ-2435】道路修建 (树形DP?)DFS

2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3115 Solved: 1002[Submit][Status][Discuss]Description 在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都…

CSRF跨站请求伪造

一、CSRF跨站请求伪造 CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。 CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品&a…

升级 ubuntu_Ubuntu 19.04 已经到期!现有用户必须升级到 Ubuntu 19.10

Ubuntu 19.04 已在 2020 年 1 月 23 日到期,这意味着运行 Ubuntu 19.04 的系统将不再会接收到安全和维护更新,因此将使其容易受到攻击。-- Abhishek Prakash(作者)Ubuntu 19.04 发布于 2019 年 4 月 18 日。由于它不是长期支持(LTS)版本,因此…

Chapter7-3_BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more

文章目录1 How to pre-train2 Predict next token3 Mask Input4 seq2seq的pre-train model5 ELECTRA6 Sentence Embedding本文为李弘毅老师【BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more】的课程笔记,课程视频youtube地址…

JavaScript调试工具

JavaScript代码看起来总是要比Java、C#乱的多,可能是自己还不熟悉JavaScript编程,因此一款优秀的JavaScript调试器就显得格外重要。目前在网络和书上见到最多的有: 第一个:Microsoft Script Debugger: 集成在IE中的一款很原始的调…

python中split函数_python strip()函数和Split函数的用法总结

strip函数原型 声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串。不能删除中间的字符或是字符串。 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处&#xff0c…

express项目搭建 初始化详细步骤

案例 一、对每一个POST请求都设置CSRF防护 实际上,不仅仅转账需要CSRF防护,每一个post请求都需要做csrf的防护措施。 webA项目中的app.js: const router express.Router();router.all("/register",(res,req)>{.... })funct…

Chapter7-4_來自獵人暗黑大陸的模型 GPT-3

文章目录1 为何来自暗黑大陆2 GPT-3的野心3 GPT-3的效果4 Beyond GPT-3本文为李弘毅老师【來自獵人暗黑大陸的模型 GPT-3】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PPT,若有侵权…

SetConsoleCtrlHandler() -- 设置控制台信号处理函数

http://www.groad.net/bbs/thread-8253-1-1.html 当你在命令行里工作时,经常会输入 Ctrl-C 这个组合键以停止程序的运行。SetConsoleCtrlHandler() 函数可以让一个或多个特定函数在接收到 Ctrl-C, Ctrl-break 这些与控制台有关的信号时得到执行。 BOOL WINAPI SetCo…

python提取txt中的字符串数据_python 从字符串中提取数值

python中用re.findall函数,里面写正则表达式 rootvdirectva:/home/lic_auto_scale# cat re.py import re test[10Mbps,100bps,6.7Gbps,0.8bps,10.562Kbps] for union in test : _sizere.findall(r\d\.*\d*,union) xusage re.findall(r\D*bps,union) print("si…

二、PHP框架Laravel学习笔记——路由的定义和控制器

一.路由的定义 什么是路由?路由就是提供接受 HTTP 请求的路径,并和程序交互的功能; 简单点理解,就是为了提供访问程序的 URL 地址,所做的一些设置工作; phpstorm 支持 cmd 操作,左…

Chapter7-5_Multilingual BERT

文章目录1 什么是Multilingual BERT2 Zero-shot Reading Comprehension3 Cross-lingual Alignment4 How alignment happens本文为李弘毅老师【Multilingual BERT】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自…

deepin tim(wine)无法安装_浅析国产操作系统深度deepin

经过两天的努力,终于实现了win10下跟deepin 的双系统,经过我实际操作,发现win7环境下装双系统还是有问题的。虽然deepin系统也能安装成功,但是win系统却是无法顺利启动,一直卡在系统初始界面无限循环。而更换win10之后…

三、PHP框架Laravel学习笔记——路由参数、重定向、视图

一.路由参数 我们已经学习了部分路由参数的功能,比如动态传递{id};那么,有时这个参数需要进行约束,我们可以使用正则来限定必须是数字; Route::get(task/read/{id}, TaskControllerread) ->where(id, …

Chapter7-6_Text Style Transfer

文章目录1 什么是Text Style Transfer2 Cycle GAN2.1 Gumbel-softmax2.2 Continuous Input for Discriminator2.3 Reinforcement Learning2.4 效果3 Star GAN4 Feature Disentangle5 Unsupervised Abstractive Summarization6 Unsupervised Translation7 Unsupervised Speech R…