自然语言处理实践(新闻文本分类)——task05

基于深度学习的文本分类

Word2vec + TextCNN

Word2vec:
One-Hot Representation导致得到的特征是离散稀疏的。

Dristributed representation可以解决One hot representation的问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,进而可以用普通的统计学的方法来研究词与词之间的关系。

word2vec模型其实就是简单化的神经网络。

自然语言处理实践(新闻文本分类)——task05_第1张图片
输入是One-Hot Vector,Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵。

模型的输入和输出一般分为CBOW(Continuous Bag-of-Words 与Skip-Gram两种模型。CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。 Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。

TextCNN

自然语言处理实践(新闻文本分类)——task05_第2张图片
数据处理:所有句子padding成一个长度:seq_len

  1. 模型输入
    [batch_size, seq_len]

  2. 经过embedding层:加载预训练词向量或者随机初始化, 词向量维度为embed_size:
    [batch_size, seq_len, embed_size]

  3. 卷积层:NLP中卷积核宽度与embed-size相同,相当于一维卷积。
    3个尺寸的卷积核:(2, 3, 4),每个尺寸的卷积核有100个。卷积后得到三个特征图:[batch_size, 100, seq_len-1]
    [batch_size, 100, seq_len-2]
    [batch_size, 100, seq_len-3]

  4. 池化层:对三个特征图做最大池化
    [batch_size, 100]
    [batch_size, 100]
    [batch_size, 100]

  5. 拼接
    [batch_size, 300]

  6. 全连接:num_class是预测的类别数
    [batch_size, num_class]

  7. 预测:softmax归一化,将num_class个数中最大的数对应的类作为最终预测
    [batch_size, 1]

分析
卷积操作相当于提取了句中的2-gram,3-gram,4-gram信息,多个卷积是为了提取多种特征,最大池化将提取到最重要的信息保留。

全部数据(20万条),在使用GPU的情况下,训练一个epoch约1小时
自然语言处理实践(新闻文本分类)——task05_第3张图片

你可能感兴趣的:(NLP文本分类)