蔡宇翔,王佳斌,郑天华
(华侨大学工学院,泉州 362021)
随着信息时代的发展,互联网上的文本数据呈现爆发式的增长。海量的数据未经过分类,人们无法高效地对其提取有用的信息,也浪费了网络资源。文本分类作为文本处理重要的技术之一,被广泛地用于各项自然语言处理任务当中。文本分类即是通过特定的算法,分析文本数据中的潜在规则,再将新的文本和对应的类别相匹配。Spark计算框架是基于内存计算,并不会产生IO开销,可以大幅度提高文本分类的处理效率。文本分类任务中的难点是如何将文本表现为向量形式。文献[6]中使用TF-IDF算法,对亚马逊评论文本进行向量化,并使用了Spark mllib库下的三种机器学习分类算法:逻辑回归、支持向量机和朴素贝叶斯,其中支持向量机的效果最优,精度达到了86%,但是使用TF-IDF方法在文本数量庞大的情况下,会将文本映射成一个高维的、稀疏的向量,导致维度灾难,且这种方法是将词语进行独立计算,无法衡量单词和单词之间的语义关系。分布式表示法又被称为词嵌入、词向量。Word2Vec是谷歌发布的一款计算词向量的工具,通过在语料库上的训练,可以很好地表示词与词之间的相似性。它使用单词的上下文计算单词的向量,充分利用了单词之间的语义关系。文献[9]中使用了Word2Vec词嵌入技术对建筑文本进行向量化,并使用Spark并行化分类算法,使得训练时间极大地缩短。文献[10]为了更加全面地表示词向量,使用外部语料库对Word2Vec模型进行预先训练,再结合改进后的CNN对新闻文本进行分类,在Spark平台并行化后,相较于单机传统的方法,运行效率和精度都得到了提升。相对于传统的建模方法,使用Word2Vec对文本进行表示的方法更好。然而,单独使用Word2Vec词嵌入技术,只是将文本表示为文本中所有单词的词向量的平均值,这种方法无法体现每一个单词在句子中的重要程度。针对此问题,本文结合Spark平台提出了基于加权词向量的文本表示方法,并使用SVM分类器进行文本分类。
TF-IDF是一种常用的计算词语权重的方法,TF(term frequency)表示词语在单个文档中出现的次数,IDF(inverse document frequency)表示包含某个词语的文档数越少,该词语的区分能力就越高。TF-IDF算法的核心思想是如果一个词语在某个文本中出现的频次较高,那它可能是对文本比较重要的单词,也有可能是一些普通程度的常用单词。为了区分这种情况,将词频和逆文档频率相乘,如果该词语较多地出现在该文本内,又较少地出现在其他文本内,则可以认为该词语对这个文本的重要性高,相应的TF-IDF值也会较高。TF-IDF考虑了词语在文档中的分类情况,以此来表示词语的重要程度。
TF-IDF的计算公式如下:
TF表示单词的词频,n表示词语在文档中出现的次数,分母表示文档中的总单词数。IDF表示单词的逆文档频率,表示数据集中的总文档数,D表示含有单词的文档数,分母加一是为了避免分母为0导致运算错误。本文使用TF-IDF值作为单词在文档中的权重。
Word2Vec是2013年由谷歌开源的一款词嵌入工具,它使得词语可以被分布式表示。它是MIKOLOV提出的一种基于神经网络的概率模型,它在词向量的维数通常设置为100~300,对比传统的高维向量,可以简化计算,且不会引起维度灾难。
Word2Vec分为skip-gram和CBOW两种方式,CBOW模型是通过前后的个词来预测中心词出现的概率,它的数学表示为:
而skip-gram模型则是通过中心词来预测前后的个词,数学表示为:
两种模型之中,skip-gram模型的语义准确率高,但是同样的计算代价高,训练时间较长。skip-gram模型有三层神经网络构成,包括输入层,投影层和输出层。输入层为中心词语的One-Hot向量,乘上模型训练后的权值矩阵,输出层为词语分布在中心词语前后的概率矩阵。本文使用skip-gram模型进行训练。skip-gram模型如图1所示。
图1 skip-gram模型
如果单纯的使用文本的平均词向量来作为文本表示,无法显示单词的重要性。本文基于Spark ML下的特征库,计算每个单词的词频以及TF-IDF值,将TF-IDF值归一化后作为权值与词向量相乘,提升重要单词的权重,降低非重要单词的权重,单词权重值的公式如下:
(,)表示为文档中词语的权重值,得到权重值后将文档j表示为:
w表示文档的特征向量,w表示单词的词向量。将得到的特征向量作为文本表示。向量化的流程图如下,将向量化后的文本作为分类器的输入。
图2 向量化流程
文本分类是自然语言处理的基础任务,新闻分类,情感分析等技术都属于文本分类的子任务。分类算法的流程就是对文本的内容进行训练,构建分类器,使用分类器对待测试文本进行测试,将其分到相近的类别中。通常文本分类常用的机器学习算法有支持向量机、朴素贝叶斯、决策树、随机森林算法等。其中支持向量机的原理是寻找一个超平面,使得样本与超平面的间隔最大。由于系统健壮性好,正确率高等优点,被广泛运用在文本分类,语音识别等分类任务中。因此,本文使用基于Spark ML机器学习库的支持向量机方法进行分类,在验证加权词向量文本表示方法有效性的同时,提高计算效率。
本文的实验集群由3台虚拟机组成,其中1台作为Master,两台作为Slave,系统版本为CentOS7,Spark版本为2.4,Hadoop版本为2.7,使用的开发语言为Scala 2.12。
本次实验数据使用由清华大学自然语言处理实验室整理的新闻文本数据集,从体育、财经、房产、家居、教育、科技、时尚、时政、游戏、娱乐十个类别中各挑选5000条新闻文本作为训练数据,1500条作为测试数据,数据共65000条。训练文本的平均长度为422个单词,测试文本的平均长度为445个单词,可以看出该数据集属于长文本。
对数据预处理的过程包括分词,去停用词等。由于中文文本的单词之间没有明确的边界,所以需要使用分词工具对文本进行分词。目前常用的分词工具有jieba,THULAC等。本文使用jieba分词工具对中文文本进行分词操作,以单词为单位组成文本。其中有一些单词,类似于“和”“且”“了”等并没有实际意义的单词,和一些标点符号,空白字符等字符,需要去除,本文结合了哈工大停用词表,四川大学机器智能实验室停用词表,对文本中无意义的词语进行了去停用词操作。数据预处理前后对比如表1所示:
表1 文本预处理
本文使用精确率,召回率和1值作为评价指标。精确率和召回率,1值是分类任务中广泛运用的指标。表2是分类任务中的混淆矩阵:表示实际属于该类,并且被分类器判定为该类的文本,表示被分类器判定为该类,但实际不属于该类的文本。表示真实属于该类,但被分类器判定为不属于该类的文本;表示实际不属于该类其分类器也判定其不属于该类的文本。
表2 混淆矩阵
准确率的数学公式为:
召回率的数学公式为:
1综合考虑了召回率和精确率,1值的数学公式为:
本文使用SparkML库中的各种模型,可以使用SparkSQL语句对DataFrame进行操作,简化计算。首先训练Word2Vec模型,将前文中预处理好的文本数据送入SparkML库中的Word2Vec模型中进行训练,词向量维度设置为100,上下窗口为5,得到词向量库。同时将处理好的语料进行TF-IDF计算处理。先使用CountVectorize工具对文本进行词频统计,在使用IDF模型得到词语的TF-IDF值。然后使用词语的TF-IDF值作为词语的权重,将文本的特征向量表示为文本中所有词语词向量的加权平均值。
将训练文本通过上述操作向量化后送入SVM分类器进行训练,SparkML库中的SVM分类器采用数据并行的原理,相比于单机算法,可以有效提高训练速度。最后使用训练好的SVM分类器对已标注的测试文本进行测试。从而计算准确率。
为了测试该方法的性能,本文同时采用了TF-IDF向量化和未加权的平均Word2Vec词向量方法进行测试,对比三种方法性能的优劣。表3是采用加权词向量方法的各类分类结果:
表3 TFIDF-Word2Vec+SVM分类结果
由表3可以看出,该方法在十个类别中有八个类别的1值达到了90%以上,说明该分类器的性能优异。其中F1值最低的是房产和家居两个类别,是因为两个类别的词汇重合度较大,不易区分,但是也达到了75%以上。表4是采用了平均词向量方法的分类结果
由表4可知,平均词向量文本表示方法同样在八个类别中取得了1值90%以上的性能表现,但是同样由于“房产”和“家居”区分难度较高的原因,导致了这两个类别分类效果下降。相比于平均词向量方法,TF-IDF加权词向量方法在这两个类的1值分别高出了10.2%和3.6%,说明该方法在易混淆,区分难度大的分类中获得更好的效果。TF-IDF向量化的分类结果如表5所示。
表4 avg-Word2Vec+SVM分类结果
表5 TF-IDF向量化的分类结果
由表5可以看出,TF-IDF方法的整体性能并不如加权词向量方法和平均词向量方法,且在词库较大的情况下出现向量维度过高,特征稀疏的问题,导致计算复杂度上升。表6是三种方法的综合对比。
由表6可以看出,TF-IDF加权词向量的分类结果作为出色,精确率,召回率和1值分别比平均词向量方法高出了2%,1.7%,2%,此方法综合了TF-IDF和Word2Vec词向量的优点,考虑了词语的重要性和词语上下文间的语义关系,实验数据说明TF-IDF加权词向量相比于平均词向量可以更好地表示文本,从而提高分类的精度。在Spark平台上实现可以加快文本分类的计算效率。
表6 性能对比
本文结合Spark ML库,在传统的平均词向量文本表示法的基础上,使用了词语的TF-IDF值表示词语的重要性,作为词向量的权重,使用加权词向量作为文本的向量表示。由实验结果可以看出,相比于平均词向量和TF-IDF文本表示法,加权词向量可以有效的提升SVM分类器的精度。但是词向量的权重不应该只考虑TF-IDF值,所以在下一步的工作中,需要结合词语的语法,语序等信息,更加充分地设计词语的权重值,使得文本可以被更完善地表示出来,结合Spark平台,设计出更加适合大规模文本的分类系统。