TextClassification-Keras
该代码存储库实现了使用KERAS框架进行文本分类的各种深度学习模型,其中包括: FastText , Textcnn , Textrnn , Textbirnn , TextAttBirnn , Han , Rcnn , Rcnnvariant等。除了还包括模型实现,还包括一个简化的应用程序。
指导
- 环境
- 用法
- 模型
- fastText
- textcnn
- Textrnn
- Textbirnn
- Textattbirnn
- 汉
- rcnn
- rcnnvariant
- 待续...
- 参考
环境
- Python 3.7
- Numpy 1.17.2
- TensorFlow 2.0.1
用法
所有代码都位于目录/model中,每种模型都有一个相应的目录,其中放置了模型和应用程序。
例如,fastText的模型和应用位于/model/FastText下,模型零件为fast_text.py ,应用程序部件为main.py
模型
1个fastText
FastText是在纸袋中提出的,以进行有效的文本分类。
1.1纸上的描述

- 使用查找表, ngram秘密的袋子向单词表示。
- 单词表示形式平均为文本表示,这是一个隐藏的变量。
- 文本表示依次馈送到线性分类器。
- 使用SoftMax函数来计算预定义类上的概率分布。
1.2在这里实施
FastText的网络结构:

2 textcnn
在论文卷积神经网络中提出了textcnn,以进行句子分类。
2.1纸上的描述

- 用静态和非静态通道表示句子。
- 在多个滤波器宽度和特征地图上进行卷积。
- 使用最大超时池。
- 将完全连接的层与辍学和SoftMax Ouput一起使用。
2.2在这里实施
TextCNN的网络结构:

3 Textrnn
Textrnn已在纸质循环神经网络中提到,用于通过多任务学习进行文本分类。
3.1纸上的描述

3.2在这里实施
Textrnn的网络结构:

4 Textbirnn
TextBirnn是基于Textrnn的改进模型。它将网络结构中的RNN层改进到双向RNN层中。希望不仅可以考虑前向编码信息,还可以考虑反向编码信息。尚未发现相关论文。
Textbirnn的网络结构:

5 textattbirnn
TextattBirnn是一个改进的模型,它基于Textbirnn介绍了注意机制。对于通过双向RNN编码获得的表示向量,该模型可以专注于通过注意机制与决策最相关的信息。注意机制首先是在纸神经机器翻译中提出的,通过共同学习对齐和翻译,此处的注意机制的实现是指带有注意力的纸质馈送网络可以解决一些长期的记忆问题。
5.1纸上的描述

在纸质进料前网络中,注意力可以解决一些长期记忆问题,从而简化了馈电注意,如下所示,

功能a (可学习的功能)被认为是供稿前向网络。在此公式中,可以将注意力视为通过计算状态序列h的自适应加权平均值来产生输入序列的固定长度嵌入c
5.2在这里实施
此处未介绍注意力的实现,请直接参考源代码。
TextattBirnn的网络结构:

6汉
汉是在纸质分层注意网络中提出的,用于文档分类。
6.1纸上的描述

- 单词编码器。通过双向gru编码,给定单词的注释是通过连接前向隐藏状态和向后隐藏状态来获得的,该状态总结了当前时间步骤中围绕单词的整个句子的信息。
- 单词关注。通过单层MLP和SoftMax功能,可以计算出与先前单词注释相比的归一化重要性权重。然后,将句子向量计算为基于权重注释单词的加权总和。
- 句子编码器。以与单词编码器相似的方式,使用双向gru来编码句子以获取句子的注释。
- 句子注意。与单词的注意相似,请使用单层MLP和SoftMax功能来获得句子注释的权重。然后,根据权重计算句子注释的加权总和,以获取文档向量。
- 文档分类。使用SoftMax函数来计算所有类的概率。
6.2在这里实施
这里的注意力是基于喂食的,这与TextattBirnn中的关注相同。
Han的网络结构:

由于嵌入,双向RNN的参数,并且注意层有望在时间步长维度上共享,因此在此处使用定时式包装器。
7 rcnn
RCNN是在纸质卷积神经网络中提出的,用于文本分类。
7.1纸上的描述

- 单词表示学习。 RCNN使用复发结构,即双向复发性神经网络来捕获上下文。然后,将单词及其上下文结合起来以呈现单词。并将线性转化与
tanh激活Fucntion一起应用于表示。 - 文本表示学习。当计算单词的所有表示形式时,它将应用一个元素的最大通用层,以捕获整个文本中最重要的信息。最后,进行线性转换并应用SoftMax函数。
7.2在这里实施
RCNN的网络结构:

8 rcnnvariant
RCNNVARIANT是基于RCNN的改进模型,具有以下改进。尚未发现相关论文。
- 这三个输入更改为单个输入。删除了左和右上下文的输入。
- 使用双向LSTM/GRU代替传统RNN来编码上下文。
- 使用多通道CNN代表语义向量。
- 用Relu激活层代替Tanh激活层。
- 同时使用平均泵和MaxPooling 。
rcnnvariant的网络结构:

待续...
参考
- 有效文本分类的技巧袋
- keras示例imdb fastText
- 句子分类的卷积神经网络
- KERAS示例IMDB CNN
- 多任务学习的复发性神经网络用于文本分类
- 神经机器翻译通过共同学习对齐和翻译
- 引起注意的前进网络可以解决一些长期记忆问题
- cbaziotis的注意
- 文档分类的分层注意力网络
- 理查德的汉
- 用于文本分类的经常性卷积神经网络
- AiralCorn2的RCNN