本发明涉及人工智能、文本分类、内容可视化领域,尤其涉及一种基于人工智能的多级文本多标签分类方法及系统。
背景技术:
对文本内容的理解和分析是自然语言处理的研究目标。大部分文本内容以文档形式存在,每个文档对应一个文件,典型的文件格式包括txt、hmtl、word、pdf等等。目前随着互联网以及移动互联网的蓬勃发展,待分析的文档数量急剧上升。如何对不同粒度文本(如句子、段落、文档)进行类别标记对信息发现、信息浏览和分析具有重要意义。比如大量电商网站提供用户评论的功能,如“这个榨汁机给宝宝做辅食特别细腻,速度非常快,好清洗,唯一的缺点是声音比想象中大”,这个评论虽然整体上属于正面情感,但是其中的细粒度句子(以逗号分隔的句子)既有正面情感也有负面情感,即“这个榨汁机给宝宝做辅食特别细腻”、“速度非常快”,“好清洗”是正面情感,“唯一的缺点是声音比想象中大”是负面情感。如何抽取评论中不同类别的代表子句对于进行产品分析具有重要价值。该问题可以看作是一个细粒度文本(子句)的分类问题。
传统机器学习针对该问题有两种实现方法。一是收集各级别文本的类别标注信息,并学习相应分类模型;二是利用多示例学习(mil,multi-instancelearning)方法,只需要文档级的类别信息。第一种方法面临的问题是细粒度文本的类别标注信息很少、收集成本高昂,大规模应用不现实;第二种方法面临的问题是传统多示例学习方法中的假设太强,不能很好的建模实际数据。
技术实现要素:
针对上述不足,本发明提供一种基于人工智能的多级文本多标签分类方法及系统。该方法及系统能够在实际数据上进行建模,且能够对多级文本(如字、词、句子、段落、文档等)进行多标签分类。
在本发明中,“文本”泛指文档内的字符串序列,其级别由低到高依次包括字、词、句子、段落、文档等,如句子的级别高于词,词的级别高于字;多级是指文本本身存在的多粒度组成关系,如词组成句子;多标签是指对于给定的文本,本发明既可以输入单个类别,也可以输入多个类别,从而满足对于文本分类的不同需求。
本发明提供一种基于人工智能的多级文本多标签分类方法,主要包括以下步骤:
1)利用神经网络构建多级文本多标签分类模型,并根据该模型得到训练文本的文本类别预测结果;
2)根据训练文本中已有的文本类别标注信息(即训练文本中正确的文本类别标注信息)与步骤1)得到的训练文本的文本类别预测结果,对多级文本多标签分类模型的参数进行学习,得到参数确定的多级文本多标签分类模型;
3)利用参数确定的多级文本多标签分类模型对待分类文本进行分类。
本发明的典型应用包括抽取文档中与类别相关的文本(如句子)以及对文档进行分类。
本发明还提供一种基于人工智能的多级文本多标签分类系统,包括多级文本分类模块、模型学习模块和模型应用模块;
所述多级文本分类模块用于利用神经网络构建多级文本多标签分类模型,并根据该模型得到训练文本的文本类别预测结果;且所述多级文本分类模块包括加权组合模块、分类预测模块、序列编码模块;其中,所述分类预测模块又分为单标签分类模块和多标签分类模块,所述序列编码模块又分为序列到向量编码模块以及序列到序列编码模块。
所述多级文本分类模块在构建多级文本多标签分类模型时包括4个步骤:
(1)确定文本级别。文本的所有级别包括文档、段落(句子集合)、句子、词、字;构建的模型可以只对部分级别进行建模,至少设置的级别包括文档级别、要预测类别的文本级别、词级别(或者字级别),也可以将其他级别加入。
(2)确定文本的构建假设。构建假设包括加权组合假设以及序列编码假设,其中,文档级别的构建使用加权组合假设;要预测类别的文本级别向上的相邻文本级别的构建使用加权组合假设;要预测类别的文本级别的构建既可以使用加权组合假设,也可以使用序列编码假设。
(3)将构建假设转换为构建模块。加权组合假设对应加权组合模块,序列编码假设对应序列编码模块。
(4)添加分类预测模块。根据训练集中标签所在的文本级别,为对应文本添加分类预测模块,用于预测给定文本的类别。
所述加权组合模块用于生成文本在指定类别下的向量表示,即“文本-类别”对的向量表示,输入为文本及类别。具体做法是:
(1)将文本拆分为低级别“构成文本”,使用构成文本序列对应的“构成文本-类别”向量序列以及类别向量作为输入;
(2)人工加入至少1个“填充文本”并计算“填充文本-类别”向量序列;
(3)利用神经网络的关注机理(attentionmechanisum),分别计算“构成文本-类别”权重以及“填充文本-类别”权重;
(4)将相关的“构成文本-类别”向量和“填充文本-类别”向量进行加权相加,再经过非线性转换,得到最后的输出即“文本-类别”向量。这里非线性转换是可选项。
所述加权组合假设认为文本是由低级别“构成文本-类别”向量加权组合而成,不考虑“构成文本”的位置顺序。
所述序列编码假设认为文本是由低级别“构成文本-类别”向量顺序编码而成,考虑输入的文本向量的位置顺序。
所述加权组合模块的“构成文本-类别”向量序列,序列的每一个向量可以来自于另一个加权组合模块的输出或者序列到向量编码模块的输出,整个序列也可以直接是序列到序列编码模块的输出。
所述加权组合模块的“填充文本”是人工加入的与加权组合模块中的低级别“构成文本”同级别的背景文本,“填充文本”可以使用文档集中出现最频繁的字词来构建。对于给定级别文本的加权组合模块,“填充文本”的数量与低级别“构成文本”的数量和要等于一个常数,目的是确保加权组合时操作的向量个数相同,比如计算句子级别文本表示,为每个句子填充词,填充后所有句子长度要相等。
所述加权组合模块的“填充文本-类别”向量序列的计算基于填充文本,计算过程与“构成文本-类别”向量序列的计算过程完全一致。
所述序列到向量编码模块是指将向量序列输入转换为单个向量,有2种实现方法:
(a)使用神经网络中的cnn模型对输入的“文本-类别”向量序列进行编码生成输入的文本序列对应的“文本-类别”的向量表示,cnn模型可以考虑低级别文本的局部依赖关系。
(b)使用神经网络中的lstm模型(https://en.wikipedia.org/wiki/long_short-term_memory)或者gru模型(https://en.wikipedia.org/wiki/gated_recurrent_unit)对输入的“文本-类别”向量序列进行编码生成输入的文本序列对应“文本-类别”的向量表示,lstm(gru)能够考虑低级别文本的长距离依赖;
所述序列到序列编码模块是指将向量序列输入转换为等长的新向量序列输出,计算使用lstm、gru、bi-lstm或者bi-gru(https://en.wikipedia.org/wiki/bidirectional_recurrent_neural_networks)中的一种对输入的“文本-类别”向量序列进行编码,顺序保留每个位置的输出向量构成向量序列输出。
所述单标签分类模块用于预测给定文本的唯一类别标签,以给定文本在所有类别上的“文本-类别”向量作为输入,计算文本在每个类别的得分,并根据最高得分得到文本类别预测结果,其中“文本-类别”向量输入来自于多次加权组合模块的输出,每次计算使用不同的类别。
所述多标签分类模块用于预测给定文本与给定类别的相关度。多标签分类模块以加权组合模块所计算的“填充文本-类别”向量集合和“构成文本-类别”向量集合作为输入,分别计算两者的得分,若“构成文本-类别”向量集合得分大于“填充文本-类别”向量集合得分,则认为“构成文本”与类别相关,反之则无关。
所述单标签分类模块和多标签分类模块在模型学习时,可以选择其中一种使用,也可以结合使用。在模型学习时,两种分类模块对应不同的损失函数,选择不同分类模块会影响损失函数从而影响学习到的参数;在模型预测时,可以单独使用2种模块中的一种进行预测。
所述模型学习模块用于根据上述训练文本已有的文本类别标注信息与上述训练文本的文本类别预测结果进行模型学习。
所述模型应用模块根据上述学习的模型对待分类文本进行分类。首先确定待分类文本的级别,利用模型中该级别文本从下到上的构建关系,使用同样过程生成待分类的文本-类别的向量表示;如果该级别文本对应于训练集中的标注文本级别,可以使用与训练集中相同的分类预测模块进行预测,也可以为该级别文本上添加一个多标签分类模块,输出文本的类别结果。
本发明的有益效果在于:
(1)只通过文档级(或者组级别)的标注信息来推断组成文本(或者组成个体)的标签,可以很好的应用于组成文本(或者组成个体)标签难以收集的场景。
(2)相对于传统多示例学习(mil,multi-instancelearning)方法,该方法引入最少假设,能够更好地拟合实际数据。
(3)模型具有良好的可扩展性,为每个标签使用独立的类别向量,适合持续学习,对于新收集的训练集,如果出现新的类别,可以很容易更新已有模型。
附图说明
图1是基于人工智能的多级文本多标签分类方法的总体框架图。
图2是词-句子-文档的构建示意图。
图3是加权组合模块的黑盒示意图。
图4是加权组合模块各向量的计算示意图。
图5是填充文本示意图。
图6是词到句子的卷积神经网络黑盒示意图。
图7是词到句子的时间递归神经网络黑盒示意图。
图8是句子的序列到序列编码模块示意图。
图9是单标签分类模块黑盒示意图。
图10是单标签分类模块各向量计算示意图。
图11是模型训练阶段预测文档类别标签的多标签分类模块示意图。
图12是模型应用阶段预测句子类别标签的多标签分类模块计算示意图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明。
假设我们有网络评论文本,每篇评论文本有用户给出的类别标签,类别标签分为2种:好评和差评。下面详细说明如何利用本发明的多级文本多标签分类模型及系统来抽取评论中的好评和差评的句子。
1.构建多级文本多标签分类模型
1)确定文本级别:设置的级别包括文档级别、句子级别(要预测类别的文本级别)以及词级别。
2)确定文本构建假设:文档构建基于句子,使用加权组合假设;句子构建基于词,使用序列编码假设。
3)确定构建模块:句子到文档的构建使用加权组合模块;词到句子的构建使用序列到向量编码模块;在句子向量序列输入到加权组合模块前,可以使用序列到序列编码模块将句子向量序列进行转换,转换后的新序列能够建模句子之间的依赖关系。完整的构建图如图2所示,使用虚线框的序列到序列编码模块表示该模块在实际使用过程中也可以去掉。
a)句子到文档的加权组合模块
图3给出了加权组合模块的黑盒示意图,图4给出了加权组合模块的计算示意图,箭头表示计算依赖关系。其中,d是加权组合模块要加工的文本,s是d的构成文本,bs是与s同级的填充文本。对于句子到文档的加权组合模块,这里d对应文档,s对应句子,bs对应填充句。
加权组合模块的输入是{hs,c}、
加权组合模块的输出是hd,c、h{s},c、
填充文本{bs}的一种实现是使用背景词(训练集中出现频次最高的词)来构造,对于同级所有的加权组合模块,填充文本向量相同。为每篇文档填充不同的填充句,每篇文档至少填充1句填充句,填充后,要确保不同文档的句子总数(原句子加填充句)相等,即|{s}|+|{bs}|,|·|表示集合中元素的个数。填充实例如图5所示。
uc作为类别c的向量,是一个全局向量,所谓全局是指该类别向量被与该类别相关的加权组合模块所共享。hd,c与h{s},c、
hd,c=f(ud,c)(公式1)
h{s},c=∑shs,cαs→d,c(公式3)
f(ud,c)=activation(wcud,c+bc)(公式7)
上述公式中的加粗符号表示向量,未加粗符号表示变量。
公式(1)(2)反映高级别“文本-类别”向量hd,c由“构成文本-类别”向量和h{s},c以及“填充文本-类别”向量和
“构成文本-类别”权重为αs→d,c,“填充文本-类别”权重为
加权组合模块的参数为:θatt={wc,bc,{uc|c∈c}}。
b)词到句子的序列到向量编码模块
图6、图7给出了词到句子的序列到向量编码模块示意图,ht,c是“词-类别”输入向量,
对于词到句子的序列到向量编码模块,t是构成句子的词,bt是填充词(训练集中出现频次最高的词),bt也可以不使用。由于词是最小的构建单元,同一个词在不同类别下的表示相同,即对于ci≠cjci,cj∈c,c是所有类别的集合,令
序列到向量编码模块的参数为对应卷积神经网络或者时间递归神经网络的参数,这里使用θseq-vec来表示。
c)序列到序列编码模块示意图
图8给出了序列到序列编码模块示意图,hs,c是“句子-类别”输入向量,
序列到序列编码模块的输入是“词到句子的序列到向量编码模块”运行多次生成的句子向量序列。
如图8所示,通过序列到序列编码模块,将“词到句子的序列到向量编码模块”的输出hs,c、
序列到序列编码模块的参数为对应神经网络的参数,这里使用θseq-seq来表示。
4)添加分类预测模块:训练集只有文档有类别标签,那么在文档级文本上添加标签分类模块。可以使用单标签分类模块和多标签分类模块。
a)单标签分类模块
图9给出了单标签分类模块的黑盒示意图,图10给出了单标签分类模块各向量的计算示意图。
单标签分类模块的输入可以表示为{hd,c|c∈c},其中,hd,c表示文本d在类别c上的向量表示(即“文本-类别”向量),c是所有类别的集合,每个hd,c来自一次加权组合模块的输出;yd是该模块的输出,即文本d的类别预测结果。单标签分类模块文本类别预测结果的计算公式如下:
yd=argmaxc∈cφ(d,c)(公式8)
φ(d,c)=wthd,c(公式9)
公式(9)将文本d在类别c上的向量表示hd,c映射为得分φ(d,c),w是参数向量;公式(8)通过寻找最高得分来确定文本d的类别。文本单标签分类模块的参数为θpred={w}。
在本例中,d对应文档。
b)多标签分类模块
图11给出了使用多标签分类模块对文档进行标签预测的示意图。分类模块的输入可以表示为“构成文本集合-类别”向量h{s},c以及“填充文本集合-类别”向量
多标签分类模块的预测使用如下公式:
φ({s},c)=wth{s},c……………公式(10)
公式(12)(13)分别计算构成文本集合{s}以及填充文本集合{bs}在类别c上的得分,即φ({s},c)与φ({bs},c),构成文本和填充文本属于同一个加权组合模块。公式(12)计算构成文本集合得分相对于填充文本得分的优势,如果构成文本集合{s}在类别c上的得分高于同级填充文本集合{bs}在类别c的得分,那么
在本例中,d对应文档,s对应的构成句,bs对应d的填充句,s和bs属于同一个文档的加权组合模块。
文本单标签分类模块的参数为:θpred={w}。
2.模型学习
1)获取训练样本。获得网络评论文本集合,对每篇评论文本人工进行标注或者通过评论文本对应的星级标注推断出的类别标签,类别标签分为2种:好评和差评。使用评论文本的星级标注进行推断时,首先设置星级阈值,将小于阈值的星级作为差评,将大于阈值的星级作为好评。
2)预处理。预处理操作包括:对句子进行分词,生成词级别文本;对词进行编号;对词进行选择,可以使用机器学习的多种特征选择方法。其中,“对词进行选择”是可选步骤。
3)模型训练。
模型参数为θ={θseq-vec,θseq-seq,θatt},如果词向量{ht}需要学习,那么对应参数空间变为θ={θseq-vec,θseq-seq,θatt,{ht}};词向量{ht}也可以预先指定,在学习过程中不进行更新。
模型学习通过梯度下降优化损失函数来完成,其损失函数定义为:
公式(14)中d表示文档集合,d∈d表示每篇文档。
损失函数(即公式(14))包括两部分,分别是文档类别预测错误的损失
对于单标签分类模块,公式(14)中的ld(θ)定义为公式(15)
y∈c是文本d对应的实际类别标签,该标签只有一个;y★∈c\y是y的补集,φ(d,y;θ)计算参照公式(9)。
对于多标签分类模块,公式(14)中的ld(θ)的定义为公式(16)。
其中,y∈y(d)是文本d对应的实际类别标签集合,该标签可以有多个;{s}是d的构成文本集合,{bs}是d的填充文本集合;c\y(d)是y(d)的补集,λ是超参数,控制两部分损失的重要性;φ({s},y;θ)和φ({bs},y;θ)计算分别参照公式(10)和公式(11)。
对于本例,在模型学习阶段,损失函数可以只使用单标签分类模块和多标签分类模块中的一种。
所述梯度下降优化算法应用反向传播算法,计算损失函数对各个参数的梯度值,迭代指定次数得到最终模型参数。该算法可以应用adagrad、adam、rmsprop等常用的神经网络优化算法(请参照https://en.wikipedia.org/wiki/stochastic_gradient_descent)。
3.模型应用
给定文档d以及类别c,抽取文档d中与类别c相关的代表句s。有2种方法:
方法1:使用单标签分类模块
根据客观情况,一个句子只属于一个情感类别。为每个句子添加一个单标签分类模块。具体地,其步骤包括:(1)利用学习到的模型参数,对每个句子s(s∈d),计算句子s的向量表示{hs,c|c∈c},以及句子s在各个类别c上的得分{φ(s,c)|c∈c},取得分最大的类别作为句子s的类别,见公式(1)、公式(9)以及公式(8)。(2)挑选出预测类别为c的句子,并按照φ(s,c)从大到小对这些句子进行排序,用户可以选择排名最高的句子作为类别c的代表句。
方法2:使用多标签分类模块
图12给出了使用多标签分类模块对句子类别进行预测的示意图。
多标签分类模块的输入是文本-类别对,这里对应“句子-类别”对<s,c>,输出是句子s是否属于类别c。
(1)利用学习到的模型参数,对每个句子s(s∈d),计算句子s在类别c上的向量表示{hs,c|c∈c}以及填充句bs在类别c上向量表示
(2)句子的多标签分类预测使用如下公式:
φ(s,c)=wths,c……………公式(17)
公式(17)(18)分别计算句子s以及填充文本bs在类别c上的得分,即φ(s,c)与
(3)挑选出预测类别为c的句子,并按照
单标签分类模块和多标签分类模块参数相同,模型学习阶段可以只选择其中一个分类模块进行学习,学习的参数在模型应用阶段可以共享。
表1给出了本实施例在3个代表性数据集上的性能,并给出了参考方法的性能。
表1.本发明方法与其它方法的性能对比
表1中加粗部分是效果最好的性能。本发明的方法在文档级分类效果要优于han分类方法,在句子级别分类效果上略差于han方法,但当数据量增大时,句子级分类效果会超过han方法。本发明方法的另一个优势是支持训练数据集的扩充,支持利用含新标签的新训练数据来更新已有模型,而han方法从损失函数角度来讲,不支持新标签。
具体地,imdb数据集是一个电影评论数据集,来自于“andrewl.maas,raymonde.daly,petert.pham,danhuang,andrewy.ng,andchristopherpotts.2011.learningwordvectorsforsentimentanalysis.inacl2011,19-24june,2011,portland,oregon,usa.pages142–150.”的工作,正负样本各25,000;amazon数据集是来自amazon网站的“cellphonesandaccessories”类别的评论文本,来自于“julianj.mcauleyandjureleskovec.2013.hiddenfactorsandhiddentopics:understandingratingdimensionswithreviewtext.inrecsys’13,hongkong,china,october12-16,2013.pages165–172.”的工作,正样本148,675个,负样本24,343个;yelp数据集来自于餐饮评论文本(https://www.yelp.com/datasetchallenge),我们分别选择所有正负评论的前300,000个评论构建最终数据集。han方法来源于“ruilin,shujieliu,muyunyang,muli,mingzhou,andshengli.2015.hierarchicalrecurrentneuralnetworkfordocumentmodeling.inemnlp2015,lisbon,portugal,september17-21,2015.pages899–907.”;mlconvnet来源于“mishadenil,albandemiraj,andnandodefreitas.2014.extractionofsalientsentencesfromlabeleddocuments.corrabs/1412.6815.”,logisticregression,linearsvm为传统机器学习方法,文档使用词袋表示,词权重使用tf-idf,实现方法使用sklearn(http://scikit-learn.org/)。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。