在过去几年中, 深度学习 (DL)在 图像识别 和 语音处理 等领域取得了巨大的进步。
它在 自然语言处理 (NLP)中的应用起初并不令人兴奋,但是随着技术的进步它也为一些常见的 NLP 任务提供了最先进的解决方案。 命名实体识别 (NER)、 词性(POS)标签 、 情感分析 通过 神经网络模型 获得了更好的解决。
在这篇文章中,我将回顾 2017 年 DL 在 NLP 领域的贡献。或许说是我想和大家分享一下我最喜欢的技术方案。2017 年,DL 在 NLP 中的使用不断扩大,在某些情况下产生了惊人的结果,所有迹象都表明这一趋势还会延续。
1. 从 word2vec 到预训练模型
词嵌入 是与 NLP 有关的 DL 最有名的技术。他们遵循哈里斯的 分配假说 ,根据这个 假说 ,具有相似含义的词通常会出现在可比较的语境中。关于词嵌入的详细解释,我建议你阅读 加布里埃尔 · 莫尔德基(Gabriel Mordecki)的文章 。诸如 word2vec (Mikolov 等,2013)和 GloVe (Pennington 等,2014)等算法已经成为该领域的先驱,尽管它们不被认为是 DL(word2vec 中的神经网络较浅,GloVe 实现了一个基于计数模型的方法。
一开始,对于一个需要词嵌入的 NLP 问题,我们倾向于从一个与其领域相关的大语料库中训练我们自己的模型。当然,这不是最好方法,因为预训练模型的出现。数据显示今年,预训练词嵌入模型仍然是 NLP 中的一个关键模型。
虽然我们看到一些进展,但在这方面还有很多工作要做。例如,NLP 框架 spaCy 以本地方式将词嵌入和 DL 模型集成到了 NER 和 Dependency Parsing 等任务中,允许用户更新模型或使用自己的模型。在将来,对于在 NLP 框架中使用的特定领域(例如生物学,文学,经济等)预先训练好的模型是有益的。
2. 通用嵌入到特定用例
也许使用预训练的词嵌入的主要缺点是训练数据与我们需要解决问题的实际数据之间存在单词分布差。假设你有关于跨领域的问题呢,例如:经济学的生物学论文、食谱。你可能没有足够大的语料库来训练良好的嵌入,所以通用嵌入语言很可能会帮助你提高结果。但是如果可以将通用嵌入调整为适合你的特定用例呢?
这种适应性通常被称为 NLP 中的跨域或 域适应 技术,它非常接近于 转移学习 。今年, Yang 等人 提出了一个正则化的 skip-gram 模型,用于学习目标域的嵌入,给定源域的嵌入。这是一个全新的领域,我认为它将在近期会得到更多的关注。
3. 情感分析的威力
今年, Radford 等人 正在探索字节级循环语言模型的特性,其目的是预测亚马逊评论文本中的下一个字符,当时他们发现训练模型中的单个神经元对情感价值具有高度的预测性。这个单一的 "情感神经元" 能够以相当准确的方式将评论分类为正面或负面。
注意到这种行为之后,他们决定在 斯坦福情绪树库 上测试模型,发现它的准确性是 91.8%,而之前的最好的是 90.2%。他们的模型,以无监督的方式进行训练,至少在一个特定但广泛研究的数据集上实现了的情感分析。
3.1 情绪神经元正在工作
由于模型在角色层次上工作,所以神经元在文本中改变了每个角色的状态,看到它的行为是相当惊人的。
例如,单词 best 之后,神经元的值变为强正值。然而,这种效果随着 horrendous 的词语的消失而消失,这是有道理的。
3.2 生成极性偏见的文本
当然,训练好的模型仍然是一个有效的生成模型,所以它可以用来生成类似亚马逊评论的文本。但是,我觉得更棒的是,你可以通过简单地覆盖情感神经元的价值来选择生成的文本的积极性。
情绪固定为正值 |
情绪固定为负面 |
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. |
作者选择的 NN 模型是由 Krause 等人 提出的 乘法(multiplicative)LSTM 。 主要是因为他们观察到,它们正在探索的超参数设置比正常的 LSTM 收敛的快。它有 4,096 个单位,并接受了 8200 万亚马逊评论的语料库的训练。为什么训练良好的模式能够以一种精确的方式捕捉到情感概念仍然是一个迷人的问题。同时,你可以尝试训练你自己的模型并进行实验。
3.3 Twitter 中的情感分析
无论是人们对企业品牌的评价,分析营销活动的影响,还是衡量竞选期间对希拉里 · 克林顿和唐纳德 · 特朗普的民意调查,Twitter 中的情感分析都是一个非常强大的工具。
3.3.1:SemEval 2017
Twitter 中的情感分析不仅引起了 NLP 研究人员的关注,而且也引起了政治和社会科学界的关注。这就是为什么 2013 年以来, SemEval 大受关注的原因。今年共有 48 支参赛队参加,为了了解其内容,让我们来看看今年提出的五个子任务:
1. 子任务 A:给一则推文,判断其表达的情形:正面,负面或中性。
2. 子任务 B:给出一则推文和一个话题,判断主题表达的情感正面与负面。
3. 子任务 C:给出一个推文和一个话题,判断推文中传达的情绪等级:强积极,弱积极,中性,弱消极和强消极。
4. 子任务 D:给出一组关于话题的推文,判断这组推文在积极和消极之间的分布。
5. 子任务 E:给出一组关于某个话题的推文,估计推文在强积极、弱积极、中性、弱消极和强消极的分布情况。
子任务 A 是最常见的任务,有 38 个团队参与了这个任务,但是其他的则更具挑战性。主办方表示,DL 方法的使用正在不断增加,今年有 20 个团队使用 卷积神经网络 (CNN)和 长期短期记忆 (LSTM)等模型。此外,尽管 SVM 模型仍然非常流行,但一些参与者将它们与神经网络方法或者使用了词嵌入特征相结合。
3.3.2:BB_twtr 系统
今年我发现一个纯的 DL 系统 BB_twtr 系统 (Cliche,2017)在 5 个子 任务中排名第一。作者将 10 个 CNN 和 10 个双向 LSTM 结合起来,使用不同的超参数和不同的预训练策略训练。
为了训练这些模型,作者使用了人工标记的推文(子任务 A 有 49,693 个),并且构建了一个包含 1 亿个推文的未标记数据集,通过简单的标记来提取推特数据集中表示积极的积极表情符号,如:-),反之亦然消极鸣叫。为了对 CNN 和双向 LSTM 输入的词嵌入进行预训练,作者使用 word2vec,GloVe 和 fastText 在未标记的数据集上构建词嵌入。然后他使用隔离的数据集来添加积极和消极的信息,然后使用人类标记的数据集再次提炼它们。之前的 SemEval 数据集的实验表明,使用 GloVe 会降低性能。然后作者将所有模型与软投票策略结合起来。由此产生的模型比 2014 年和 2016 年的历史最好的历史成绩更胜一筹。
这项工作表明了将 DL 模型结合起来,可以在 Twitter 中的情感分析中超越监督学习的方法。
4. 一个令人兴奋的抽象概括系统
自动摘要 和 自动翻译 是最早的 NLP 任务。自动摘要有两种主要的方法:一是通过从源文本中提取最重要的段而建立的,二是通过生成文本来创建摘要。
近年来,基于 RNN 的模型在文本生成方面取得了惊人的成果。它们对于处理短的输入和输出文本表现非常好,但处理长文本往往是不连贯的。 保卢斯(Paules)等 提出了一种新的神经网络模型来克服这个局限性。结果很好,如下图所示:
他使用双向 LSTM 编码器读取输入,并使用 LSTM 解码器生成输出。他们的主要贡献是使用一种新的内部注意力策略分别关注输入和连续生产的输出,并且结合了标准监督词语预测和强化学习。
内部注意力策略的目标是避免输出中的重复。它们在解码时使用时间注意力来查看输入文本的前一段,然后决定下一个将要产生的字。这迫使模型在生成过程中使用输入的不同部分。他们还允许模型从解码器访问以前的隐藏状态。然后将这两个功能组合起来,为输出摘要选择最好的单词。
创建摘要时,两个不同的人将使用不同的单词和句子,但这两个摘要都是可行的。因此,一个好的摘要不一定是与训练数据集中的序列相匹配的单词序列。基于这一点,作者没有使用 teacher forcing 算法,它可使每个解码步骤的损失最小化,他们通过使用强化学习策略,获得了更好的性能。
双语词典归纳,即用源语言和目标语言的单语语料库获取映射关系,这是一个古老的 NLP 任务。自动生成双语词典有助于其他 NLP 任务,如 信息检索 和 统计机器翻译 。然而,这个词典并不是容易获取或者很容易建立。
随着词嵌入的成功,跨语言词嵌入的想法也出现了,目标是对齐嵌入空间而不是词典。不幸的是,这种方法也依赖于双语词典或平行语料库。 Conneau et al· (2018)提出了一个非常有前景的方法,不依赖于任何特定的资源,且对于多个语言对的次翻译、句子翻译检索和跨语言单词相似度任务上优于监督学习的方法。
该方法是将输入的两组单词嵌入在单语数据上进行独立训练,并学习它们之间的映射,以便共享空间中的翻译结果。他们使用 fastText 在维基百科文档上训练的无监督单词向量。以下图片说明了关键的想法:
红色的 X 分布是英语单词的嵌入,蓝色的 Y 分布是意大利语单词的分布。
首先,他们使用 对抗学习 来学习旋转矩阵 W,W 执行第一次原始对齐。他们根据 Goodfellow 等人 提出的主张,基本上训练了一个 生成对抗网络 (GAN)。要了解 GAN 是如何工作的,我建议你看 这篇由 Pablo Soto 撰写的 优秀文章 。
为了使用对抗学习对问题进行建模,他们将鉴别器定义为具有决定作用的角色,从 WX 和 Y 随机采样的一些元素(参见上图中的第二列),每个元素属于哪种语言。然后,他们训练 W 以防止鉴别者做出好的预测。这在我看来非常聪明,直接的结果是相当不错的。
之后,他们再应用两个步骤来完善映射。一是为了避免罕见字引入映射计算中的噪声。另一步主要是使用学到的映射和距离度量来构建实际的翻译结果。
这个方法在一些案例中表现的很不错,例如,对于英文 - 意大利语的翻译,在 P @ 10 的情况下,它在 1500 个单词上的准确率比最优的高出 17%。
如 TensorFlow , Keras 或 PyTorch ,他们应用都非常广泛。然而,面向特定开源 NLP 的 DL 框架和工具才刚刚兴起。其中有三个引起了我的注意,你可能会觉得有趣。
6.1.AllenNLP
AllenNLP 框架 是建立在 PyTorch 之上,它能够轻松地使用语义 NLP 任务 DL 方法。其目标是让研究人员设计和评估新模型,它包含了常用语义 NLP 任务模型的参考实现,如语义角色标注,文本引用。
6.2.ParlAI
ParlAI 框架 是用于对话研究的开源软件平台。它是用 Python 实现的,其目标是为对话模型的共享,训练和测试提供一个统一的框架。它提供了该领域流行的数据集,并支持多种模型,包括记忆网络、seq2seq 和 LSTM 等神经模型。
3.OpenNMT
OpenNMT 工具包 是专门序列到序列模型的通用框架。它可以用于执行机器翻译,摘要,图像到文本和语音识别之类的任务。
不可否认的是用于解决 NLP 问题的 DL 技术正在持续发展。一个重要的指标就是过去几年在 ACL , EMNLP , EACL 和 NAACL 等关键 NLP 会议上的深度学习论文比例正在提升。
然而,关于端到端学习的研究才刚刚开始。我们仍然使用一些经典的 NLP 任务来准备数据集,比如清理,标记或统一一些实体(例如 URL,数字,电子邮件地址等)。我们也使用通用嵌入,其缺点是不能捕捉到特定领域术语的重要性,而且对于多字表达式来说表现不佳。
有关 NLP 研究中的深度学习方法的更多信息,我强烈建议你阅读 Young 等人的优秀论文 " 基于深度学习的自然语言处理的最新趋势 "。
本文由北邮 @爱可可 - 爱生活 老师推荐, 阿里云云栖社区 组织翻译。
文章原标题《Deep Learning for NLP, advancements and trends in 2017》
作者: Javier Couto PM&研究科学家。自然语言处理博士学位
译者:虎说八道,审校:。
文章为简译,更为详细的内容,请查看 原文
来源: http://click.aliyun.com/m/37319/