基于自注意的社交媒体主题评论的细粒度分类方法及系统与流程

文档序号:31704379发布日期:2022-10-01 10:10阅读:40来源:国知局
基于自注意的社交媒体主题评论的细粒度分类方法及系统与流程

1.本发明涉及社交媒体主题评论的细粒度分类技术领域。更具体地说,本发明涉及一种基于自注意的社交媒体主题评论的细粒度分类方法及系统。


背景技术:

2.越来越多的线下活动开始在线上举行,我国网民规模达 10亿级,社交媒体用户更加活跃,而由此带来的互联网信息量也快速增长,而由此产生了海量的用户主观文本数据。这些数据通常隐含用户的主观情绪,通过分析这些文本数据中的情感倾向,可以了解用户对某一话题或事物的喜好、价值观等信息,对于企事业单位或学术研究团体有重要意义。
3.目前公开的舆情分析算法中仅支持对用户情感倾向进行粗粒度分类,如果需要进一步分析用户的对某一目标属性的情感倾向,则仍需要人工辅助判断。作为自然语言处理的一个重要研究方向,舆情分析又称为情感分析,是人工智能技术在舆情分析方面的重要应用。通过对用户情感倾向性的进一步细化分类,可以进一步判别用户的喜好、是非观、价值观、政治观等隐含信息,为大数据时代网络舆情分析提供重要的数据支持。
4.而得到能够对目标文本语料的情感倾向进行多标签分类(细粒度分类),需要解决的难点有:1、建立多标签分类方法;2、将目标文本语料向量化以供给模型使用;3、搭建符合多标签情感分类的算法模型4、调整模型以提高目标文本语料在各标签数据量非对称情况下有效提升算法的判别准确率。


技术实现要素:

5.本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。
6.为了实现根据本发明的这些目的和其它优点,提供了一种基于自注意的社交媒体主题评论的细粒度分类方法,包括以下步骤:
7.步骤a、对原始社交媒体主题评论数据进行预处理和细粒度分类标注,得到文本语料数据集,并进行向量化,得到对应的向量化文本语料数据集;
8.步骤b、构建基于多头输入结构层、lstm层、自注意力层、正则化层、分类输出层的分类模型,然后将向量化的文本语料数据和对应的分类标注,输入至分类模型中,进行训练,输出得到预测的分类结果,并通过交叉熵损失函数计算预测的分类结果与对应的分类标注的误差,然后通过adamwarmup算法驱动误差反向传播,经多次训练后,得到训练后的分类模型;
9.步骤c、将待分类的社交媒体主题评论数据按步骤a进行预处理,并向量化,然后将向量化的数据输入到步骤b中训练后的分类模型中,输出得到该社交媒体主题评论数据的预测的分类结果,即该社交媒体主题评论数据的细粒度分类。
10.优选的是,步骤a的预处理包括数据清洗和token化,数据清洗为删除url以及用户提及和表情字符,token化为去掉特殊字符和停用词。
11.优选的是,步骤a中采用skip-gram模型进行向量化。
12.优选的是,步骤b中向量化的文本语料数据复制多份分别作为多个输入量同时输入至多头输入结构层,多头输入结构层对各输入量进行位置编码,并将位置编码拼接融合至各输入量中,然后输入至lstm层。
13.优选的是,位置编码的拼接融合公式如公式(1)所示:
14.input(x)=add(embedding(x),position(x))
ꢀꢀꢀ
(1)
15.其中,input(x)表示lstm层的输入向量;embedding(x)表示向量化的文本语料数据;position(x)表示模型输入量的位置向量,通过位置计算公式编码得到;add()表示融合操作;位置编码公式如公式(2)所示:
[0016][0017]
其中,pe(pos,2i)表示第2i维的位置编码,pe(pos,2i+1)表示第2i+1维的位置编码,pos表示句子中每个子词在句子中的位置,i表示输入量的某一维度,d
model
表示输入量的维度;
[0018]
根据三角函数和差公式,如公式(3)所示:
[0019][0020]
式中,a、b分别表示为两个不同的变量;
[0021]
将上述位置编码公式变换成公式(4)所示:
[0022][0023]
优选的是,lstm层对各输入量进行特征提取,得到各输入量的特征提取向量数据。
[0024]
优选的是,经lstm层处理后的特征提取向量数据作为输入量,输入至自注意力层,对给定的特征提取向量数据赋值为x,随机初始化三个矩阵wq、wk、wv,分别经x与上述三个矩阵相乘得到三个变量q、k、v,并基于公式(5)进行注意力打分;
[0025][0026]
其中,q表示句子中所要查询的词的向量,k表示同一句子中所有词的向量,v表示对q与k关系的评价或权重,d表示常量,为矩阵qi×ki
的第一个维度的开平方,或者设为其他值,i表示当前计算的词在向量中的位置;
[0027]
采用softmax函数对注意力得分进行数值转换,计算在给定了q和k的情况下,两个词的归一相似度,再通过与v相乘得到注意力计算结果。
[0028]
优选的是,正则化层用于对自注意力层输出的特征向量进行“层正则化”处理;
[0029]
分类输出层用于对注意力计算结果进行分类,然后输出分类结果,分类结果包括文本语料数据和对应的细粒度分类标注。
[0030]
优选的是,一个lstm层和一个自注意力层组成一个特征提取层,所述分类模型包括多层特征提取层。
[0031]
提供一种基于自注意的社交媒体主题评论的细粒度分类系统,用于执行上述的分类方法。
[0032]
本发明至少包括以下有益效果:本发明通过多头输入结构,克服了单条评论文本数据量小,信息难于精准捕捉的缺陷,进行多层同步输入。其次,通过lstm层分别对多个(三个)输入量进行平行的互不干扰的特征提取,可以更全面的将句子中(评论文本数据)重要的词加深记忆,非重要词淡化记忆,以此原则进行特征提取。最后,基于自注意力层能够有效地捕捉同一组信息中不同特征之间的依赖关系和依赖程度,而对于评论文本语料情感分析这种上下文自依赖的任务场景,则能够更精准的识别情感倾向,提高分类精度和准度。
[0033]
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
[0034]
图1为本发明的其中一种技术方案的所述分类方法的技术框架图;
[0035]
图2为本发明的其中一种技术方案的一层分类模型的结构示意图;
[0036]
图3为本发明的mh3-sa-lstm(1层)模型的准确率结果示意图;
[0037]
图4为本发明的mh3-sa-lstm(1层)模型的损失率结果示意图;
[0038]
图5为本发明的transformer-1l(1层)模型的准确率结果示意图;
[0039]
图6为本发明的transformer-1l(1层)模型的损失率结果示意图;
[0040]
图7为本发明的sa-lstm(1层)模型的准确率结果示意图;
[0041]
图8为本发明的sa-lstm(1层)模型的损失率结果示意图;
[0042]
图9为本发明的lstm(1层)模型的准确率结果示意图;
[0043]
图10为本发明的lstm(1层)模型的损失率结果示意图;
[0044]
图11为本发明的mh3-sa-lstm(2层)模型的准确率结果示意图;
[0045]
图12为本发明的mh3-sa-lstm(2层)模型的损失率结果示意图;
[0046]
图13为本发明的transformer-1l(2层)模型的准确率结果示意图;
[0047]
图14为本发明的transformer-1l(2层)模型的损失率结果示意图;
[0048]
图15为本发明的sa-lstm(2层)模型的准确率结果示意图;
[0049]
图16为本发明的sa-lstm(2层)模型的损失率结果示意图;
[0050]
图17为本发明的lstm(2层)模型的准确率结果示意图;
[0051]
图18为本发明的lstm(2层)模型的损失率结果示意图。
具体实施方式
[0052]
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
[0053]
需要说明的是,下述实施方案中所述实验方法,如无特殊说明,均为常规方法,所述试剂和材料,如无特殊说明,均可从商业途径获得;在本发明的描述中,术语指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,并
不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0054]
如图1~18所示,本发明提供一种基于自注意的社交媒体主题评论的细粒度分类方法,包括以下步骤:
[0055]
步骤a、对原始社交媒体主题评论数据进行预处理和细粒度分类标注,得到文本语料数据集,并进行向量化,得到对应的向量化文本语料数据集;每条社交媒体主题评论数据作为生成一条文本语料数据,海量文本语料数据形成文本语料数据集。
[0056]
步骤b、构建基于多头输入结构层、lstm层、自注意力层、正则化层、分类输出层的分类模型,然后将向量化的文本语料数据和对应的分类标注,输入至分类模型中,进行训练,输出得到预测的分类结果,并通过交叉熵损失函数计算预测的分类结果与对应的分类标注的误差,然后通过adamwarmup算法驱动误差反向传播,经多次训练后,得到训练后的分类模型;多头输入结构层通过多层堆叠可以增强分类模型对输入文本语料的理解。 lstm层具有门控单元,每个门控单元实现不同的功能,每个门控单元在工作过程中可以通过阈值的大小对参数进行调整,同时这些门控单元也可以通过反向传播算法进行训练。由于评论文本语料的字数大多有限,因此,重点利用lstm模型搭配注意力机制来构建整个模型,相较于bert等庞大的预训练模型,该模型占用资源更少,更容易部署在本地。自注意力层通过能够有效地捕捉同一组信息中不同特征之间的依赖关系和依赖程度,这种特征提取方式对于评论文本语料情感分析这种上下文自依赖的任务场景能够有效地发挥其自身的优势。经过采用海量的文本语料数据训练,可以得到预测准确性高的分类模型,而且该模型尤其适应用细粒度的分类需求,弥补当前分类只能作到粗粒度分类的缺陷。
[0057]
步骤c、将待分类的社交媒体主题评论数据按步骤a进行预处理,并向量化,然后将向量化的数据输入到步骤b中训练后的分类模型中,输出得到该社交媒体主题评论数据的预测的分类结果,即该社交媒体主题评论数据的细粒度分类。
[0058]
在上述技术方案中,基于multi-head(多头输入)结构与自注意机制的神经网络进行多标签情感分类(判别用户的喜好、是非观、价值观、政治观等隐含信息,即属于细粒度分类),搭建了基于自注意的社交媒体主题评论的细粒度分类模型,通过监督学习学习一定量的文本语料数据,训练出一个能够对目标文本语料的情感倾向进行多标签分类(细粒度分类)。
[0059]
本分类模型通过多头输入结构,克服了单条评论文本数据量小,信息难于精准捕捉的缺陷,进行多层同步输入,比如三层同时输入,即将一条评论文本数据以3倍量输入至整个模型。其次,通过lstm层分别对三个输入量进行平行的互不干扰的特征提取,可以更全面的将句子中(评论文本数据)重要的词加深记忆,非重要词淡化记忆,以此原则进行特征提取。最后,基于自注意力层能够有效地捕捉同一组信息中不同特征之间的依赖关系和依赖程度,而对于评论文本语料情感分析这种上下文自依赖的任务场景,则能够更精准的识别情感倾向,提高分类精度和准度。
[0060]
在另一种技术方案中,步骤a的预处理包括数据清洗和token化,数据清洗为删除url 以及用户提及和表情字符,token化为去掉特殊字符和停用词。
[0061]
在上述技术方案中,由于原始的评论文本数据含有较多的冗余和无用的信息,这些信息如果不删除,直接输入到分类模型不仅会影响分类模型的处理速度,而且还会影响
分类精度和准度。
[0062]
下面举例说明何为数据清洗,如表1所示,未清洗的原始评论文本数据,去掉url 以及用户提及(@用户名)和表情字符(emoji),方便数据标注人员阅读与理解。
[0063]
表1数据清洗前后对比
[0064][0065][0066]
下面再说明数据的token化处理,如表2所示,将数据处理进一步清洗以供模型进行训练,方法为去掉评论中的特殊字符,如“#”、“.”、
“’”
、“?”等,再将无实意的词(停用词)去掉,如“of”、“with”、“am”等。
[0067]
表2数据token化处理前后
[0068]
[0069][0069][0070]
人工标注举例说明:采用多标签情感分析,在进行情感标注时,需考虑评论的主题以及评论关键词对评论情感倾向性判定的影响。除了情感倾向这一标签,还包括国家和地
区、话题标签,以完成对评论的精细化标注。如表3所示,为其中一种情感细粒度分类表,具体分类方法可基于该方法进一步优化。
[0071]
表3多标签分类表
[0072][0073]
由于计算机采用二进制计算,本次标注针对每个标签预留相应的二进制位数。在个别标签上有一定的增减空间,可以根据需要增加或删除某一标签下的类别。因此,根据每类别标签实际数量,目前理论标签数量为:
[0074]
总标签数量=(国家数量
×
话题类型)
×
情绪倾向
[0075]
即:(5
×
5)
×
4=100个。理论标签数量有100个,而此次如下述实施例中收集采用的试验数据,根据实际标注情况后,具有的实际标签数量为92个。
[0076]
在另一种技术方案中,步骤a中采用skip-gram模型进行向量化。
[0077]
在经过之前的预处理之后,需要将文本语料数据向量化,以便能够将其输入到模型当中进行训练。在nlp领域中,常用的文本语料向量化方法为词向量。本技术方案将使用 word2vec方法中的skip-gram模型。
[0078]
在另一种技术方案中,步骤b中向量化的文本语料数据复制多份分别作为多个输入量同时输入至多头输入结构层,多头输入结构层对各输入量进行位置编码,并将位置编码拼接融合至各输入量中,然后输入至lstm层。
[0079]
位置编码的拼接融合公式如公式(1)所示:
[0080]
input(x)=add(embedding(x),position(x))公式(1)
[0081]
其中,input(x)表示lstm层的输入向量;embedding(x)表示向量化的文本语料数据;position(x)表示模型输入量的位置向量,通过位置计算公式编码得到;add()表示融合操作;位置编码公式如公式(2)所示:
[0082][0083]
其中,pe(pos,2i)表示第2i维的位置编码,pe(pos,2i+1)表示第2i+1维的位置编码,pos表示句子中每个子词(token)在句子中的位置,i表示输入量的某一维度, d
model
表示输入量的维度;
[0084]
根据三角函数和差公式,如公式(3)所示:
[0085][0086]
式中,a、b分别表示为两个不同的变量;
[0087]
将上述位置编码公式变换成公式(4)所示:
[0088][0089]
在上述技术方案中,分类模型的输入层为前述预处理后的向量化文本语料,为了能够使分类模型充分学习到文本语料中的特征信息,通过对不同输入量进行拼接融合,以便分类模型的lstm层和自注意力层对输入量特征进行差异化提取。
[0090]
考虑到以字为单位进行向量化编码可能会丢失字的顺序信息,即相同的字根据上下文位置上的字的不同顺序组合可能包含不同的信息表达,为了弥补这一信息的缺失模型在此加入了位置编码,此处引入一个编码向量,该向量长度为输入词向量长度(向量维度)d
model
,这样做方便位置信息与词向量进行叠加操作。位置pos+k处的位置向量,可以通过位置pos 与位置k处的位置向量线性组合得到,这就意味着该位置编码形式不但指示了token的绝对位置,同时还蕴含着其相对位置信息。
[0091]
在另一种技术方案中,lstm层对各输入量进行特征提取,得到各输入量的特征提取向量数据。采用lstm层可以解决rnn模型中反向传播算法存在的梯度消失和梯度爆炸问题,lstm层通过引入门控单元,每个门控单元实现不同的功能,每个门控单元在工作过程中可以通过阈值的大小对参数进行调整,同时这些门控单元也可以通过反向传播算法进行训练。由于评论文本语料的字数大多有限,因此利用lstm层搭配自注意力层来构建整个分类模型,相较于bert等庞大的预训练模型,该分类模型占用资源更少,更容易部署在本地。
[0092]
在另一种技术方案中,经lstm层处理后的特征提取向量数据作为输入量,输入至自注意力层,对给定的特征提取向量数据赋值为x,随机初始化三个矩阵wq、wk、wv,分别经x与上述三个矩阵相乘得到三个变量q、k、v,并基于公式(5)进行注意力打分;
[0093][0094]
其中,q表示句子中所要查询的词的向量,k表示同一句子中所有词的向量,v表示对q与k关系的评价或权重,d表示常量,为矩阵qi×ki
的第一个维度的开平方,或者设为其他值,i表示当前计算的词在向量中的位置;
[0095]
采用softmax函数对注意力得分进行数值转换,计算在给定了q和k的情况下,两个词的归一相似度,再通过与v相乘得到注意力计算结果。
[0096]
本技术方案采用基于自注意机制构建的深度学习模型,该机制参照人脑神经网络的处理机制,当神经网络接收大量外部输入信息时,会选择一些关键的信息来进行处理,从而提高工作效率。自注意力层能够有效地捕捉同一组信息中不同特征之间的依赖关系和依赖程度,而对于评论文本语料情感分析这种上下文自依赖的任务场景,则能够更精准的识别情感倾向,即可以精准的为每一条评论数据进行打分,从而提高分类精度和准度。
[0097]
在另一种技术方案中,正则化层用于对自注意力层输出的特征向量进行“层正则化”处理。
[0098]
正则化层的作用:自注意力层相当于为对每个句子(评论)中的各种词语组合进行打分,并输出一个打分结果,分类输出层则是相当于根据打分结果将每个句子进行分类,例如优良中差(这个分类结果是相对的,例如一次训练后所有打分结果分布在0.0001到0.001 之间,则分类就需要在这个区间进行分类;二次训练后结果分布在0.0000000001到0.00001 之间,则本次分类也将在这个区间内进行),类似于这种;而“层正则化”是相当于将打分结果转变为百分制,这样就把相对的结果变为绝对的结果,从而提高分类效率。
[0099]
在另一种技术方案中,分类输出层用于对注意力计算结果进行分类,然后输出分类结果,分类结果包括文本语料数据和对应的细粒度分类标注。
[0100]
分类输出层(情感分类层),其将经过计算编码后的特征信息进行分类,以达到情感倾向性判断的目标。比如文本语料包含三类标签,每个标签有4或5个分类结果,在实际运用中可以通过对最后一层进行微调来增加或减少情感分类类别,以达到粗粒度和细粒度等不同情感分析任务的需求。
[0101]
一个lstm层和一个自注意力层组成一个特征提取层,所述分类模型包括多层特征提取层。一个lstm层和一个自注意力层叠加形成一个特征提取层,
[0102]
提供一种自注意的社交媒体主题评论的细粒度分类系统,用于执行上述的分类方法。
[0103]
《实施例》
[0104]
分类模型如图2所示,为包含一层特征提取层的分类模型,二层分类模型为包括两层叠特征提取层的分类模型,本实施例训练采用的是一层分类模型和二层分类模型分别进行预测,并与其它分类模型比较分类结果。
[0105]
训练参数设置如下:
[0106]
batch size:128;(batch size表示批处理数量)
[0107]
自注意力层激活函数:gelu(高斯误差线性单元)
[0108]
dropout:0.2
[0109]
优化算法:adamwarmup(带热启动机制的adam算法);
[0110]
损失函数:binary_crossentropy(交叉熵损失函数);
[0111]
训练集/验证集:4/1;(是数量比,例如测试数据有1万条,则其中80%作为训练数据, 20%作为测试数据)
[0112]
epoch=20。(一个epoch表示将所有训练样本训练一次的过程,)
[0113]
以下列举的所有其它模型的基本参数均与上述参数设置相同。
[0114]
包括transformer模型,基于注意力机制的lstm模型,lstm模型,与本技术的分类模型进行对比。采用f1-score来判断各模型的优劣。各模型单轮训练结果对比如下表所示:
[0115]
表4单轮训练结果
[0116][0117]
根据以上结果可以看出,在模型层数为一层时,本发明申请的分类模型与
transformer 模型各有优劣,本发明的分类模型结果好于注意力lstm模型(sa-lstm)与lstm模型;在模型层数为两层时注意力lstm模型(sa-lstm)与lstm模型有一定的过拟合,训练结果均有不同程度的下降;而本技术的分类模型与transformer模型均有所提升,可以看出本技术的分类模型在数据不平衡下的训练结果相对较好。
[0118]
mh3-sa-lstm表示本技术的1层分类模型,transformer表示transformer模型; sa-lstm表示带自注意机制的lstm模型;lstm表示长短期记忆模型。
[0119]
图1~10中各英语字母的含义标注如下:
[0120]
input:输入,w(t):中心词,hidden-layer:隐藏层(或中间层),h(t):隐藏层变量,output:输出,w(t-2):中心词前t-2个时间单位的词,w(t-1):中心词前t-1个时间单位的词,w(t+1):中心词后t+1个时间单位的词,w(t+2):中心词后t+2个时间单位的词,accuracy:准确率,epochs:训练代数(指示此时的训练结果是第几代的训练结果),trainning accuracy:训练集准确率,vaildation accuracy:验证集准确率,trainningloss:训练集损失率,vaildation loss:验证集损失率,loss:损失率。
[0121]
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1