Coder Social home page Coder Social logo

nlproadmap's Introduction

nlpRoadmap

Reference

GitHub - DeepNLP-models-Pytorch
GitHub - nlp-tutorial
GitHub - nlp-roadmap

√ Theory, 理论篇: Deep Learning

  • RNN
  • LSTM/GRU
  • TextCNN

√ Theory, 理论篇: Language Model & Word Embedding

Word Embedding

  • NNLM
  • word2vec
    • Skip-gram
    • C-BOW
  • GloVe
    GloVe词向量理解
    GloVe与word2vec的联系
    GloVe可以被看成是更换了目标函数和权重函数的全局word2vec
  • fastText
    fastText论文解读、fastText与word2vec的区别和联系
    • fastText可以用来学习词向量,也可以进行有监督的学习,如文本分类
    • 相似点:fastText的结构与word2vec的CBOW的结构相似,并且采用了相同的优化方法,如Hierarchical Softmax
    • 不同点:有监督fastText其实是将CBOW模型的中心词改成label(即输出层变化),将上下文词改成整个句子中的词,包括N-gram(即输入层变化)

Pretrained NLP Models

  • Seq2Seq
    真正提出Seq2Seq的是文献[1],但文献[2]更早地使用了Seq2Seq模型来解决机器翻译的问题。文献[1]引用了文献[2]。

    • [1] Sequence to Sequence Learning, 2014, Google
      此文的工程性更强,计算量很大:8-GPU machine, Training took about a ten days with this implementation
    • [2] Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation, 2014
      文献[2]末尾详细给出了RNN Encoder-Decoder的公式推导,此文的最大贡献是提出了GRU结构,LSTM的简化版。
  • Attention
    此文作者与Seq2Seq的作者相同,包括Yoshua Bengio大神,学术味很浓,公式推导很详尽。
    此文是第一个将attention机制应用到NLP领域的工作,把attention机制用到了神经网络机器翻译的RNN Encoder-Decoder模型中。
    Attention论文的中文翻译
    延伸阅读:注意力机制(Attention Mechanism)在自然语言处理中的应用

  • Transformer
    从英语阅读来讲,此文易读,但是看不懂:(
    拜读了对Transformer的解读之后,感慨:Transformer真的是简约不简单! 推荐:
    The Illustrated Transformer-Jay Alammar
    The Illustrated Transformer【译】

  • ELMO
    Embeddings from Language Models。ELMo是双向语言模型biLM的多层表示的组合,基于大量文本,从深层的双向语言模型(deep bidirectional language model)中的内部状态(internal state)学习而来。不仅能够学习到词语用法在语义和语法上的复杂特点,而且能够学习不同上下文情况下的词汇多义性。论文标题:Deep contextualized word representations,即深度语境化的单词表示,可以根据上下文学习。
    ELMo算法介绍

  • OpenAI GPT
    OpenAI GPT-译
    此文提出一种半监督的方式来提升语言理解的任务。

    • 使用非监督的预训练和监督方式的微调(unsupervised pre-training and supervised fine-tuning)。目标是学习一个通用的语言表示,然后经过很小的调整就可以应用在各种任务中。这个模型的设置不需要目标任务和非标注的数据集在同一个领域。
    • 模型有两个过程:1,在未标记的数据上训练语言模型,即unsupervised pre-training;2,然后使用相应的监督目标使这些参数适应目标任务
    • **上与ELMo相似,即迁移学习在nlp领域的应用。不同点是ELMo的语言模型是基于LSTM的BiLM,而GPT的语言模型是基于多层Transformer的decoder的语言模型,相比LSTM,可以更好的捕获长距离语言结构。另外,在有监督学习微调时,需要将不同任务的输入变换成预训练模型需要的形式。
    • 在12个NLP任务上进行了实验,9个任务获得了最好的结果
  • Google BERT
    与Transformer的那篇解读是同一个Blog。
    The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning)-Jay Alammar
    The Illustrated BERT【译】
    十分钟读懂谷歌BERT模型

    • BERTBidirectional Encoder Representations from Transformers,基于Transformer的双向编码表征器
      BERT刷新了11项NLP任务的性能记录
    • ELMO .vs. BERT。ELMO,feature-based pre-trained language representation,仅仅将预训练得到的表示作为附加的特征,同时语言模型是单向的
    • GPT .vs. BERT。fine-tuning pre-trained language representation,语言模型也是单向的,同时对特定的下游任务,结构需要变化,以保证输入形式匹配
    • BERT也是Pre-training + fine-tuning的方法
    • BERT关键词(1):masked language model(MLM),遮蔽语言模型,可以做到预训练双向的语言模型,即 Bidirectional
    • BERT关键词(2):next sentence prediction,下一句预测,让模型理解两个句子之间的联系,比如问答任务中的Question和Answer
    • BERT关键词(3):Deep + Transformer,BERT Transforme 使用双向self-attention,在文献中,双向 Transformer通常被称为“Transformer encoder”

下图:BERT与ELMO、GPT的区别,以及BERT在分类、命名实体识别等特定NLP任务上的结构图

相关阅读【将Attention、Transformer、ELMO、GPT和BERT联系到一起】

终于于于认识你:BERT,了解了来龙去脉,你也是站在了巨人的肩膀上……

Practice,实践篇

FudanNLP/nlp-beginner

[ongoing] Sequence Labeling, POS Tagging/NER

序列标注:词性标注/命名实体识别
更多内容/代码:Github-huankiki/sequence_labeling_nlp

  • HMM/CRF/MEM(最大熵)
  • (Bi)LSTM + CRF

Text Classification & Sentiment Analysis

文本分类、情感分析

  • LR/Softmax + BOW/tf-idf + n-gram
  • SVM + BOW/tf-idf + n-gram
  • TextCNN
  • LSTM + Word Embedding

Language Model (NN)

基于神经网络的语言模型的训练

  • word2vec/gensim
  • RNN/LSTM/GRU

Dialog System

对话系统

Topic Model

主题模型

  • LDA

nlproadmap's People

Contributors

huankiki avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.