您好、欢迎来到现金彩票网!
当前位置:516棋牌游戏 > 文本方法 >

推荐|基于深度学习和经典方法的文本分类

发布时间:2019-05-29 01:28 来源:未知 编辑:admin

  前言:文本分类应该是自然语言处理中最普遍的一个应用,例如文章自动分类,邮件自动分类,垃圾邮件识别,用户情感分类等等,在生活中有很多例子,这篇文章主要从传统和深度学习两块来解释下我们如何做一个文本分类器。

  传统的文本方法的主要流程是人工设计一些特征,从原始文档中提取特征,然后指定分类器如LR,SVM,训练模型对文章进行分类,比较经典的特征提取方法如频次法,TF-IDF,互信息方法,N-Gram。

  深度学习火了之后,也有很多人开始使用一些经典的模型如CNN,LSTM这些方法来做特征的提取,这篇文章会比较粗地描述下,在文本分类的一些实验

  这里主要描述两种特征提取方法:频次法,TF-IDF,互信息,的n-gram。

  频次法,顾名思义,十分简单,记录每篇文章的次数分布,然后将分布输入机器学习模型,训练一个合适的分类模型,对这类数据进行分类,需要指出的时,在统计次数分布时,可合理提出假设,频次比较小的词对文章分类的影响比较小,因此我们可合理地假设阈值,滤除频次小于阈值的词,减少特征空间维度。

  TF-IDF相对于频次法,有更进一步的考量,词出现的次数能从一定程度反应文章的特点,即TF,而TF-IDF,增加了所谓的反文档频率,如果一个词在某个类别上出现的次数多,而在全部文本上出现的次数相对比较少,我们认为这个词有更强大的文档区分能力,TF-IDF就是综合考虑了频次和反文档频率两个因素。

  互信息方法也是一种基于统计的方法,计算文档中出现词和文档类别的相关程度,即互信息

  基于n-gram中的方法是把文章序列,通过大小为Ñ的窗口,形成一个个组,然后对这些组做统计,滤除出现频次较低的组,把这些组组成特征空间,传入分类器,进行分类。

  最普通的基于CNN的方法就是Keras上的例子做情感分析,接Conv1D,指定大小的窗口大小来遍历文章,加上一个maxpool,如此多接入几个,得到特征表示,然后加上FC,进行最终的分类输出。

  这种CNN的方法,通过设计不同的窗口大小来建模不同尺度的关系,但是很明显,丢失了大部分的上下文关系,文本分类的循环卷积神经网络,将每个词形成向量化表示时,加上上文和下文的信息,每一个词的表示如下:

  如针对这句话“沿南岸散步的日落提供了一系列令人惊叹的优势”,漫步的表示包括c_l(漫步),pre_word2vec(漫步),c_r(漫步),c_l(漫步)编码A sunset的语义,而c_r(漫步)编码沿南岸提供了一系列惊人的有利位置的信息,每一个词都如此处理,因此会避免普通cnn方法的上下文缺失的信息。

  和基于CNN的方法中第一种类似,直接暴力地在嵌入之后加入LSTM,然后输出到一个FC进行分类,基于LSTM的方法,我觉得这也是一种特征提取方式,可能比较偏向建模时序的特征;

  在暴力的方法之上,A C-LSTM神经网络的文本分类,将嵌入输出不直接接入LSTM,而是接入到cnn,通过cnn得到一些序列,然后吧这些序列再接入到LSTM,文章说这么做会提高最后分类的准去率。

  训练的语料来自于大概31个新闻类别的新闻语料,但是其中有一些新闻数目比较少,所以取了数量比较多的前20个新闻类比的新闻语料,每篇新闻稿字数从几百到几千不等,任务就是训练合适的分类器然后将新闻分为不同类别:

  最终就得到每篇文章的弓的向量,由于这块的代码是在我的笔记本上运行的,直接跑占用内存太大,因为每一篇文章在令牌集中的表示是极其稀疏的,因此我们可以选择将其转为CSR表示,然后进行模型训练,转为CSR并保存中间结果代码如下:

  语言处理的方法和传统的差不多,分词之后,使用pretrain的word2vec,这里我遇到一个坑,我开始对我的分词太自信了,最后模型一直不能收敛,后来向我们组博士请教,极有可能是由于分词的词序列中很多在pretrained word2vec里面是不存在的,而我这部分直接丢弃了,所有可能存在问题,分词添加了词典,然后,对于预先训练的word2vec不存在的词做了一个随机初始化,然后就能收敛了,学习了!

  载入word2vec模型和构建CNN网络代码如下(增加了一些BN和差的手段):

  由于我这边的任务是对文章进行分类,序列太长,直接接LSTM后直接爆内存,所以我在文章序列直接,接了两层Conv1D + MaxPool1D来提取维度较低的向量表示然后接入LSTM ,网络结构代码如下:

  整个实验的结果由于深度学习这部分都是在公司资源上跑的,没有真正意义上地去做一些技巧来调参来提高性能,这里所有的代码的网络配置包括参数都仅做参考,更深地工作需要耗费更多的时间来做参数的优化。

  在本文的实验效果中,虽然基于深度学习的方法和传统方法相比没有什么优势,可能原因有几个方面:

  Pretrained Word2vec Model并没有覆盖新闻中切分出来的词,而且比例还高,如果能用网络新闻语料训练出一个比较精准的Pretrained Word2vec,效果应该会有很大的提升;

http://dolphinfixtures.com/wenbenfangfa/25.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有