【长篇干货】深度学习在文本分类中的应用

2018 年 4 月 4 日 七月在线实验室

作者:llhthinker

个人博客:http://www.cnblogs.com/llhthinker/

文章代码:https://github.com/llhthinker/BDCI2017-MingLue


文本分类任务介绍

文本分类是自然语言处理的一个基本任务,试图推断出给定的文本(句子、文档等)的标签或标签集合。
文本分类的应用非常广泛。如:

1)垃圾邮件分类:二分类问题,判断邮件是否为垃圾邮件

2)情感分析

  • 二分类问题,判断文本情感是积极(positive)还是消极(negative)

  • 多分类问题,判断文本情感属于{非常消极,消极,中立,积极,非常积极}中的哪一类

3)新闻主题分类:判断新闻属于哪个类别,如财经、体育、娱乐等

4)自动问答系统中的问句分类

5)社区问答系统中的问题分类:多标签分类,如知乎看山杯

6)更多应用:

  • 让AI当法官: 基于案件事实描述文本的罚金等级分类(多分类)和法条分类(多标签分类)。

  • 判断新闻是否为机器人所写: 二分类

  • ......

不同类型的文本分类往往有不同的评价指标,具体如下:

  • 二分类:accuracy,precision,recall,f1-score,...

  • 多分类: Micro-Averaged-F1, Macro-Averaged-F1, ...

  • 多标签分类:Jaccard相似系数, ...


传统机器学习方法

传统的机器学习方法主要利用自然语言处理中的n-gram概念对文本进行特征提取,并且使用TFIDF对n-gram特征权重进行调整,然后将提取到的文本特征输入到Logistics回归、SVM等分类器中进行训练。但是,上述的特征提取方法存在数据稀疏和维度爆炸等问题,这对分类器来说是灾难性的,并且使得训练的模型泛化能力有限。因此,往往需要采取一些策略进行降维:

  • 人工降维:停用词过滤,低频n-gram过滤等

  • 自动降维:LDA等

值得指出的是,将深度学习中的word2vec,doc2vec作为文本特征与上文提取的特征进行融合,常常可以提高模型精度。


CNN用于文本分类

论文Convolutional Neural Networks for Sentence Classification提出了使用CNN进行句子分类的方法。

1. CNN模型推导

一个句子是由多个词拼接而成的,如果一个句子有