一种基于Bert的神经协同过滤的电子政务推荐方法

文档序号:30610297发布日期:2022-07-01 23:27阅读:217来源:国知局
一种基于Bert的神经协同过滤的电子政务推荐方法
一种基于bert的神经协同过滤的电子政务推荐方法
技术领域
1.本发明涉及互联网安全术领域,尤其是涉及一种基于bert的神经协同过滤的电子政务推荐方法。


背景技术:

2.我国电子政务实施进入一个快速与新一代信息技术加快融合的关键时期。经历了过去十多年的发展,电子政务越发呈现出其是推动国家信息化、深化行政管理体制改革的重要措施。尤其是在近几年的新冠肺炎疫情的特殊期间,国家及各地区一体化政务服务平台提供疫情信息服务,推行线上办理,协助推进精准防疫,应用成效越来越大,已经成为创新政府管理和优化政务服务的新渠道。但也看到,政府信息资源日益剧增的时代,电子政务面料着公众用户信息需要的多样性、复杂性和差异性的新要求。社会公众是电子政务主要的服务对象,如何提供面向公众的个性化信息服务,成为当前一个新的研究热点。
3.随着我国电子政务的快速发展,海量政府信息让众多的用户淹没在其中而无所适从,借鉴目前广泛成功应用的信息推荐技术,利用协同过滤推荐算法,设计电子政务信息推荐服务可以更好地提供面向公众的“一站式”电子政务服务。基于信息协同过滤的电子政务推荐服务系统具有很强大的应用前景,但传统的信息协同过滤算法具有以下弊端:稀疏性即用户对项目评价很少的情况下导致数据极端稀疏的问题;冷启动即新项目没有任何评价或者新用户没有评价过任何项目,则无法生成该新项目和新用户的评价矩阵问题;可扩展性即面对急剧增多的用户和数据量,算法遭遇适应系统导致计算量大大增加的瓶颈问题。基于深度协同过滤推荐算法可以很好的解决传统协同过滤推荐算法面临的数据稀疏、冷启动、可扩展性差等以上问题。
4.尽管基于神经协同过滤推荐算法具有诸多优点,但还是存在3个主要局限性:1)专注于隐性反馈不全面地、完整地反映用户的满意度;2)无法从积极样本的隐性数据中学习用户的偏好,并且负反馈存在自然稀疏问题;3)无法更好地模拟用户和项目的潜在特征。因此,如何有效地解决神经协同过滤推荐算法的上述问题,已经成为亟待解决的关键技术问题,且对于基于电子政务的安全分析有重要的基础性的作用。


技术实现要素:

5.本发明的目的是提供一种基于bert的神经协同过滤的电子政务推荐方法,通过词嵌入技术获得丰富的语义表征,通过神经协同过滤推荐方法得到相关的政务功能推荐,从而能够有效地提高推荐精确率,对于电子政务的推荐方法有重要的基础性作用。
6.为实现上述目的,本发明提供了一种基于bert的神经协同过滤的电子政务推荐方法,包括以下步骤:
7.s1、获取用户和物品的相似度矩阵:通过bert获取用户和物品的词嵌入,并生成用户和物品的相似度矩阵;
8.s2、构建推荐算法阶段:通过神经协同过滤推荐方法处理分析来自特征模式库中
数据源的信息,根据一定的推荐标准为用户推荐需要的项目集合,神经协同过滤推荐方法包括矩阵分解、底部多层感知机、横向拼接特征融合、dense层四个环节;
9.s3、获取推荐结果阶段:通过激活函数对最终嵌入进行计算得到0-1之间的推荐值,将得分值较高的10个项目推荐给目标用户。
10.优选的,所述步骤s1中获取用户和物品的相似度矩阵阶段具体包括以下步骤:
11.(1)基于bert获取用户和物品的词嵌入;
12.(2)通过基于bert的词嵌入计算用户和物品的相似度,并确定阈值;
13.(3)通过阈值构建用户和物品的相似度矩阵。
14.优选的,所述步骤s2中神经协同过滤推荐方法包括矩阵分解、底部多层感知机、横向拼接特征融合、dense层四个环节,具体为:
15.(1)矩阵分解,用户初始特征和项目初始特征的潜在空间的每一维是相互独立的,并且使用矩阵分解用相同的权重将他们用逐元素乘积的方式做线性结合,使得用户和项目做特征交互获得特征向量h1;
16.(2)底部多层感知机,通过底部多层感知机神经网络结果学习user和item的隐向量,将用户和项目做非线性交互得到特征向量h2;
17.(3)横向拼接特征融合,通过拼接的方式结合矩阵分解和多层感知机通获得串联之后的特征向量h3;
18.(4)dense层,将特征向量h3作为dense层的输入,获得最终的特征向量。
19.优选的,所述步骤s3中的推荐值具体为通过推荐算法计算出对用户的初始项目推荐列表后,接着对推荐物品进行过滤、排名以及加上相应的标签权重向用户解释推荐这些物品的原因。
20.因此,本发明采用上述一种基于bert的神经协同过滤的电子政务推荐方法,通过词嵌入技术获得丰富的语义表征,通过神经协同过滤推荐方法得到相关的政务功能推荐,从而能够有效地提高推荐精确率,对于电子政务的推荐方法有重要的基础性作用。
21.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
22.图1为本发明一种基于bert的神经协同过滤的电子政务推荐方法实施例的基本流程示意图;
23.图2为本发明实施例中bert词嵌入技术的结构示意图;
24.图3为本发明实施例中神经协同过滤网络的结构示意图。
具体实施方式
25.本发明提供了一种基于bert的神经协同过滤的电子政务推荐方法,包括以下步骤:
26.s1、获取用户和物品的相似度矩阵:通过bert获取用户和物品的词嵌入,并获得用户和物品的相似度矩阵;具体包括以下步骤:
27.(1)基于bert获取用户和物品的词嵌入;
28.(2)通过基于bert的词嵌入计算用户和物品的相似度,并确定阈值;
29.(3)通过阈值构建用户和物品的相似度矩阵,如果用户和物品的相似度大于该阈值,则矩阵值为1,反之值为0。
30.s2、构建推荐算法阶段:通过神经协同过滤推荐方法处理分析来自特征模式库中数据源的信息,根据一定的推荐标准为用户推荐需要的项目集合,神经协同过滤推荐方法包括矩阵分解、底部多层感知机、横向拼接特征融合、dense层四个环节;四个环节,具体为:
31.(1)矩阵分解,用户初始特征和项目初始特征的潜在空间的每一维是相互独立的,并且使用矩阵分解用相同的权重将他们用逐元素乘积的方式做线性结合,使得用户和项目做特征交互获得特征向量h1;
32.(2)底部多层感知机,通过底部多层感知机神经网络结果学习user和item的隐向量,将用户和项目做非线性交互得到特征向量h2;
33.(3)横向拼接特征融合,通过拼接的方式结合矩阵分解和多层感知机通获得串联之后的特征向量h3;
34.(4)dense层,将特征向量h3作为dense层的输入,获得最终的特征向量。
35.s3、获取推荐结果阶段:通过激活函数对最终嵌入进行计算得到0-1之间的推荐值,将得分值较高的10个项目推荐给目标用户。推荐值具体为通过推荐算法计算出对用户的初始项目推荐列表后,接着对推荐物品进行过滤、排名以及加上相应的标签权重向用户解释推荐这些物品的原因。
36.以下通过附图和实施例对本发明的技术方案作进一步说明。
37.实施例
38.本发明的硬件环境主要是一台实验服务器。其中,服务器的cpu为intel(r)core(tm)i5-4570,3.20ghz,内存为4gb ram,gpu为quadro k620,显存2gb,共享内存48kb,64位操作系统。软件实现以windows为平台,在keras框架下,使用python语言开发。keras版本为10.1,python版本为7.0,tensorflow版本为1.8。
39.如图1所示,本发明提供了一种基于bert的神经协同过滤的电子政务推荐方法,包括以下步骤:
40.s1、获取用户和物品的相似度矩阵:通过bert获取用户和物品的词嵌入,并生成用户和物品的相似度矩阵;具体包括以下步骤:
41.(1)基于bert获取用户和物品的词嵌入;
42.(2)通过基于bert的词嵌入计算用户和物品的相似度,并确定阈值;
43.(3)通过阈值构建用户和物品的相似度矩阵,如果用户和物品的相似度大于该阈值,则矩阵值为1,反之值为0。
44.s2、构建推荐算法阶段:通过神经协同过滤推荐方法处理分析来自特征模式库中数据源的信息,根据一定的推荐标准为用户推荐需要的项目集合,神经协同过滤推荐方法包括矩阵分解、底部多层感知机、横向拼接特征融合、dense层四个环节;如图3所示,构建推荐算法阶段具体包括:
45.(1)对用户user和项目item分别通过矩阵分解神经网络结构的第一层(embedding层)获得mf_embedding_user嵌入向量和mf_embedding_item嵌入向量,embedding层的user输入向量维度是(1*num_users),item的输入向量维度是(1*num_item),并且按照正态分布生成随机张量的初始化器。
46.(2)通过flatten层把输入的张量mf_embedding_user和mf_embedding_item扁平化,按照横向进行拉伸变成一维数组mf_user_latent和mf_item_latent,flatten层并不会影响batch size的大小,仍然为256。
47.(3)计算输入张量列表mf_user_latent和mf_item_latent的逐元素间乘积,所有的张量都必须有相同的输入尺寸,mf_user_latent和mf_item_latent的输入尺寸都分别为(none,1,8),然后返回一个张量mf_vector,该张量和输入尺寸张量相同为(none,8),且逐元素乘积的表达式为:
[0048][0049]
上式中,

表示向量的元素乘积,pu表示用户隐向量;qi表示物品隐向量。
[0050]
(4)对用户user和项目item分别通过embedding层获得mlp_embedding_user嵌入向量和mlp_embedding_item嵌入向量,embedding层的user输入向量维度是(1*num_users),item的输入向量维度是(1*num_item),并且按照正态分布生成随机张量的初始化器。本方法多层神经网络的层数layers设置为[64,32,16,8],embedding层的输出维度为int(layes[0]/2),即分别为(none,1,32)。
[0051]
(5)通过flatten层把输入的张量mlp_embedding_user和mlp_embedding_item扁平化,分别按照横向进行拉伸变成一维数组mlp_user_latent和mlp_item_latent,并且输出张量的尺寸为都分别为(none,32)。
[0052]
(6)计算输入张量列表mlp_user_latent和mlp_item_latent的concatenate操作,除了连接轴外,其他尺寸都必须相同,然后返回一个由所有输入张量连接起来的输出张量。本方法axis=-1,会沿着通道维度连接两个张量,通道维数会增加,输出张量mlp_vector的尺寸为(none,64),且函数表达式为:
[0053][0054]
上式中,

表示向量的元素乘积,pu表示用户隐向量;qi表示物品隐向量。
[0055]
(7)通过dense层将mlp_vector特征空间非线性变换到另一个特征空间,最后映射到输出空间上。通过循环构建3层全连接神经网络和内部layer的relu激活函数对mlp_vector进行特征编码,dense层的输入尺寸为(none,64),layers层数序号从1开始依次得到的输出张量尺寸为(none,32),(none,16),(none,8),最终得到的输出张量尺寸为(none,8),且函数表达式为:
[0056][0057][0058]
上式中,w2和w3分别表示第二层和第三层感知器的权重矩阵,b2和b3分别表示第二层和第三层的偏置向量,a2和a3分别表示第二层和第三层的激活函数。
[0059]
(8)创建一个线性模型,将gmf模型和mlp模型最终分别获取到的mf_vector和mlp_vector不再采用内积的形式,而是采用横向axis=-1,concatenate的方式得到最终的预测向量predict_vector,输出的张量尺寸为(none,16)。
[0060]
(9)构建最终预测层获取预测分数,通过dense层的全连接和sigmoid激活函数,将输入尺寸为(none,16)的特征向量1输入到顶部多层感知机中获取到输出尺寸为(none,1)
的概率值,得到0-1之间的推荐值。
[0061]
s3、获取推荐结果阶段:通过激活函数对最终嵌入进行计算得到0-1之间的推荐值,将得分值较高的10个项目推荐给目标用户。具体包括:
[0062]
(1)对每个正样本构建4个负样本,对负样本的物品和测试集合中的某一个物品进行预测,最终选取10个topk,来评测是否在其中。
[0063]
(2)对于每个用户,将其最近的一次交互作为测试集(数据集一般都有时间戳),并利用余下的交互作为训练集。训练所有模型100个epoch,256个batch size,学习率为1
×
10-3
。选择sgd作为优化器,并使用binary entropyloss作为损失函数。
[0064]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0065]
因此,本发明采用上述一种基于bert的神经协同过滤的电子政务推荐方法,通过词嵌入技术获得丰富的语义表征,通过神经协同过滤推荐方法得到相关的政务功能推荐,从而能够有效地提高推荐精确率,对于电子政务的推荐方法有重要的基础性作用。
[0066]
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1