赞
踩
生成情感倾向文本
该模型是生成式模型,所以能够同样的用于生成Amazon评论文本。可以通过简单的覆盖情感神经元的值即可生成有倾向性的文本。
|–|–|
|Sentiment fixed to positive|Sentiment fixed to negative|
|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个单元。
为什么情感倾向判断的准确度高依然未知。读者可以尝试着训练一个自己的模型并做一些实验,作者的训练花了大概一个月时间。
推特與情分析
推特上的與情分析是一个很有力的工具,人们对某个商业品牌的评价,分析营销活动的影响,竞选活动中希拉里和川普在大众中的评价。
推特與情分析不仅受到了NLP领域的广大研究者的关注,也受到政治家和社会活动家的关注。因此从2013年开始,SemEval提出了对应的任务-情感分析。
今年,有48支队伍参与这项任务。今年的5个任务为:
1.子任务A:给定一条推文,判断积极、消极、平和三种情感。
2.子任务B:给定一条推文和一个主题,将主题判断为积极或者消极。
3.子任务C:给定一条推文和一个主题,将推文分为:强烈的积极、轻微的积极、平和、轻微的消极、强烈的消极。
4.子任务D:给定关于某个主题的推文,评估这些推文在消极和积极的分布。
5.子任务E:给定关于某个主题的推文,评估这些推文在强烈的积极、轻微的积极、平和、轻微的消极、强烈的消极中的分布。
参赛队伍中有20个队伍使用了CNN或LSTM模型。尽管如此,SVM模型依然流行,有一些队伍结合了神经网络方法或使用了词嵌入特征。
该组工作发布在(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,而是使用强化学习策略,这是一种明智的选择。
模型在CNN/Daily Mail dataset上测试,并获取到了很好质量和可读性。模型进行了预处理:输入文本标签化,全部小写,数字用0代替,一些特殊的实体被移除。
第一次实现完全非监督机器翻译
双语词汇对应,就是将原语言语料库和目标语言语料库中词对应起来组成对,是之前NLP的任务。自动对应双语词汇也能促进别的任务比如信息检索和统计机器翻译。然而这些方法大部分时间都依赖不同种类的资源,一般来说需要的初始化的双语对齐语料库就都不容易建立。
随着词嵌入取得很大的成功,交叉语料的词嵌入出现了,不同于词汇,对齐的是词嵌入空间。Conneau et al. (2018)的方法不依赖具体的资源,但能取得比有监督的方法更好的效果。
作者的方法是使用单语语料库进行训练各自的词嵌入模型,然后学习两种向量空间之间的映射,就像这种转换使得它们在公共空间内相互靠近。他们使用fastText基于Wikipedia训练非监督的词向量。下面的图片说明了训练的过程:
X代表的是英语,Y代表的是意大利语。
首先他们使用对抗学习的方法学习到转换矩阵W用来执行第一次语料对齐。他们训练了一个生成式对抗网络(GAN),Goodfellow et al. (2014),如果不熟悉GAN,可以参考这篇博文。
一些优秀的框架和工具包
AllenNLP用Pytorch实现的,用于完成机器阅读理解,文本蕴涵,语义角色标注,指代消解,命名实体识别等任务。
ParlAI是一个用于研究对话的开源软件平台,使用python实现,用于训练和测试对话模型,提供多种数据集和模型,比如记忆模型,seq2seq和LSTMs
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
参考文献
初级工程师拿到需求会直接开始做,然后做着做着发现有问题了,要么技术实现不了,要么逻辑有问题。
而高级工程师拿到需求会考虑很多,技术的可行性?对现有业务有没有帮助?对现有技术架构的影响?扩展性如何?等等…之后才会再进行设计编码阶段。
而现在随着跨平台开发,混合式开发,前端开发之类的热门,Android开发者需要学习和掌握的技术也在不断的增加。
通过和一些行业里的朋友交流讨论,以及参考现在大厂面试的要求。我们花了差不多一个月时间整理出了这份Android高级工程师需要掌握的所有知识体系。你可以看下掌握了多少。
混合式开发,微信小程序。都是得学会并且熟练的
这些是Android相关技术的内核,还有Java进阶
高级进阶必备的一些技术。像移动开发架构项目实战等
Android前沿技术;包括了组件化,热升级和热修复,以及各种架构跟框架的详细技术体系
以上即是我们整理的Android高级工程师需要掌握的技术体系了。可能很多朋友觉得很多技术自己都会了,只是一些新的技术不清楚而已。应该没什么太大的问题。
而这恰恰是问题所在!为什么别人高级工程师能年限突破30万,而你只有十几万呢?
就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?
我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。
高级工程师能年限突破30万,而你只有十几万呢?
就因为你只需补充你自己认为需要的,但并不知道企业需要的。这个就特别容易造成差距。因为你的技术体系并不系统,是零碎的,散乱的。那么你凭什么突破30万年薪呢?
我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。而但凡只要有人因为我的这份高级系统大纲以及这些话找到了方向,并且付出行动去提升自我,为了成功变得更加努力。那么我做的这些就都有了意义。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。