一种基于类别门机制的文本分类方法与流程

文档序号:19943391发布日期:2020-02-14 23:30阅读:251来源:国知局
本发明涉及一种基于类别门机制的文本分类方法,属于自然语言理解
技术领域
:。
背景技术
::文本分类旨在理解自然语言句子并将其分类,是自然语言处理领域中的一项关键任务。基于神经网络的文本分类方法由于其高效性已成为当前的主流方法。这类方法大多数将单词嵌入到低维向量中,再将这些向量用作神经网络的初始输入;随后,使用精心设计的网络对文本进行编码,以获得文本特征向量;该向量进一步用于分析文本中包含的信息,进而预测其所属的类别。但是,大多数现有方法没有考虑到一词多义现象,即一个单词通常包含多种含义,并且这些含义共享相同的词向量。这种不精确的单词表示将导致以下问题:(1)模型无法准确把握单词所表达的真实含义,进而无法准确理解文本,预测文本所属类别。(2)一词多义现象少的句子被模型理解地更为透彻,导致类别预测准确率波动较大。(3)同一词向量中包含过多的含义信息,导致训练的时候可能会引导模型往错误的方向更新参数。杨等人提出了基于上下文向量的注意力机制编码文本信息,并应用于文本分类。陈等人利用循环神经网络(rnn)并用基于用户产品信息的注意力机制对文档进行编码以进行文本分类。吴等人分开考虑用户和产品对文本信息的影响,并分别用用户注意力机制和产品注意力机制编码文本信息。杜等人发现卷积操作结果可以在一定程度上代表特定文本段的重要程度,进而提出了一种基于卷积操作的注意力机制编码文本信息,并应用于文本分类。然而这些方法大都只是使用注意力机制从多个词汇中挑选关键词汇,或者是从多个句子中挑选重要句子,而忽略了同一个词向量中通常包含多种含义信息并且其中包含了大量冗余信息的事实,没有对每个单词(或句子)内部信息进行筛选、过滤。因此,我们提出了一个新的方法:hcgm(hierarchicalneuralnetworkwithcategorygatemechanism),将每个单词的类别(例如词性)及其上下文,用户和产品信息作为门来过滤掉词向量中冗余信息。通过这样的类别门,我们可以仅使用词汇向量来动态生成每个词在特定上下文所表示的含义向量。技术实现要素:本发明的目的是针对现有的自然语言理解领域中将词向量作为神经网络初始输入的方法存在模型无法准确把握单词所表达的真实含义,进而无法准确预测这段文本代表含义的技术缺陷,提出一种基于类别门机制的文本分类方法,对文本类别进行预测。本发明的核心思想为:使用用户层次网络和产品层次网络两个独立的层次网络;前者网络使用用户注意力机制和用户门,后者网络使用产品注意力机制和产品门;两层次网络的词层级都安置一个词汇类别门,句子层级都安置一个句子类别门;此两层次网络分别将文本变为特征向量,再用特征向量做文本分类。本发明是基于以下技术方案实现的。所述基于类别门机制的文本分类方法,包括如下步骤:步骤1:确定评论文档中每个词汇的类别并为每个类别设置类别向量,具体为:1.a:以词性作为类别,利用工具nltk获取每个词汇的词性,将词性作为对应单词的类别,并为每个词性设置一个随机初始化的向量表示,称为类别向量;1.b:以上下文信息作为类别,为hcgm引入一个自适应类别模块,这个模块以每个词自身的词向量以及其左右邻居的词向量作为输入,输出为每个词的类别向量;步骤2:在不同层级从不同角度构建类别门;其中,构建的类别门包括四种:词汇类别门、句子类别门、用户门和产品门;其中,词汇类别门、句子类别门、用户门以及产品门分别从词汇角度、句子类别角度、用户喜好角度和产品属性角度过滤文本中冗余的信息,使得保留下来的文本信息向量能够更加精确地代表用户对某个产品的看法;每个词汇都有自己的类别,所以在词层级构建词汇类别门来过滤词汇冗余信息;而同一个文档是某个用户对某件产品的评论文本,即一个文档仅有一个用户和一个产品,单个词汇和用户、产品没有很强的联系,而一整个句子则和用户、产品强相关,因此在句子层级构建用户门和产品门;并在句子层级构建句子类别门,进一步过滤冗余信息并在一定程度上补充被用户门和产品门过滤过度的信息;下面详细介绍这四个类别门的构建,每个类别门都位于对应层级的lstm入口处:步骤2.a:构建词汇类别门,具体利用步骤1构建的类别向量处理对应单词的词向量;处理方法为:将类别向量复制两份分别通过使用sigmoid和tanh作为激活函数的线性层,得到的结果分别作为过滤类别门和保留类别门,过滤类别门过滤原词向量中冗余信息,保留类别门保留原词向量中能够表示词汇真实含义的信息;以sigmoid为激活函数的结果视为过滤类别门,因为sigmoid将向量中每个元素映射到0到1之间,0对应着“过滤”;而以tanh为激活函数的结果视为保留类别门,因为tanh将向量中的每个元素映射到-1到1之间,利用这样的向量处理词向量是对原向量的信息处理,并没有显式过滤掉词汇向量每个元素中包含的信息;使用每个词的过滤类别门和保留类别门来处理的自身的词向量,得到的结果向量包含其在当前上下文的真实含义;步骤2.b:构建句子类别门,具体使用句子类别门进一步过滤冗余信息;句子类别门位于神经网络的句子层级,以句子的类别过滤句子中的冗余信息;句子的类别源自于句子中每个词汇的类别,同一句子中的词汇含义向量分成两份分别通过lstm层获取两组不同的隐层向量和其中li代表句子si的长度;随后通过用户注意力机制压缩到一个向量si中,通过产品注意力机制压缩到向量s′i中;将每个词汇的注意力权重同样作为词汇对应类别的注意力权重,并利用这些权重值获取句子类别向量,同样分为用户注意力机制获取的sci和产品注意力机制获取的sc′i;与词汇类别门一样,将句子类别向量复制两份分别通过使用sigmoid和tanh作为激活函数的线性层,得到的结果分别作为过滤类别门和保留类别门,过滤类别门过滤句子向量中冗余信息,保留类别门保留原句子向量中能够表示句子真实含义的信息;步骤2.c:构建用户门,具体为:每个用户有自己的向量,每个句子都通过对应的用户门,过滤冗余的和用户关联度不大的信息,保留用户相关的信息;具体为,与词汇类别门一样,将用户向量复制两份分别通过使用sigmoid和tanh作为激活函数的线性层,得到的结果分别作为过滤类别门和保留类别门,过滤类别门过滤句子向量中冗余信息,保留类别门保留原句子向量中能够表示句子真实含义的信息;步骤2.d:构建产品门,具体为:与词汇类别门一样,将产品向量复制两份分别通过使用sigmoid和tanh作为激活函数的线性层,得到的结果分别作为过滤类别门和保留类别门,过滤类别门过滤句子向量中冗余信息,保留类别门保留原句子向量中能够表示句子真实含义的信息;其中,操作2.d的原因为:每个产品都有自己的向量,每个句子都通过对应的产品门,保留产品相关的信息;步骤3:将文本信息通过步骤2中构建的4个类别门;一个评论文本中包含多个句子,每个句子又包含多个词,将每个词向量通过步骤2中构建的词汇类别门;将得到的结果分成两份,分别通过用户网络和产品网络的lstm层获取上下文信息;得到的结果分别通过用户注意力机制和产品注意力机制获取句子向量;用户网络中的句子向量分成两份,分别通过句子类别门和用户门,获取句子类别门过滤的句子向量和用户门过滤的句子向量;产品网络中的句子向量分成两份,分别通过句子类别门和产品门,获取句子类别门过滤的句子向量和产品门过滤的句子向量;步骤4:整合从不同角度过滤得到的句子信息向量;用户网络中,将每个句子的句子向量、句子类别门过滤的句子向量、用户门过滤的句子向量相加作为用户网络的句子向量表示产品网络中,将每个句子的句子向量、句子类别门过滤的句子向量、产品门过滤的句子向量相加作为产品网络的句子向量表示步骤5:将和分别通过用户注意力机制和产品注意力机制获取文档向量dup;步骤6:预测文档类别分布,具体为:将dup通过softmax分类层获取预测的文档类别分布:sentiment∈rm;sentiment=softmax(dup)(1)其中,rm为维度为m的实数向量,m为文本类别可以取到的类别值的个数;步骤7:训练神经网络,使用交叉熵作为损失函数计算损失值;步骤8:预测文本所属类别,预测的类别值pre由类别分布sentiment得到:pre=argmax(sentiment)(2)至此,从步骤1到步骤8,完成了类别门机制的文本分类方法,实现了文本类别的预测。有益效果一种基于类别门机制的文本分类方法,与现有类别分类器相比,具有以下有益效果:1.所述类别分类方法从不同角度过滤冗余信息,让模型能够理解文本的真实含义;其中,词汇的类别角度为用户的喜好角度和产品的属性角度;2.利用词汇真实的含义信息来预测文本段所蕴含的类别,使得无论某个句子是否具有一词多义现象,模型都可以一视同仁,并且准确率不会波动较大;3.对词汇冗余信息进行清洗,让这些冗余信息不会干扰模型训练时候参数更新的方向;4.从单词内部和单词之间两个方面获取关键信息,弥补了注意力机制仅仅从单词之间提取关键信息的不足。附图说明图1为本发明一种基于类别门机制的类别分类方法的模型结构图。具体实施方式根据上述技术方案,下面通过具体实施例对本发明一种基于类别门机制的类别分类方法进行详细说明。实施例1本实施例叙述了一种基于类别门机制的类别分类方法具体实施时,用户门仅仅用在用户层次网络中,产品门仅仅用在产品层次网络中的原因。用户层次网络中和产品层次网络的词层级都安置一个词汇类别门,句子层级都安置一个句子类别门。以产品门为例说明用户门和产品门仅仅设置在句子层级的原因:给定产品glasses,描述glasses的一句话可能会包含很多不同的单词,而仅仅有几个单词和产品glasses相关程度较高,比如单词cool就会和产品glasses相关度较高,产品注意力机制会挑选出来单词cool,而用户注意力机制就未必会挑选出来单词cool;在注意力机制之后使用产品门过滤和产品glasses相关程度高的词cool,才能够保留cool在当前上下文的真实含义“酷”,但在和产品相关度不高的单词上使用产品门不会这样精确地过滤信息,并且甚至会错误地过滤了关键信息。图1为本发明一种基于类别门机制的类别分类方法的模型结构图。从图1中可以看出每种类别门所处的位置,每个类别门都位于相应层的lstm入口处,也可以视为被整合进lstm细胞中。整合了类别门的lstm分别用c-lstm(lstm整合词汇类别门)、sc-lstm(lstm整合句子类别门)、ug-lstm(lstm整合用户门)和pg-lstm(lstm整合产品门)。进一步地,本实例采用本发明提出的类别分类方法,采用词性作为每个词汇的类别,并使用以下三个数据集进行了实验操作。三个数据集网址是:http://ir.hit.edu.cu/%7edytang/paper/acl2015/dataset.7z现从某购物网站挑选某用户对某品牌的蓝牙耳机的评价:“性价比很高。音质很好。戴着很舒服。音效很不错。”使用我们的方法分析这段自然语言文本所属的情感类别,具体的操作是:步骤a:获取词向量并获取词汇类别:给定评论文档“itissocool.thequalityisverygood.verycomfortabletowear.ilikeitverymuch.”用,d=(s1,...,st),来表示,t代表文档长度,在这个实例中是t=3,其中的每个句子si又包含多个词汇,即我们利用nltk工具识别每个单词在对应上下文的词性,并将词性视为每个单词的类别,比如词汇“comfortable”的词性或者说类别为“形容词”,“quality”词性或者说类别为“名词”;将单词的词性按照单词顺序排序为类别列表词性列表中每个元素和词汇列表一一对应,比如词汇w22在本实例中代表词汇“quality”,词性c22为w22对应的词性或者说类别,在本实例中为“名词”;需要注意的是,相同类别的词汇拥有相同类别向量,即如果词汇wi和wj都为动词,则ci=cj;步骤b:构建词汇类别门,获取词汇类别过滤的词汇信息:利用词性向量构建词汇类别门,过滤词汇中的冗余信息,得到词汇的含义向量中保留词汇wt更精确的含义信息,比如本实例中词汇“like”的类别是“动词”,使用动词类别门过滤之后只保留like本身的动词含义“喜欢”,过滤掉了“like”中原先包含的“像”的含义,因为“像”的含义的类别为“介词”;以第t个词向量wt为例,具体操作为:将第t个词向量的类别向量ct和lstm第t-1个隐层向量ht-1拼接起来,即[ct;ht-1];其中,[ct;ht-1]表示将ct和ht-1拼接;将[ct;ht-1]复制两份分别通过使用sigmoid和tanh作为激活函数的线性层,得到的结果分别为过滤类别门和保留类别门以sigmoid为激活函数的结果视为过滤类别门,因为sigmoid将向量中每个元素映射到0到1之间,0对应着“过滤”;而以tanh为激活函数的结果视为保留类别门,因为tanh将向量中的每个元素映射到-1到1之间,利用这样的向量处理词向量是对原向量的信息处理,并没有显式过滤掉词汇向量每个元素中包含的信息;随后使用过滤类别门和保留类别门来处理第t个词的词向量wt:得到的结果为第t个词汇在当前上下文的真实含义的向量;步骤c:获取隐层向量,将分成两份分别通过lstm层获取两个不同的隐层向量ht和h′t;同一句子中的词汇含义向量分成两份分别通过lstm层获取两组不同的隐层向量和其中li代表句子si的长度;步骤d:获取句子向量,将同一句子中的隐层向量通过注意力机制压缩为句子向量,其中(hi1,...,hit)通过用户注意力机制得到si,里面应该包含和用户相关的重要信息“like”,“good”;h′i通过产品注意力机制得到s′i,里面应该包含和产品相关的重要信息“comfortable”,“cool”;随后通过用户注意力机制压缩到一个向量si中,通过产品注意力机制压缩到向量s′i中;其中,αij是hij的注意力权重,α′ij是h′ij的注意力权重,向量si是通过用户注意力机制获取到的句子向量,s′i表示通过产品注意力机制获取到的句子向量;步骤e:提取句子类别,将隐层向量的注意力权重同样视为类别向量的注意力权重,提取句子类别sci和sc′i,分别对应着用户注意力机制和产品注意力机制;我们将每个词汇的注意力权重同样作为词汇对应类别的注意力权重,并利用这些权重值获取句子类别向量sci和sc′i:其中,cij是词汇wij的类别向量;步骤f:构建句子类别门,获取句子类别过滤的句子信息。利用句子类别sci和sc′i构建句子类别门,从句子类别角度过滤句子冗余信息,进而获取句子含义向量和其中,hst为句子隐藏状态向量,和可以被视为句子在当前上下文语境的真实含义向量;随后通过句子层级lstm获取隐层向量hsi;随后通过另一个句子层级lstm获取隐层向量hs′i;步骤g:构建用户门,获取用户过滤的句子信息,利用句子的用户信息u构建用户门,从用户角度过滤句子冗余信息,进而获取用户过滤的句子含义向量比如,当前用户评论“like”代表非常喜欢,那么中保留的信息即为“verylike”;而如果当前用户很喜欢说“like”这个单词,并且说“like”代表他并不是很满意这个产品,则中将会保存的信息为“kindoflike”:其中,hut为句子隐藏状态向量,st是词汇通过用户注意力机制得到的句子向量,可以被视为句子在当前上下文语境的真实含义向量,或者说与用户强相关的含义向量;随后通过句子层级lstm获取隐层向量hui;步骤h:构建产品门,获取产品过滤的句子信息,利用句子的产品信息p构建产品门,从产品角度过滤句子冗余信息,进而获取产品过滤的句子含义向量比如,当前实例中产品是“蓝牙耳机”,那么单词“cool”所在句子的产品门过滤向量中保留的信息将是“酷”而不是“cool”本身还存在的含义“寒冷的”;其中,hpt为句子隐藏状态向量,s′t是词汇通过产品注意力机制得到的句子向量,可以被视为句子在当前上下文语境的真实含义向量,或者说与产品强相关的含义向量;随后通过句子层级lstm获取隐层向量hpi;步骤i:整合从不同角度过滤得到的句子信息代表:其中,是逐元素相加操作,为用户网络中的第i个句子的向量,为产品网络中的第i个句子的向量;步骤j:获取文档向量,将和通过分别通过用户注意力机制和产品注意力机制获取用户相关的文档向量du和产品相关的文档向量dp:将du和dp拼接起来,即dup=[du;dp],dup是文档向量;步骤k:预测文档情感类别,将dup通过softmax分类层获取预测的类别分布sentiment∈rm,其中m为可以取到的类别值的个数,如imdb数据集的类别值个数为10,yelp数据集为5:sentiment=softmax(dup)(26)pre=argmax(sentiment)(27)其中pre即为最终预测的类别值,比如本实例中情感类别值为5,因为用户对蓝牙耳机的评论体现出用户对其很满意;根据上述步骤的操作过程,即可对文本所属类别进行预测。实施例2实施例2采用上下文信息获取词的类别,即
发明内容的1.b部分。1.b具体实施时:设置超参数类别个数为nc,将第i个词向量及其相邻词的词向量和加起来,通过线性层基于公式(1)获取第i个词的类别分布其中,softmax是线性层的激活函数;代表逐元素相加;是可训练权重参数;是cdi的转置;为类别分布;类别词汇向量表记为vc,ci为第i个词的类别向量,nc为类别个数,dc为类别向量维度;第i个词的类别向量ci通过(2)由类别分布和类别词汇向量表的乘积得到:ci=cdi·vc(29)其中,·为矩阵乘法操作,为类别分布;实施例2随后的操作和实施例1中相同,即实施例1中的步骤b到k部分,根据上述步骤的操作过程,即可对文本所属类别进行预测。经过上述步骤的操作,采用本发明提出的方法(基于类别门机制的类别分类方法),以词性作为类别得到的分类结果的准确率和rmse如表1中倒数第三行所示,其中倒数第二行和最后一行分别为使用“位置”和“上下文”信息做为每个词的类别信息得到的实验结果。表112种分类方式-3种数据集效果比较需要强调的是,对于本领域技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些也应视为属于本发明的保护范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1