原文地址:https://zhuanlan.zhihu.com/p/29076736
传统的向量空间模型(VSM)假设特征项之间相互独立,这与实际情况是不相符的,为了解决这个问题,可以采用文本的分布式表示方式(例如 word embedding形式),通过文本的分布式表示,把文本表示成类似图像和语音的连续、稠密的数据。
这样我们就可以把深度学习方法迁移到文本分类领域了。基于词向量和卷积神经网络的文本分类方法不仅考虑了词语之间的相关性,而且还考虑了词语在文本中的相对位置,这无疑会提升在分类任务中的准确率。 经过实验,该方法在验证数据集上的F1-score值达到了0.9372,相对于原来业务中所采用的分类方法,有20%的提升。
如何把文档表示为算法能够处理的结构化数据无疑是文本分类非常重要的环节。
根据文本表示过程所使用的数学方法不同,可以分为以下几类:
接下来会详细介绍一下布尔模型、向量空间模型(VSM)、基于语义的文本表示。
布尔模型:查询和文档均表达为布尔表达式,其中文档表示成所有词的“与”关系,类似于传统的数据库检索,是精确匹配。
例如:
查询:2006 AND 世界杯 AND NOT 小组赛
文档1:2006年世界杯在德国举行
文档2:2006年世界杯小组赛已经结束
文档相似度计算:查询布尔表达式和所有文档的布尔表达式进行匹配,匹配成功得分为1,否则为0.
布尔模型的优缺点:
优点:简单、现代搜索引擎中依然包含了布尔模型的理念,例如谷歌、百度的高级搜索功能。
缺点:只能严格匹配,另外对于普通用户而言构建查询并不容易。
向量空间模型:把对文本内容的处理简化为向量空间的向量计算。并且以空间上的相似度表达文档的相似度。
每篇文档由T1、T2、...、Tn一共N个特征项来表示,并且对应着Wi1、Wi2、... 、Win个权重。通过以上方式,每篇文章都表示成了一个N维的向量。
相似度计算:两个文档的相似程度可以用两向量的余弦夹角来进行度量,夹角越小证明相似度越高。
优缺点:
优点:1.简洁直观,可以应用到很多领域(文本分类、生物信息学等)2.支持部分匹配和近似匹配,结果可以排序 3. 检索效果不错
缺点:1.理论上支持不够,基于直觉的经验性公式。 2. 特征项之间相互独立的假设与实际不符。例如,VSM会假设小马哥和腾讯两个词语之间是相互独立的,这显然与实际不符。
基于语义的文本表示方法:为了解决VSM特征相互独立这一不符合实际的假设,有人提出了基于语义的文本表示方法,比如LDA主题模型,LSI/PLSI概率潜在语义索引等方法,一般认为这些方法得到的文本表示是文档的深层表示。而word embedding文本分布式表示方法则是深度学习方法的重要基础。
文本的分布式表示(Distributed Representation)的基本思想是将每个词表示为n维稠密,连续的实数向量。
分布式表示的最大优点在于它具有非常强大的表征能力,比如n维向量每维k个值,可以表征k的n次方个概念。
事实上,不管是神经网络的影层,还是多个潜在变量的概率主题模型,都是在应用分布式表示。下图的神经网络语言模型(NNLM)采用的就是文本分布式表示。而词向量(word embedding)是训练该语言模型的一个附加产物,即图中的Matrix C。
神经网络语言模型(NNLM)
尽管词的分布式表示在86年就提出来了,但真正火起来是13年google发表的两篇word2vec的paper,并随之发布了简单的word2vec工具包,并在语义维度上得到了很好的验证,极大的推动了文本分析的进程。
文本的表示通过词向量的表示方法,把文本数据从高纬度稀疏的神经网络难处理的方式,变成了类似图像、语言的连续稠密数据,这样我们就可以把深度学习的算法迁移到文本领域了。下图是google的词向量文章中涉及的两个模型CBOW和Skip-gram。
CBOW:上下文来预测当前词
Skip-gram:当前词预测上下文
特征提取对应着特征项的选择和特征权重的计算。
特征项的选择就是指根据某个评价指标独立的对原始特征项(词语)进行评分排序,从中选取得分最高的一些特征项,过滤掉其余的特征项。
特征权重的计算:主要思路是依据一个词的重要程度与类别内的词频成正比(代表性),与所有类别中出现的次数成反比(区分度)。
当选用数学方法进行特征提取时,决定文本特征提取效果的最主要因素是评估函数的质量。常见的评估函数主要有如下方法:
2.4.1 TF-IDF
TF:词频,计算该词描述文档内容的能力
IDF:逆向文档频率,用于计算该词区分文档的的能力
2.4.2 词频(TF)
词频是一个词在文档中出现的次数。通过词频进行特征选择就是将词频小于某一阈值的词删除。
2.4.3 文档频次法(DF)
它指的是在整个数据集中,有多少个文本包含这个单词。
2.4.4 互信息方法(Mutual information)
互信息用于衡量某个词与类别之间的统计独立关系,在过滤问题中用于度量特征对于主题的区分度。
2.4.5 期望交叉熵
交叉熵反映了文本类别的概率分布和在出现了某个特定词的条件下文本类别的概率分布之间的距离
思想:特征词t 的交叉熵越大, 对文本类别分布的影响也越大。
评价:熵的特征选择不考虑单词未发生的情况,效果要优于信息增益。
2.4.6 信息增益
信息增益是信息论中的一个重要概念, 它表示了某一个特征项的存在与否对类别预测的影响。
2.4.7 卡方校验
它指的是在整个数据集中,有多少个文本包含这个单词。
2.4.8 其他评估函数
传统的特征选择方法大多采用以上特征评估函数进行特征权重的计算。
但由于这些评估函数都是基于统计学原理的,因此一个缺点就是需要一个庞大的训练集,才能获得对分类起关键作用的特征,这需要消耗大量的人力和物力。
另外基于评估函数的特征提取方法建立在特征独立的假设基础上,但在实际中这个假设很难成立。
特征选择也可以通过用映射或变换的方法把原始特征变换为较少的新特征
传统的特征提取降维方法,会损失部分文档信息,以DF为例,它会剔除低频词汇,而很多情况下这部分词汇可能包含较多信息,对于分类的重要性比较大。
如何解决传统特征提取方法的缺点:找到频率低词汇的相似高频词,例如:在介绍月亮的古诗中,玉兔和婵娟是低频词,我们可以用高频词月亮来代替,这无疑会提升分类系统对文本的理解深度。词向量能够有效的表示词语之间的相似度。
本文采用的是卷积神经网络(TextCNN)
TextCNN网络概览图
为了检验模型在真实数据上的分类准确率,我们又额外人工审核了1000条深圳地区的案情数据,相较于原来分类准确率的68%,提升到了现在的90%,说明我们的模型确实有效,相对于原来的模型有较大的提升。
红色:word2vec+CNN(max_pooling) 在验证集上的Loss走势
黄色和蓝色:word2vec+CNN(batch normalization & chunk max_pooling:2 chunk)在验证集上的Loss走势
关于 word2vec 我有话要说
CNN 模型压缩与加速算法综述
深度学习的异构硬件加速:TPU 特性与数据中心的 ASIC 应用(概述篇)