在知道这个行为之后,作者决定在Stanford Sentiment Treebank模型上测试模型,得到了91.8%的精度,而先前最好的结果是90.2%。这意味着该模型能够使用非监督的方法使用更少的样例数据就可以实现先进的情感分析。
情感神经元表现
既然该模型是基于字符等级,神经元的状态随着文本中的字符改变并能看到神经元在情感检测中的行为表现。
Your user agent does not support the HTML5 Video element.
可以看到在遇到单词best之后,神经元的情感状态变得非常积极,而遇到单词horrendous变得消极。
生成情感倾向文本
该模型是生成式模型,所以能够同样的用于生成Amazon评论文本。可以通过简单的覆盖情感神经元的值即可生成有倾向性的文本。
| 积极情感 | 消极情感 |
| — | — |
| Best hammock ever! Stays in place and holds its shape. Comfy (I love the deep neon pictures on it), and looks so cute. | They didn’t fit either. Straight high sticks at the end. On par with other buds I have. Lesson learned to avoid. |
| Just what I was looking for. Nice fitted pants, exactly matched seam to color contrast with other pants I own. Highly recommended and also very happy! | The package received was blank and has no barcode. A waste of time and money. |
查看实例可以打开链接:生成文本实例
本方法使用的是multiplicative LSTM模型,主要的原因就是它比普通的LSTM模型更容易收敛。在Amazon评价语料库上训练使用了4096个单元。
为什么情感倾向判断的准确度高依然未知。读者可以尝试着训练一个自己的模型并做一些实验,作者的训练花了大概一个月时间。
推特與情分析
推特上的與情分析是一个很有力的工具,人们对某个商业品牌的评价,分析营销活动的影响,竞选活动中希拉里和川普在大众中的评价。
SemEval 2017
推特與情分析不仅受到了NLP领域的广大研究者的关注,也受到政治家和社会活动家的关注。因此从2013年开始,SemEval提出了对应的任务-情感分析。 今年,有48支队伍参与这项任务。今年的5个任务为: 1.子任务A:给定一条推文,判断积极、消极、平和三种情感。 2.子任务B:给定一条推文和一个主题,将主题判断为积极或者消极。 3.子任务C:给定一条推文和一个主题,将推文分为:强烈的积极、轻微的积极、平和、轻微的消极、强烈的消极。 4.子任务D:给定关于某个主题的推文,评估这些推文在消极和积极的分布。 5.子任务E:给定关于某个主题的推文,评估这些推文在强烈的积极、轻微的积极、平和、轻微的消极、强烈的消极中的分布。
参赛队伍中有20个队伍使用了CNN或LSTM模型。尽管如此,SVM模型依然流行,有一些队伍结合了神经网络方法或使用了词嵌入特征。
The BB_twtr system
该组工作发布在(Cliche, 2017),英语组中5个子任务排列第一。作者结合了10个CNN和10个biLSTM用来训练不同的超参和不同的预训练策略。在他们的论文中详细的叙述了网络的结构。 为了训练模型,作者使用了人工标注的推文(子任务A标注了49693条)以及没有标注的1亿推文(只是简单的标记了积极和消极)。这些推文都经过了小写、符号化、特殊符号替换链接和表情、统一重复的字母(比如niiice,niiiiiice统一为niice)。 作者使用了word2vec, GloVe and fastText等方法训练词向量,结果表明并没有哪个方法能够取得更明显的效果,因而作者采用了一种投票的策略。
令人激动的抽象摘要系统
自动摘要和自动翻译是NLP中首要的任务,目前主要有2中方法:基于抽取的方法,从原文中抽取最重要的片段;基于抽象的方法,通过生成摘要。之前基于抽取的方法处于主流地位,由于更为简单的缘故。 去年,基于RNN模型在文本生成中取得了不可思议的效果,尤其是在断文本的输入和输出,但是在长文本中却取得很差的结果。Paulus et al提出了一种神经网络模型克服了这个局限性。如下图所示,结果是令人振奋的。 作者使用biLSTM对输入进行编码,然后使用LSTM解码生成输出。他们的主要贡献是提出了内部注意力机制,分别的注意到了输出和生成的输出的连续性,以及新的训练方法:结合了标准监督单词预测和强化学习
内部注意力机制
内部注意力机制的提出是为了避免输出的重复。为了达到这个目标他们在解码的时候生成输出单词之前使用了暂时的注意力查看输入文本的前面部分。这使得模型在生成步骤使用输入的不同部分。模型也能在解码的时候使用之前的隐藏层状态。这两种方法结合使得在生成摘要输出时选择最合适的单词。
强化学习
不同的人会用不同的单词和句子顺序来生成摘要,但两种摘要都可以认为是合理的。因此,一个好的摘要不用严格的按照训练数据集中的摘要。明白了这个,作者避免使用标准的学习型算法,该算法尽量在每一个解码步骤减小与目标摘要的loss,而是使用强化学习策略,这是一种明智的选择。
end-to-end模型的良好结果
模型在CNN/Daily Mail dataset上测试,并获取到了很好质量和可读性。模型进行了预处理:输入文本标签化,全部小写,数字用0代替,一些特殊的实体被移除。
第一次实现完全非监督机器翻译
双语词汇对应,就是将原语言语料库和目标语言语料库中词对应起来组成对,是之前NLP的任务。自动对应双语词汇也能促进别的任务比如信息检索和统计机器翻译。然而这些方法大部分时间都依赖不同种类的资源,一般来说需要的初始化的双语对齐语料库就都不容易建立。 随着词嵌入取得很大的成功,交叉语料的词嵌入出现了,不同于词汇,对齐的是词嵌入空间。Conneau et al. (2018)的方法不依赖具体的资源,但能取得比有监督的方法更好的效果。 作者的方法是使用单语语料库进行训练各自的词嵌入模型,然后学习两种向量空间之间的映射,就像这种转换使得它们在公共空间内相互靠近。他们使用fastText基于Wikipedia训练非监督的词向量。下面的图片说明了训练的过程:
X代表的是英语,Y代表的是意大利语。 首先他们使用对抗学习的方法学习到转换矩阵W用来执行第一次语料对齐。他们训练了一个生成式对抗网络(GAN),Goodfellow et al. (2014),如果不熟悉GAN,可以参考这篇博文。
一些优秀的框架和工具包
AllenNLP
AllenNLP用Pytorch实现的,用于完成机器阅读理解,文本蕴涵,语义角色标注,指代消解,命名实体识别等任务。
ParlAI
ParlAI是一个用于研究对话的开源软件平台,使用python实现,用于训练和测试对话模型,提供多种数据集和模型,比如记忆模型,seq2seq和LSTMs
OpenNMT
OpenNMT实现了seq2seq模型,用于完成机器翻译,摘要,图像文字生成和语音识别。
总结
NLP中采用深度学习的方法越来越多,下面显示的是各会议中NLP采用深度学习方法的论文占比(会议包括ACL, EMNLP, EACL and NAACL)。 然而,端到端学习仅仅开始。现在依然还在处理经典的NLP任务并为之整理数据,比如清洗,标签化,一些实体的统一(链接,数字,邮箱地址等)。我们使用通用的词嵌入模型,副作用就是没有抓住特定领域短语的重要性,并且通用词嵌入模型在多语言表示表现效果不尽如人意。
更多资料
更多的关于深度学习在NLP领域的研究参考Recent Trends in Deep Learning Based Natural Language Processing by Young et al. (2017)。
From Characters to Understanding Natural Language (C2NLU): Robust End-to-End Deep Learning for NLP by Blunsom et al. (2017)讨论的是使用字母作为深度学习模型的输入,而不是采用语言相关的符号,的好处和挑战。
模型之间的比较参考comparative study of CNN and RNN for NLP, by Yin et al. (2017)
GAN的介绍可以参考这篇。
关于词嵌入的介绍可以参考这篇文章。
关于词嵌入2017年的发展参考About Word embeddings in 2017: Trends and future directions
参考文献
BB_twtr at SemEval-2017 Task 4: Twitter Sentiment Analysis with CNNs and LSTMs Mathieu Cliche (2017)
文末
面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊