美文网首页NLP
干货 | 史上最详尽的NLP预处理模型汇总

干货 | 史上最详尽的NLP预处理模型汇总

作者: 人工智能遇见磐创 | 来源:发表于2019-04-08 10:20 被阅读0次

近年来,自然语言处理(NLP)的应用程序已经无处不在。NLP使用率的快速增长主要归功于通过预训练模型实现的迁移学习概念,迁移学习本质上是在一个数据集上训练模型,然后使该模型能够适应在不同的数据集上执行不同的NLP操作。这一突破使得每个人都能轻松地开启NLP任务,尤其是那些没有时间和资源从头开始构建NLP模型的人。所以,使用预训练模型处理NLP任务是目前非常热门的研究方向,本文将重点介绍八个预训练的NLP模型以及每个模型的相关资源。

一、 为什么要使用预训练模型

先前的研究者已经为我们设计了一个基准模型,我们可以很方便地在自己的NLP数据集上使用该预训练模型,而不是从头开始构建模型来解决类似的NLP问题。此外,使用这些最先进的预训练模型,可以帮助我们节省大量的时间和计算资源。

二、 预训练模型的分类

根据预训练模型的应用,我们可以将其分为三类:

  • Multi-Purpose NLP Models

    • ULMFiT
    • Transformer
    • Google's BERT
    • Transformer-XL
    • OpenAI's GPT-2
  • Word Embeddings

    • ELMo
    • Flair
  • Other Pretrained Models

    • StanfordNLP

三、 多用途NLP模型(Multi-Purpose NLP Models)

多用途模型是NLP领域的热门话题。这些模型为我们所关注的NLP应用提供了动力——机器翻译、问答系统、聊天机器人、情感分析等。这些多用途NLP模型的核心是语言建模的概念。简单来说,语言模型的目的是预测序列中的下一个单词或字符。我们接下来会通过以下五个预处理模型来理解这一概念,我已经为每个模型提供了研究论文和项目链接。让我们一起来探索它们吧!

1. ULMFiT

ULMFiT是由Jeremy Howard和DeepMind的Sebastian Ruder三位科学家提出并设计的。在文本分类任务方面,ULMFiT要优于许多最先进的技术,这个方法涉及到将一个在wikitex103数据集上训练的预处理语言模型微调为一个新的数据集,使其不会忘记它以前学到的东西。另一方面,ULMFiT需要很少的例子就能产生这些令人印象深刻的结果,这使得它更容易让人理解和实现。

此外,如果我们想了解更多的关于ULMFiT的信息,请参阅:

2. Transformer

Transformer结构是近几年来NLP主要发展的核心。它在2017年由谷歌推出。当时,循环神经网络(RNN)被用于语言任务,如机器翻译和问答系统等。而这种Transformer结构要优于RNN和CNN,且训练模型所需的计算资源也减少了。我们可以参考以下的比较:

谷歌官方解释说:"transformer应用了一种自我关注机制,它可以直接模拟句子中所有单词之间的关系,而不用考虑它们的位置如何。"它使用了固定大小的上下文(也就是前面的单词)来实现这一点。例如:She found the shells on the bank of the river。transformer模型可以一步理解"bank"在这里指的是海岸,而不是金融机构。

通过以下资料可以学习更多有关Transformer的资源:

3. Google's BERT

自谷歌发布结果以来,Bert框架就掀起了一股波澜,并且还开放了源代码背后的代码。Bert也许不能标志着一个新的NLP时代,但毫无疑问,Bert是一个非常有用的框架,可以很好的适用于各种NLP任务。

BERT是双向编码器的缩写,它考虑单词两侧的上下文。以前的方法都是一次性考虑一个词的一侧,左侧或是右侧。这种双向性的方法可以有助于模型更好地理解使用单词的上下文。此外,BERT还可以进行多任务学习,即可以同时执行不同的NLP任务。

BERT是第一个用于预训练NLP模型的无监督方法、深度双向系统,但它只能使用纯文本语料库进行训练。在发布时,BERT正在为11项自然语言处理任务生成最新的结果,可以支持用户在短短几个小时内(在单个GPU上)使用BERT训练自己的NLP模型(如:问答系统)。

更多关于Google's BERT的学习资料:

4. Google's Transformer-XL

从长远来看谷歌发布的这一版本的Transformer模型可能是NLP中一个非常重要的版本。想象一下,当你正在读书时,突然出现一个单词或句子,而这个单词和句子在书的开头已经提到过来。也许我们有时可以回想起来它是什么,但计算机很难建立这种长期的依赖关系模型。正如我们上边降到的Transformers可以很容易的做到这一点,但它是用固定长度的上下文实现的,也就导致了这种方式最大的缺点是没有太多的灵活性。

Transformer-XL很好的弥补了这个差距,它由谷歌人工智能团队研发的一种新型的NLP架构,可以帮助计算机理解超出固定长度限制的上下文。此外,Transformer-XL比一般的Transformers速度要快1800倍。

Transformer-XL在和各种语言建模的对比上,取得了不错的结果。 下图是和其中一种模型在各类数据上的对比结果:

有关Transformer-XL的更多学习资源:

5. OpenAI's GPT-2

这算是一个比较有争议的项目,因为一些人觉得GPT-2的发布是OpenAI的一个营销噱头。不过,我们至少要尝试一下OpenAI发布的代码,这是很重要的。

先交代一个背景:OpenAI在2月份的时候写了一篇博文,声称他们设计了一个名为GPT-2的NLP模型,这个模型非常好,以至于他们担心恶意使用而没有发布完整版本的费用。这件事一下子引起了社会各界的关注。

GPT-2经过训练,可以预测40GB互联网文本数据中的下一个词。这个模型其实也是一个基于transformer训练的模型,它训练了一个800万网页的数据集。他们在自己的网站上发布的结果令人震惊:这个模型能够根据我们输入的几个句子编织出一个完全清晰的故事。查看此示例:

这个结果让人很难以置信。后来,开发人员已经发布了一个小得多的GPT-2版本供研究人员和工程师测试。 原始模型有15亿个参数,开源样本模型有1.17亿个。

有关GPT-2的更多学习资源:

四、 词嵌入向量模型(Word Embeddings)

我们使用的大多数机器学习和深度学习算法都无法直接处理字符串和纯文本。这些技术要求我们在文本数据执行任何任务(如回归或分类)之前将其转换为数字。简单来说,Word Embeddings是将文本块转换为用于执行NLP任务的数字。Word Embeddings格式通常尝试使用字典将单词映射到向量。

在本节中,我们将介绍两个最先进的NLP单词嵌入。我还提供了项目链接,这样您就可以实际了解每个主题。

1. ELMO

ELMo是语言模型嵌入(Embeddings from Language Models)的缩写,在构建NLP模型的环境中非常有用。具体来看,ELMo是一种在向量和Embeddings中表示单词的新方法,这些ELMo Embeddings有助于我们在多个NLP任务上获得最棒的结果,如下所示:

让我们来了解一下ELMo的工作原理: 回想一下我们之前讨论过的双向语言模型,从中我们可以得到启示,ELMo单词向量是在双层双向语言模型(biLM)之上计算的, 这个biLM模型有两层堆叠在一起,每层都有2次传递(前传和后传)。而ELMo单词表示考虑用于计算单词Emebeddings的完整输入句子。

有关ELMo的更多学习资源:

2. FLair

Flair不完全是一个Word Embeddings,而是一个Word Embeddings的组合。我们可以将Flair称为NLP库,它结合了诸如GloVe,BERT,ELMo等Word Embeddings的内容。由Zalando Research的优秀人员开发并开源了代码Flair。

此外,该团队已经为以下NLP任务发布了几个预训练模型:

  • Name-Entity Recognition (NER)
  • Parts-of-Speech Tagging (PoS)
  • Text Classification
  • Training Custom Models

下表格展示了其效果:

有关Flair更多的学习资源:

五、 其它预训练模型(Other Pretrained Models)

1. Stanford NLP

该作者声明 作者声称StanfordNLP支持超过53种语言,真正开辟了很多在非英语语言中应用NLP技术的可能性。如:印度语、中文和日语。这对于NLP往非英语领域的拓展有极大的帮助。

StanfordNLP是由一系列经过预先训练的NLP模型组成的集合。这些模型不仅经过实验室的测试,还被作者用于2017年和2018年康奈尔大学的竞赛。在StanfordNLP中打包的所有预训练的NLP模型都是基于PyTorch构建的,我们可以在自己的注释数据上进行训练和评估。

此外,我们还应该关注StanfordNLP的两个主要原因是:

  • 用于执行文本分析的完整神经网络pipeline,包括:
    • 符号化(Tokenization)
    • Multi-word token (MWT)扩展
    • 词形还原
    • 词性标注(POS)和形态特征标记
    • 依赖性解析(Dependency Parsing)
  • 一个稳定的官方维护的CoreNLP Python接口

下面为大家提供更多的关于STanfordNLP的学习资源:

六、总结

本文为大家详细总结、概述了八个NLP的预处理模型。但现有的预处理模型不仅有这些,我们可以访问:https://paperswithcode.com/,学习更多的NLP预处理模型。

此外,以下是学习NLP的一些有用资源:

相关文章

  • 干货 | 史上最详尽的NLP预处理模型汇总

    近年来,自然语言处理(NLP)的应用程序已经无处不在。NLP使用率的快速增长主要归功于通过预训练模型实现的迁移学习...

  • 史上最详尽的NLP预处理模型汇总

    文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。 转自 | 磐创A...

  • 分类学习器的构建

    目录 变量选择 变量筛选 模型选择 变量预处理 模型设计和训练 模型优化 模型检验 1、特征选择 在NLP模型、机...

  • Note - Pytorch + AllenNLP

    AllenNLP是基于pytorch 的NLP研究库,提供一些训练好的模型,对NLP过程中的数据预处理(读写数据集...

  • Gensim如何冻结某些词向量进行增量训练

    Gensim是一个可以用于主题模型抽取,词向量生成的python的库。 像是一些NLP的预处理,可以先用这个库简单...

  • 动手学深度学习-Task02

    任务名称 文本预处理;语言模型;循环神经网络基础 学习心得 1、鉴于自己从事NLP已有一段时间,因此该部分还是稍微...

  • NLP预处理

    英语: 1.去杂乱: 1.1 转化为小写字母 1.2 数字转化为words 或者移除数字 1.3 移除标点符号其他...

  • tflite模型推理

    模型输入的预处理 这个预处理其实就是模型训练阶段的预处理流程,和它对齐就好,特征工程常见的一些预处理包括了: 图像...

  • 史上最全的广州房产抵押贷款干货汇总!

    史上最全的广州房产抵押贷款干货汇总!(建议收藏) 关于广州房产抵押贷款(简介) 广州房产抵押贷款的渠道 广州房产抵...

  • 最简单的回归模型-线性回归及其变体_chapter6

    一、在建立线性回归模型之前需要考虑的: 1、数据预处理:线性回归是最简单的回归模型,模型具有很好的可解释性,因而广...

网友评论

    本文标题:干货 | 史上最详尽的NLP预处理模型汇总

    本文链接:https://www.haomeiwen.com/subject/oaayiqtx.html