1.本发明涉及投票结果预测领域,提供了一种社交网络用户投票结果预测实现方法。
背景技术:2.随着社交网络的发展,社交网络中的用户会在社交网络中,针对不同话题进行投票。社交网络用户投票结果预测旨在通过分析社交网络用户自身相关属性、话题相关属性以及其在历史话题上的投票结果,预测其在新话题上的唱票结果。
3.kraft等人,使用glove表示话题文本中的每个词,并使用词向量的平均向量表示话题,随机初始化每个社交网络用户的向量表示,将两向量做内积,之后使用逻辑回归做分类;kornilova等人在此基础上,增加考虑话题自身的一些属性,在话题文本向量化表示时,融入更多信息;patil等人,在kraft的研究基础上进行改进,不使用随机向量表示社交网络用户,而是使用社交网络用户相关属性进行用户的向量化表示。然而,以上的研究仅考虑用户向量化及话题向量化两个因素,未考虑社交网络用户间的关系。karimi等人使用社交网络用户的个人资料表示用户,且考虑话题发起用户与待预测用户在历史话题中的投票一致性关系,未考虑用户间的相互影响;yang等人,通过用户间历史合作关系,构建用户间的同质关系图,使用用户个人属性信息对用户进行向量化表示,但是,用户向量化表示过于简单,且在某一类话题上的合作关系,不能作为用户间相互影响的依据。
4.综上所示,在社交网络用户投票结果预测研究中,大部分的研究只考虑话题、用户的向量化表示以及用户间的交互关系。在用户向量化表示时,现有研究的粒度较粗;考虑用户间的交互关系时,利用用户间历史合作信息构建同质图,但在某一类话题上的合作关系,不能作为用户间相互影响的依据。没有研究者考虑用户本身的评论文本等。
技术实现要素:5.本发明的目的在于提出一种社交网络用户投票结果预测实现方法。
6.实现本发明目的的技术解决方案为:一种社交网络用户投票结果预测实现方法,包括如下步骤:
7.步骤1:构建数据集
8.通过爬虫程序,构建用户数据集、话题数据集、投票数据集、推特数据集,并对数据集进行清洗、预处理;
9.步骤2:话题建模
10.通过话题数据集,提取相关字段,进行话题建模,得到话题的向量化表示;
11.步骤3:用户建模
12.通过用户数据集、推特数据集,提取相关字段,进行用户建模,得到用户的向量化表示;
13.步骤4:构建用户关系图谱
14.通过用户数据集构建用户关系图谱;
15.步骤5:投票结果预测
16.构建社交网络用户投票结果预测模型,将用户向量输入到用户关系图谱中,通过异质图注意力网络,经过节点级注意力机制和语义级注意力机制两阶段的注意力机制,更新用户向量,之后与话题向量拼接输入到多层感知机中,进行预测。
17.进一步的,步骤1,构建数据集,具体方法为:
18.步骤1.1:使用爬虫程序,从社交网络、维基百科获取信息,将获取的信息格式化后,最终以json格式进行存储;
19.步骤1.2:构建的用户数据集,具体字段名称及字段含义如表1所示:
20.表1用户数据集
[0021][0022][0023]
其中所属小组可根据行业领域、地区等划分,形成不同用户类别信息;
[0024]
步骤1.3:构建的投票数据集,具体字段名称及字段含义如表2所示:
[0025]
表2投票数据集
[0026]
字段名称字段含义title所投话题编号date投票时间vote_result投票结果member每一位投票用户的具体数据
member.name投票用户姓名member.vote投票用户所投结果
[0027]
步骤1.4:构建的话题数据集,具体字段名称及字段含义如表3所示:
[0028]
表3话题数据集
[0029]
字段名称字段含义bill_id话题编号bill_type话题类型sponsor话题发起人cosponsors话题联合发起人official_title话题标题subjects话题所属类型领域summary话题文本
[0030]
步骤1.5:构建的推特数据集,具体字段名称及字段含义如表4所示:
[0031]
表4推特数据集
[0032]
字段名称字段含义member_id用户编号name姓名time推特发布时间tweet推特文本。
[0033]
进一步的,步骤2,话题建模,具体方法为:
[0034]
步骤2.1:针对每一个话题,从话题数据集中抽取能有效丰富话题信息的字段,包括话题所属类型领域、话题发起人支持团体、话题文本信息;
[0035]
步骤2.2:将步骤2.1所获得的三部分信息,分别使用bert预训练模型进行编码后,进行拼接,得到话题的向量化表示,所用bert预训练模型为bert-base-uncased。
[0036]
进一步的,步骤3,用户建模,具体方法为:
[0037]
步骤3.1:针对每一个用户,从用户数据集中抽取能有效丰富用户信息的字段,包括用户性别、宗教信仰、所在地、支持团体、所属小组及主张;
[0038]
步骤3.2:针对每一个用户,从推特数据集中,抽取其所发表的全部推特;
[0039]
步骤3.3:将步骤3.1、步骤3.2所获得的信息,分别使用bert预训练模型进行编码后,再进行拼接,得到用户的向量化表示,所用bert预训练模型为bert-base-uncased。
[0040]
进一步的,步骤4,构建用户关系图谱,具体方法为:
[0041]
根据用户数据集的所属小组、所在地、支持团体字段构建用户关系图谱,所述用户关系图谱为一个异质图g=(v,e),v表示节点集合,e表示边集合,该异质图存在两种映射:φ:v
→
a,ψ:e
→
r,其中a={a1,a2,a3,a4}表示四类节点,分别为用户、团体、地、小组;r={r1,r2,r3}表示三类边,分别为用户支持政党、用户所在地、用户所属小组;
[0042]
定义三种元路径:分别表示用户间通过团体、所在地、小组建立联系。
[0043]
进一步的,步骤5,投票结果预测,具体方法为:
[0044]
(1)节点级的注意力机制
[0045]
利用自注意力机制去学习节点间的注意力权重,设用户li及lk的向量表示分别为:及若两用户通过元路径φ相连,则使用表示通过元路径φ与用户li相连的用户lk对li的重要性,其形式化表示为:
[0046][0047]
其中att
node
表示使用节点级注意力的神经网络;
[0048]
对于所有的节点均需要计算其中表示通过元路径φ与用户li相连的所有节点集合,归一化后的注意力权重计算公式为:
[0049][0050]
其中σ表示激活函数,||表示拼接操作,a
φ
表示针对元路径φ的节点级注意力向量;
[0051]
经过元路径φ的节点级注意力计算后,用户li的向量表示更新为其计算公式为:
[0052][0053]
给定定义的三种元路径{φ1,φ2,φ3},经过节点级注意力后,得到3个已经更新过的节点集合,表示为
[0054]
(2)语义级的注意力机制:
[0055]
不同的元路径具有不同的含义,因此根据三种元路径,从节点级注意力机制更新后得到的三组用户向量,分别具有不同的语义注意力权重其形式化表示为:
[0056][0057]
其中att
sem
表示使用语义级注意力的神经网络;
[0058]
每个元路径的重要性表示为计算公式如下:
[0059][0060]
其中w为权重矩阵,b为偏置向量,p为语义注意力向量;
[0061]
每个元路径的注意力权重的计算公式为:
[0062][0063]
最终,经过两阶段注意力机制后,用户向量表示为:
[0064][0065]
(3)多层感知机
[0066]
将用户li更新后的向量zi与话题bj的向量拼接后输入多层感知机:
[0067][0068]
其中σ表示激活函数,||表示拼接操作,使用w和b将拼接后的向量映射至隐藏层,再通过wm和bm及softmax函数进行归一化得到该用户支持该话题的概率y,其中wm和bm分别为softmax模型根据输入向量及标签计算出来的权重矩阵及偏置向量。
[0069]
一种社交网络用户投票结果预测实现系统,基于所述的社交网络用户投票结果预测实现方法,完成社交网络用户投票结果预测。
[0070]
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现所述的社交网络用户投票结果预测实现方法,完成社交网络用户投票结果预测。
[0071]
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现所述的社交网络用户投票结果预测实现方法,完成社交网络用户投票结果预测。
[0072]
本发明与现有技术相比,其显著优点为:用户建模、话题建模考虑属性更多,粒度更细;对用户的推特文本进行了更有效的利用;综合考虑用户间的关系,构建用户关系图谱,充分考虑用户间的影响,提高了社交网络用户投票结果预测的准确率。
附图说明
[0073]
图1是社交网络用户投票结果预测实现方法的总体框架图;
[0074]
图2是话题建模的流程图;
[0075]
图3是用户建模的流程图;
[0076]
图4是用户关系图谱的示意图;
[0077]
图5是社交网络用户投票结果预测模型的流程图;
[0078]
图6是话题数据集的示例图;
[0079]
图7是投票数据集的示例图;
[0080]
图8是推特数据集的示例图;
[0081]
图9是用户数据集的示例图。
具体实施方式
[0082]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0083]
本发明提出一种社交网络用户投票结果预测实现方法,首先,通过社交网络、维基百科等数据源构建数据集;然后根据所构建的数据集,分别进行用户建模、话题建模、构建用户关系图谱;最后,将用户建模、话题建模后的向量及用户关系图谱输入到社交网络用户投票结果预测模型中,得到最终的预测结果。
[0084]
图1为社交网络用户投票结果预测实现方法的总体框架图,步骤如下:
[0085]
步骤1:构建数据集
[0086]
步骤1.1:使用爬虫程序,从社交网络、维基百科等数据源获取信息。将获取的信息格式化后,最终以json格式进行存储。
[0087]
步骤1.2:构建的用户数据集,具体字段名称及字段含义如表1所示:
[0088]
表1用户数据集
[0089][0090][0091]
步骤1.3:构建的投票数据集,具体字段名称及字段含义如表2所示:
[0092]
表2投票数据集
[0093]
字段名称字段含义title所投话题编号date投票时间vote_result投票结果member每一位投票用户的具体数据member.name投票用户姓名member.vote投票用户所投结果
[0094]
步骤1.4:构建的话题数据集,具体字段名称及字段含义如表3所示:
[0095]
表3话题数据集
[0096]
字段名称字段含义bill_id话题编号bill_type话题类型sponsor话题发起人cosponsors话题联合发起人official_title话题标题subjects话题所属类型领域summary话题文本
[0097]
步骤1.5:构建的推特数据集,具体字段名称及字段含义如表4所示:
[0098]
表4推特数据集
[0099]
字段名称字段含义member_id用户编号name姓名time推特发布时间tweet推特文本
[0100]
步骤2:话题建模
[0101]
步骤2.1:针对每一个话题,从话题数据集中,抽取能有效丰富话题信息的字段,包括话题所属类型领域、话题发起人支持团体、话题文本信息。
[0102]
步骤2.2:将步骤2.1所获得的三部分信息,分别使用bert进行编码后,进行拼接,得到话题的向量化表示。所用bert预训练模型为bert-base-uncased。如图2所示,为话题建模的流程图。
[0103]
步骤3:用户建模
[0104]
步骤3.1:针对每一个用户,从用户数据集中,抽取能有效丰富用户信息的字段,包括用户性别、宗教信仰、所在地、支持团体、所属小组及主张。
[0105]
步骤3.2:针对每一个用户,从推特数据集中,抽取其所发表的全部推特。
[0106]
步骤3.3:将步骤3.1、步骤3.2所获得的信息,分别使用bert进行编码后,两部分进行拼接,得到用户的向量化表示。所用bert预训练模型为bert-base-uncased。如图3所示,为用户建模的流程图。
[0107]
步骤4:构建用户关系图谱
[0108]
步骤4.1:根据用户数据集的所属小组、所在地、支持团体字段构建用户关系图谱,如图4所示,为用户关系图谱的示意图。用户关系图谱为一个异质图g=v,e),v表示节点集合,e表示边集合。该异质图存在两种映射:φ:v
→
a,ψ:e
→
r。其中a={a1,a2,a3,a4}表示四类节点,分别为用户、团体、地、小组;r={r1,r2,r3}表示三类边,分别为用户支持政党、用户所在地、用户所属小组。定义三种元路径:分别表示用户间通过团体、地、小组建立联系。
[0109]
步骤5:社交网络用户投票结果预测模型
[0110]
步骤5.1:将步骤2所得的话题向量、步骤3所得的用户向量、步骤4所得的用户关系图谱作为输入。将用户向量输入到用户关系图谱中,通过异质图注意力网络,经过节点级注
意力机制和语义级注意力机制两阶段的注意力机制,更新用户向量,之后与话题向量拼接输入到多层感知机中,进行预测。如图5所示,为社交网络用户投票结果预测模型的流程图。
[0111]
总体形式化表示为:
[0112]
已知:
[0113]
用户集合l={l1,l2,
…
,lk},其中li={ai,ti},ai表示该用户的个人信息,ti={t1,t2,
…
,tn}为该用户的推文集合,且tj={sj,dj},sj表示该推文所属类型领域,dj表示该推文的文本内容。
[0114]
话题集合b={b1,b2,
…
,bm},其中bj={sj,pj,cj},sj表示该话题所属类型领域,pj表示该话题发起人支持团体,cj表示话题的文本内容。
[0115]
投票记录集合r={r(li,bj)|1≤i≤k,1≤j≤m},表示用户li对话题bj的投票结果,包括支持、反对两个标签。
[0116]
用户关系图谱g=(v,e)
[0117]
目标:
[0118]
输入用户li,话题bj,输出r(li,bj),表示用户li针对话题bj的投票结果,包括支持、反对两个标签。
[0119]
具体计算过程如下:
[0120]
(1)节点级的注意力机制
[0121]
利用自注意力机制去学习节点间的注意力权重。如:用户li及lk的向量表示分别为:及若两用户通过元路径φ相连,则可使用表示通过元路径φ与用户li相连的用户lk对li的重要性。其形式化表示为:
[0122][0123]
其中att
node
表示使用节点级注意力的神经网络。
[0124]
对于所有的节点均需要计算其中表示通过元路径φ与用户li相连的所有节点集合。归一化后的注意力权重计算公式为:
[0125][0126]
其中σ表示激活函数,||表示拼接操作,a
φ
表示针对元路径φ的节点级注意力向量。
[0127]
因此,经过元路径φ的节点级注意力计算后,用户li的向量表示可以更新为其计算公式为:
[0128][0129]
给定我们定义的三种元路径{φ1,φ2,φ3},经过节点级注意力后,我们可以得到3个已经更新过的节点集合,表示为
[0130]
(2)语义级的注意力机制:
[0131]
不同的元路径具有不同的含义,因此根据三种元路径,从节点级注意力机制更新后得到的三组用户向量,分别具有不同的语义注意力权重其形式化表示为:
[0132][0133]
其中att
sem
表示使用语义级注意力的神经网络。
[0134]
每个元路径的重要性可以表示为计算公式如下:
[0135][0136]
其中w为权重矩阵,b为偏置向量,p为语义注意力向量。
[0137]
每个元路径的注意力权重的计算公式为:
[0138][0139]
最终,经过两阶段注意力机制后,用户向量可以表示为:
[0140][0141]
(3)多层感知机
[0142]
将用户li更新后的向量zi与话题bj的向量拼接后输入多层感知机:
[0143][0144]
其中σ表示激活函数,||表示拼接操作,使用w和b将拼接后的向量映射至隐藏层,再通过wm和bm及softmax函数进行归一化得到该用户支持该话题的概率y。
[0145]
实施例
[0146]
为了验证本发明方案的有效性,进行如下实施例。
[0147]
步骤1:使用爬虫程序,从社交网络、维基百科等获取信息。将获取的信息格式化后,最终以json格式进行存储。图6是话题数据集的示例图,图7是投票数据集的示例图,图8是推特数据集的示例图,图9是用户数据集的示例图。
[0148]
步骤2:进行话题建模,从话题数据集中,抽取能有效丰富话题信息的字段,包括话题所属类型领域、话题发起人支持团体、话题文本信息。将所获得的三部分信息,分别使用bert进行编码后,进行拼接,得到话题的向量化表示。所用bert预训练模型为bert-base-uncased。
[0149]
步骤3:针对每一个用户,从用户数据集中,抽取能有效丰富用户信息的字段,包括用户性别、宗教信仰、所在地、支持团体、所属小组及主张;从推特数据集中,抽取其所发表的全部推特。将所获得的两部分信息,分别使用bert进行编码后,进行拼接,得到话题的向量化表示。所用bert预训练模型为bert-base-uncased。
[0150]
步骤4:根据用户数据集的所属小组、所在地、支持团体字段构建用户关系图谱。
[0151]
步骤5:将步骤2所得的话题向量、步骤3所得的用户向量、步骤4所得的用户关系图谱作为输入,经过社交网络用户投票结果预测模型计算后,最终得到该用户支持该话题的
概率,以json格式进行输出,{“yes”:“0.85”,“no”:“0.15”}。
[0152]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0153]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。