AIPM要知道的NLP知识(2):RNN和LSTM的应用

LCC
0 评论 4732 浏览 2 收藏 8 分钟

编辑导语:RNN是一种使用类似链表的形式、具有一定记忆能力的网络模型;对于具有序列性的样本数据,记住过去的信息对预测当前状态是非常必要的;本文作者分享了关于RNN和LSTM的应用,我们一起来看一下。

就像CV绕不开CNN,NLP也绕不开RNN,这一节就来总结下自然语言处理中的循环神经网络(RNN)和它的好姐妹长短期记忆神经网络(LSTM)以及它们的实际应用。

一、先讲个故事

从前有个小姑娘在森林里采蘑菇,有一天她捡到里一个神奇的黑盒子,盒子上有两个洞,洞的大小只能塞一个小球进去。

为了试一试这个黑盒子能干嘛,小姑娘塞了一个写着“我”的小球进去,盒子的另一个洞里立刻弹出了一个“天”字小球,于是小姑娘发现这个黑盒子的用途是放进去一个小球就会弹出来一个小球。

她继续往里边塞了写着“爱”、“北”、“京”、“天”、“安”、“门”的小球,黑盒子依次弹出来“安”、“门”、“上”、“太”、“阳”、“升”。

哇,小姑娘惊喜地发现弹出来的小球不是无序的,而是和我们放进去的小球有某种对应关系,于是小姑娘把这个神奇的盒子珍藏了起来。

后来小姑娘长大了,成为了一名出色的工程师,有一天她在收拾阁楼时候发现了这个小时候的黑盒子,她决定打开看看黑盒子里边到底是什么样子。

打开之后她发现盒子里的设计非常精妙,是这样的:

进一步拆解,是这样的:

小姑娘对黑盒子产生了浓厚的兴趣,于是她开始在全世界搜集这样的黑盒子。

随着搜集的盒子越来越多,她发现有些黑盒子和她的一样,塞一个小球进去就会盒子就会输出一个小球(多对多);有的黑盒子要依次把所有小球都塞完才会吐出一个(多对一);有的黑盒子更神奇,只要塞一个小球进去盒子就会不停的吐小球出来(一对多)。

小姑娘花费毕生精力研究黑盒子们,她把黑盒子命名为循环神经网络(RNN);她发现黑盒子对之前的小球有一定的“记忆”,像人一样会考虑上下文的语境;还有一种内部结构更复杂的黑盒子叫做长短期记忆神经网络(LSTM),LSTM的记忆力要比RNN更好。

于是她利用黑盒子们做出了很多有意思的发明:

二、应用场景

小姑娘的发明大概可以分为4类:

  • 一是序列标注,比如词性标注、命名实体识别;
  • 二是分类任务,比如情感分析;
  • 三是关系判断,比如推理、阅读理解等;
  • 四是生成式任务,比如翻译、对话、文本摘要等通过一段文字生成另一段文字的任务。

从产品角度看,要实现一个完整产品,可能涉及到以上一个或者多个任务。

比如一个对话系统中会涉及到识别意图(分类问题)、槽信息识别(序列标注问题)等等;可见任务的粒度是要比产品细的,所以接下来的所有应用场景分析还是都从偏技术的任务角度展开,举得栗子可能比较偏向简单的应用(即一个应用=一个任务)。

1. 多对多

多输入多输出也就是输入序列和输出序列长度相同,以文本为例,输入为10个字的一句话,输出也是10个字或者标记——多对多模型可以用来解决标注问题。

命名实体识别实现中常用biLSTM+crf算法,输入是待标注的句子,输出是每个词的IOB标记;比如对句子“王梅梅在香港大学读研究生”进行命名实体识别,可以得到“王梅梅”和“香港大学”两个命名实体,一个是人名,一个是组织机构名。

对话机器人中的slot filling也可以看做是标注问题,所以也可以用RNN/LSTM实现,输入是用户表达,输出是IOB标注出的槽。

比如“订明天到上海的机票”,输出的标签序列是“O B-time I-time O B-toloc I-toloc O O O”,其中识别出了两个槽——时间和目的地;根据识别出来的槽信息后续可以进行业务处理(比如查询机票信息)或者进一步询问缺失的信息(比如询问出发地)。

2. 一对多

单输入多输出也就是输入序列长度为1、输出序列长度为n(对于特定模型输出的最大值是一定的),典型的应用是生成特定风格的音乐、写诗、写文章等生成式任务,比如古诗生成器:给定首字生成一首诗(如下图)。

3. 多对一

多输入单输出是输入序列长度为n、输出序列长度为1,多对一其实也就是分类任务,输入一句话输出一个评分、分类。

例如根据用户对商品的评价生成评分(1到5分);还有就是情感分析,比如对话系统中通过用户的输入判断用户当前情绪(积极、消极);还有违禁内容检测等等。

相关阅读:

AIPM要知道的NLP知识(1):词的表达

 

本文由 @LCC 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于CC0协议。

给作者打赏,鼓励TA抓紧创作!
更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!