深度学习在文本分类中的应用

2018 年 1 月 7 日 AI研习社 llhthinker

本文原载于作者博客「PusHpop」,链接:http://t.cn/RHea899 ,AI 研习社获得授权转载。

近期阅读了一些深度学习在文本分类中的应用相关论文(论文笔记:http://t.cn/RHea2Rs ),同时也参加了 CCF 大数据与计算智能大赛(BDCI)2017 的一个文本分类问题的比赛:让 AI 当法官,并取得了最终评测第四名的成绩 (比赛的具体思路和代码参见 github 项目 repo:http://t.cn/RHeaczg )。因此,本文总结了文本分类相关的深度学习模型、优化思路以及今后可以进行的一些工作。

  文本分类任务介绍

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

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

  • 情感分析

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

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

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

  • 自动问答系统中的问句分类

  • 社区问答系统中的问题分类:多标签分类,如知乎看山杯(http://t.cn/RHeSSzM

  • 更多应用:

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

    • 判断新闻是否为机器人所写(http://t.cn/RO5u0Ik ): 二分类

    • ......

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

  • 二分类:accuracy,precision,recall,f1-score,(http://t.cn/RqSDNXI )...

  • 多分类: 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(http://t.cn/RHeoxpT )提出了使用 CNN 进行句子分类的方法。

CNN 模型推导

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