【聚币网交易平台官网下载】深度文本分类综述
作者:何从庆 (本文来自作者投稿)
最近有很多小伙伴想了解深度学习在文本分类的发展,因此,笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用。
Convolutional Neural Networks for Sentence Classification (EMNLP 2014)
Kim 在 EMNLP2014 提出的 TextCNN 方法,在多个数据集上取得了很好的效果。由于其计算速度快以及可并行性,在产业界得到了广泛使用。TextCNN 的模型示意图如下图所示。
TextCNN 模型首先将文本映射成向量,然后利用多个滤波器来捕捉文本的局部语义信息,接着使用最大池化,捕捉最重要的特征。最近将这些特征输入到全连接层,得到标签的概率分布。
代码参考:
1) https://github.com/alexander-rakhlin/CNN-for-Sentence-Classification-in-Keras
2) https://github.com/brightmart/text_classification
图 1:TextCNN 模型架构
**Document Modeling with Gated Recurrent Neural Network for Sentiment
Classification (EMNLP 2015)**
Tang 等人提出了一种利用 GRU 对文档进行建模的情感分类模型。模型如下图所示。
该模型首先将文本映射为向量,然后利用 CNN/LSTM (论文中使用 3 个滤波器的 CNN)进行句子表示。另外,为了捕获句子的全局语义表征,将其输送给平均池化层,再接入 tanh 激活函数。最后将整个句子的不同宽度卷积核的向量表示接入一个 Average 层,从而得到句子平均向量表示。
然后将得到的句子表示,输入到 GRU 中,得到文档向量表示。最后将文档向量输送给 softmax 层,得到标签的概率分布。
图 2:文档级别情感分类的神经网络模型
**Recurrent Convolutional Neural Networks for Text Classification (AAAI
2015)**
Lai 等人提出了一种无人工特征的循环卷积神经网络分类方法,简称 RCNN。
RCNN 首先利用 Bi-RNN 来捕捉前后的上下文表征,然后将其 concat 起来,接着使用滤波器 filter_size=1 的卷积层,并使用最大池化操作得到与文档最相关的向量表征,最后将这些向量输入到 softmax 层,得到标签的概率表征。
代码参考:
1) https://github.com/roomylee/rcnn-text-classification
2) https://github.com/brightmart/text_classification
图 3: RCNN 的模型结构示意图
**Recurrent Neural Network for Text Classification with Multi-Task
Learning (IJCAI 2016)**
Liu 等人针对文本多分类任务,提出了基于 RNN 的三种不同的共享信息机制对具有特定任务和文本进行建模。
模型 1(Uniform-Layer
Architecture): 所有任务共享同一个 LSTM 层,并在每个特定任务后面拼接一个随机生成可训练的向量。LSTM 层的最后一个时刻的隐藏层作为输入传入到 softmax 层。
模型 2(Coupled-Layer Architecture): 每个任务具有自己独立的 LSTM 层,但是每一时刻所有任务的 hidden
state 则会和下一时刻的 character 一起作为输入,最后一个时刻的 hidden state 进行分类。
模型 3(Shared-Layer Architecture): 除了一个共享的 BI-LSTM 层用于获取共享信息,每个任务有自己独立的 LSTM 层
,LSTM 的输入包括每一时刻的 character 和 BI-LSTM 的 hidden state。
图 4:三种架构进行多任务学习建模
**Hierarchical Attention Networks for Document Classification (NAACL
2016)**
Yang 等人提出了一种用于文档分类的层次注意力机制网络,简称 HAN。这篇文章和 Tang 等人都是针对于文档分类的问题,然而,这篇文章在句子级别以及文档级别提出了注意力机制,使得模型在构建文档时是能够赋予重要内容不同的权重,同时,也可以缓解 RNN 在捕捉文档的序列信息产生的梯度消失问题。HAN 模型的模型示意图如下所示。
HAN 模型首先利用 Bi-GRU 捕捉单词级别的上下文信息。由于句子中的每个单词对于句子表示并不是同等的贡献,因此,作者引入注意力机制来提取对句子表示有重要意义的词汇,并将这些信息词汇的表征聚合起来形成句子向量。具体的注意力机制的原理可以参考:
FEED-FORWARD NETWORKS WITH ATTENTION CAN SOLVE SOME LONG-TERM MEMORY
PROBLEMS
然后,对于所有的句子向量输入到 Bi-GRU 中,捕捉句子级别的上下文信息,得到文档向量。同样地,为了奖励对文档进行正确分类的线索句,作者再次使用注意力机制,来衡量句子的重要性,得到文档向量。最后将文档向量均输入到 softmax 层,得到标签的概率分布。
代码参考:
1) https://github.com/richliao/textClassifier
2) https://github.com/brightmart/text_classification
图 3: HAN 模型结构示意图
Bag of Tricks for Efficient Text Classification (EACL 2017)
Joulin 等人提出了一种简单而又有效的文本分类模型,简称 fastText。
fastText 模型输入一个词序列(一段文本或者一句话),序列中的词与词组成特征向量,然后特征向量通过线性变换映射到中间层,中间层再映射到标签。输出这个词序列属于不同类别的概率。其中 fastText 在预测标签是使用了非线性激活函数,但在中间层不使用非线性激活函数。
代码参考:
1) https://github.com/facebookresearch/fastText
2) https://radimrehurek.com/gensim/models/fasttext.html
图 4:fastText 模型结构示意图
**Deep Pyramid Convolutional Neural Networks for Text Categorization (ACL
2017)**
Johnson 和 Zhang
提出了一种单词级别的深层 CNN 模型,来捕捉文本的全局语义表征,该模型在不增加太多的计算开销的情况下,通过增加网络深度可以获得最佳的性能,简称 DPCNN。模型结构示意图如下所示。
DPCNN 模型首先利用“text region embedding”,将常用的 word embedding
推广到包含一个或多个单词的文本区域的 embedding,类似于增加一层卷积神经网络。
然后是卷积快的叠加(两个卷积层和一个 shortcut 连接,其中 shortcut 连接类似于残差连接),与步长为 2 的最大池化层进行下采样。最后使用一个最大池化层,得到每个文档的文档向量。
代码参考:
https://github.com/Cheneng/DPCNN
图 4:DPCNN 模型结构示意图
**Using millions of emoji occurrences to learn any-domain representations
for detecting sentiment, emotion and sarcasm (EMNLP 2017)**
Felbo 等人使用数以百万计的表情符号来学习任何领域的表情符号来检测情绪、情绪和讽刺,提出了 DeepMoji 模型,并取得了具有竞争性的效果。同时,DeepMoji 模型在文本分类任务上也可以取得不错的结果。
DeepMoji 模型首先使用 embedding 层将单词映射成向量,并将每个 embedding 维度使用双正切函数映射到 [-1,1]。然后,作者使用两层的 Bi-LSTM 捕捉上下文特征。接着作者提出了一种新的注意力机制,分别将 embeddding 层以及 2 层的 Bi-LSTM 作为输入,得到文档的向量表征。最后,将向量输入到 softmax 层,得到标签的概率分布。
代码参考:
https://github.com/bfelbo/DeepMoji
图 5:DeepMoji 模型结构示意图
**Investigating Capsule Networks with Dynamic Routing for Text
Classification (EMNLP 2018)**
Zhao 等人提出了一种基于胶囊网络的文本分类模型,并改进了 Sabour 等人提出的动态路由,提出了三种稳定动态路由。模型如下所示:
该模型首先利用标准的卷积网络,通过多个卷积滤波器提取句子的局部语义表征。然后将 CNN 的标量输出替换为向量输出胶囊,从而构建 Primary
Capsule 层。接着输入到作者提出的改进的动态路由(共享机制的动态路由和非共享机制的动态路由),得到卷积胶囊层。最后将卷积胶囊层的胶囊压平,送入到全连接胶囊层,每个胶囊表示属于每个类别的概率。
代码参考:
https://github.com/andyweizhao/capsule_text_classification.
图 6:文本分类的胶囊网络体系结构
Sentiment Analysis by Capsules (WWW 2018)
Wang 等人提出了一种用于情感分类的 RNN 胶囊网络模型,简称 RNN-Capsule。(这篇文章在可视化方面做的还是不错的) 模型结构示意图如下所示。
RNN-Capsule 首先使用 RNN 捕捉文本上下文信息,然后将其输入到 capsule 结构中,该 capsule 结构一共由三部分组成:representation
module, probability module,和 reconstruction module。具体地,首先用注意力机制计算 capsule
表征;然后用 capsule 表征计算 capsule 状态的概率;最后用 capsule 表征以及 capsule 状态概率重构实例的表征。
图 7: RNN-Capsule 模型结构示意图
Graph Convolutional Networks for Text Classification (AAAI 2019)
Yao 等人提出了一种基于 graph convolutional
networks(GCN) 进行文本分类。作者构建了一个包含 word 节点和 document 节点的大型异构文本图,显式地对全局 word 利用 co-occurrence 信息进行建模,然后将文本分类问题看作是 node 分类问题。
代码参考:
https://github.com/yao8839836/text_gcn
图 7:Text GCN 的模型结构
**BERT: Pre-training of Deep Bidirectional Transformers for Language
Understanding (NAACL 2019)**
Google 提出的 BERT 模型,突破了静态词向量无法解决一词多义的问题。BERT 是基于语言模型的动态词向量,在自然语言处理的多项任务中取得了最优秀的结果。笔者对 BERT 模型进行微调,在文本分类的多个领域,诸如法律、情感等,取得了非常有竞争性的性能。
BERT 的模型架构是一个多层的双向 Transformer 编码器 (Transformer 的原理及细节可以参考 Attention is all you
need)。作者采用两套参数分别生成 BERTBASE 模型和 BERTLARGE 模型 (细节描述可以参考原论文),所有下游任务可以在这两套模型进行微调。
代码参考:
https://github.com/google-research/bert
图 8:BERT 的 Pre-training 结构和 Fine-Tuning 结构
来源:算法爱好者
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。