前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大话文本分类

大话文本分类

作者头像
CodeInHand
发布2018-03-26 11:55:06
1.6K0
发布2018-03-26 11:55:06
举报
文章被收录于专栏:Pytorch实践Pytorch实践

概述

文本分类是自然语言处理的重要应用,也可以说是最基础的应用。常见的文本分类应用有:新闻文本分类、信息检索、情感分析、意图判断等。本文主要针对文本分类的方法进行简单总结。

01

传统机器学习方法

分类问题一般的步骤可以分为特征提取、模型构建、算法寻优、交叉验证等。对于文本而言,如何进行特征提取是一个很重要也很有挑战性的问题。文本的特征是什么,如何量化为数学表达呢。

最开始的文本分类是基于规则的,特征就是关键词,例如足球在体育类出现的次数多,就将含有足球这一关键词的文本氛围体育。后来为了便于计算,通过构建词典采用one-hot编码,文本就被表示成1*V的向量,其中V为词典大小,向量数值取0或1,0表示该词在文本中未出现,1表示出现了。但one-hot编码没能反映词语在文本中出现的频率信息,于是出现了bag-of-words的文本表达,一则文本同样采用1 *V的向量表示,向量内元素不再是0或1,而是该词语出现的频率次数。但频率高的词不一定对分类贡献就大,例如词语“报道”,在新闻文档类别分类就不太重要,即使会出现很多次。于是出现了TF-IDF文本特征,TF表示词频,IDF表示反文本频率,TF-IDF一般表示词语用于分类的重要程度,实质是在文本中出现频率高、在所有语料中出现频率低的词语重要性高。

但是TF-IDF的文档表达只是考虑了词语频率信息,并未考虑词语的上下文结构信息以及词语隐含的主题信息。于是又发展了几种现阶段比较常用的分类特征:n-gram模型考虑上下文;主题模型LDA[2]通过无监督方法得到词语和文档在不同主题的分布情况;word2vec[1]用于得到词语之间的分布信息等。

文本分类过程大概可以描述为如下图,具体包括数据预处理、特征提取、分类器构建、模型评价等。对于中文文本而言,数据预处理包括:中文分词、词性标注(如果分类需要词性特征)、去停用词(去掉一些没什么含义的词语,会对分类产生影响,例如:你、我、他、的…)等;特征提取,就是提取你想要用作分类的特征,具体包括TF-IDF计算、n-gram、word2vec、LDA等;特征提取之后还存在特征选择的过程,特征选择的过程,由于TF-IDF特征过于稀疏,需要对特征进行选择,找到对分类有效的特征,常用的方法有信息增益IG(判断增添该特征带来的信息增益)、CHI-square用于找到与类别信息强相关的特征等等;分类模型的选择,由于文本分类一般为多分类的模型,传统机器学习中一般采用Naïve-Bayes分类、KNN、SVM等分类方法,近年来使用随机森林和梯度增强算法用的比较多,Xgboost用于分类模型效率很高,有兴趣的童鞋可以进一步专研。LDA主题模型用于文本分类也越来越多,主要用于计算词语在主题的分布情况。

自然语言处理很大的一个难题就是对文本进行合理的表示,但基于词语和语义的表示往往不够,因为很多文本是需要知识和常识才能理解的。文章[6]给出了基于百度百科的知识进行辅助中文文本分类,方法很值得借鉴,工程上是非常不错的。

02

深度学习方法

区别于传统机器学习方法,深度学习最大的优势就是避免了繁琐的特征提取过程,词语使用连续向量进行Embedding表示,可以使用pre-trained的word2vec进行初始化。通过Multi-Layer的DNN、CNN或RNN进行高维抽象特征提取,最后经过softmax进行多分类。

文本的长短对分类模型提出了很大的限制,对于几十个词的短文本(例如微博数据或者Tweet数据)可以使用时间序列模型(例如SRNN、LSTM、BiLSTM等)。但随着文本变长,由于RNN不能很好地做到并行化,运算时间成本会很大,RNN一类的模型训练效率太低,不能很好地应用。本文主要针对长文本进行介绍,简述几种目前常用而且效率比较高的长文本分类模型。

(1) 文本分类工具fastText[5],这是Facebook开源的文本分类工具,主要选取的是n-gram特征,模型结构选用的是简单的DNN结构,如下所示。X1,…XN为n-gram输入。值得一提的是,fastText采用分层softmax分类提升速度,模型可以在CPU上运行,分类效果也非常好。

fastText神经网络模型

(2) DAN/ADAN文本分类

论文[4]中给出了DAN、ADAN的文本分类模型。DAN指的是Deep Average Network,主要是基于word2vec词向量特征,通过求文档中所有词语的word2vec向量的平均值来表示文本:Vector(Document) = Average(Vector(word))。

具体模型结构如下图所示,值得说明的是word2vec是大量语料预训练的向量值,用于初始化模型的Embedding,Embedding作为模型参数进行Joint-Train得到最符合当前分类任务的词语Distributed representation,从而得到最合适的文档表达用于分类。

DAN神经网络模型

DAN模型被证明能够很好地应用于事实型的文本分类,但分类精度有待提高。ADAN是DAN模型的改进版,通过引入Attention机制,在特定的类上关注特定的词语,分类效果得到进一步改善。具体实现是,引入词语到Topic的分布,通过计算softmax求取每个词的重要性即权重,这种做法类似于LDA模型得到词语在不同主题下的分布情况。

ADAN神经网络模型

(3) CNN文本分类

CNN文本分类模型目前在长文本分类过程中得到了广泛地使用,主要原因在于其算法的高度并行化。最早是由论文[7]给出的模型结构,具体如下图所示。模型使用多个channel(non-static, static),选择使用多个不同kernel size的卷积函数,使用Max-Pooling选择出最具影响力的高维分类特征,再使用带有Drop out的全连接层提取文本深度特征,最后接softmax进行分类。经笔者亲自验证CNN的效果要明显高于DAN的分类效果。

(4) HAN文本分类

HAN的分类模型[3]是一个非常有意思的长文本分类模型,通过对文本结构进行分层:词语、句子、文档三个层面。先将文档进行分句,得到多个句子,每个句子又由多个词语进行构成。然后分层引入Attention机制,实质是关注特定的句子、关注句子中特定的词语。模型结构如下图所示,虽然HAN运行时间会明显长于CNN,但模型的分类效率确实比CNN效果好。模型结构如下图所示,简单描述为词语层面Embedding输入加上Bi-LSTM得到句子表达,再加入Attention关注特定的词,再接Bi-LSTM得到文本表达,进一步使用Attention关注特定的句子。

上述讲述的都是单标签的分类任务,有时候一些文本属于多个Label,例如一个新闻既可能是娱乐又可能是犯罪(例如某明星吸毒的新闻等),这样的任务会更复杂。还有就是多任务一起分类的场景等。后面有机会将一一介绍。

参考文献

[1] Tomas Mikolov, IlyaSutskever, Kai Chen, Greg Corrado, and Jeffrey Dean.Distributed Representations of Words and Phrases andtheirCompositionality. In Proceedings of NIPS, 2013.

[2] D. M. Blei, A. Y. Ng, and M. I. Jordan, “Latent dirichletallocation,”theJournal of machine Learning research, vol. 3, pp. 993–1022, 2003.

[3] Yang Z, Yang D, Dyer C, et al. Hierarchical attention networks for document classification[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 1480-1489.

[4] Guo F, Metallinou A, Khatri C, et al. Topic-based Evaluation for Conversational Bots[J]. arXiv preprint arXiv:1801.03622, 2018.

[5] Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.

[6] Ren F, Li C. Hybrid Chinese text classification approach using general knowledge from Baidu Baike[J]. IEEJ Transactions on Electrical and Electronic Engineering, 2016, 11(4): 488-498.

[7] Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CodeInHand 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档