一种基于用户偏好异构性分析的推荐方法与流程

文档序号:18465354发布日期:2019-08-17 02:24阅读:231来源:国知局
一种基于用户偏好异构性分析的推荐方法与流程
本发明属于计算机深入学习和推荐系统的
技术领域
,尤其涉及一种基于用户偏好异构性分析的推荐方法。
背景技术
:到2020年全球产生的数据量将达到惊人的35.2zb,这意味着数据对人们生活的影响越来越大,人们无时无刻在产生数据。其中隐藏的信息量非常巨大。如果能拿到相关行业的数据加以分析并应用一定会对相关行业的发展产生很大的影响。可是如何提取其中有用的信息就成了一个很大的问题。因此推荐系统应运而生,其核心是通过借助用户交互数据来对用户的偏好特征进行分析,然后预测用户对其他物品的喜好程度。可是由于交互数据的稀疏性,有很多预测数据并不能很好的体现用户的真实偏好。所以如何增加推荐系统的推荐精度,并且如何解决冷启动问题等一系列问题正在成为推荐系统领域的热点研究方向。基于短文本分析的推荐方法以其能够直接反映用户主观喜好的特点受到了很多研究人员的关注。目前,利用短文本信息做推荐主要有两方面的研究,一是使用短文本进行情感识别,通过对短文本的极性判别来预测用户对项目的偏好的极性(如喜欢/不喜欢)。另外一种研究是使用短文本进行用户评分的预测。近些年,针对短文本的研究有了很大进展。其中有人利用word2vec词向量来改进词性特征,也有人人使用lda主题模型对文本进行分类。还有人利用贝叶斯网络对文本进行层次化话题构建,在保证准确率的情况下扩充了原内容。近几年,随着深度学习的发展,出现了基于深度学习的短文本分析方法。比如有人把word2vec和cnn网络相结合来挖掘不同层次的语义信息从而发现句子中更高抽象级别的特征。一些热把情感分析和传统推荐方法结合发现用户的兴趣特征。另一些研究人员使用元数据结合深度学习模型来改善推荐系统性能。但是以上方法虽然使用了评论文本却仅仅是把文本转变成单一向量来进行训练分析没有考虑到本身文本结构和词性的影响。这些方法均是基于独立同分布的假设,即假设文本对于反映每个用户的偏好所起的作用是一样的,其很难通过短文本充分挖掘用户的个性化偏好。技术实现要素:基于以上现有技术的不足,本发明所解决的技术问题在于提供一种基于用户偏好异构性分析的推荐方法,通过考虑文本结构和词性的不同,来发现用户评论文本中隐藏的用户的异构性偏好,提升推荐性能。为了解决上述技术问题,本发明通过以下技术方案来实现:本发明提供一种基于用户偏好异构性分析的推荐方法,包括以下步骤:步骤1:对amazon公开数据集及进行数据筛选,得到符合要求的数据集;步骤2:对处理好的文本数据进行分词分句并对文本数据进行词向量训练和名词短语提取;步骤3:使用深度学习框架构建推荐系统模型;步骤4:把预先处理好的文本数据分成训练集和测试集,使用步骤3构建的模型对训练集进行训练,并对训练好的模型应用于测试集进行评价得到最优的推荐模型。优选的,在步骤1中对数据筛选的步骤如下:步骤1.1:利用python读取原始json数据文件并转换成csv文件;步骤1.2:然后从中筛选用户评论总数大于10条的数据,同时去除文本数据过长的数据。在步骤2中的词向量训练和名词性短语提取步骤如下:步骤2.1:利用gensim的word2vec方法来进行词向量的训练;步骤2.2:使用spacy库进行句子的名词性短语提取。进一步的,步骤3中的深度学习框架构建步骤如下:步骤3.1:对步骤1和步骤2.2处理的词语,名词性短语,句子进行分通道,学习其中用户对于不同粒度的偏好特征,然后把不同粒度的文本通道连接起来学习用户对评论物品的个性化偏好特征;步骤3.2:对步骤1.2处理之后的userid和itemid进行初步学习并使用深度学习协同过滤分析用户对所评论项目的偏好特征公式如下:fu=wuu+bufi=wii+bi其中w表示模型训练userid和itemid所对应的权重,b对应相应的偏置项,然后进行整体特征的学习,然后把fu和fi的结果连接起来作为一个整体作为整体协同过滤子网络的输出,其中代表fu和fi的输出结果按照行连接在一起,最后模型左边的输出为:步骤3.3:把步骤3.2所生成的两部分神经网络综合在一起进行联合学习最终输出用户对项目的个性化偏好,预测公式如下:其中predict是输出的用户的偏好结果,sigmoid是用户情感二分类函数,wp是联合学习的网络权重,fui是协同过滤的学习结果,ftext是文本特异性偏好,bp是预测偏置项。可选的,步骤4中模型应用于测试集评价的步骤如下:步骤4.1:在步骤3的测试集中,一个userid选取一条标签正例的数据并依照数据的每一个属性给它增加99个负例样本产生一个新的测试集;步骤4.2:在步骤3.3已经训练好的推荐模型中输入步骤4.1中新生成的测试集。可选的,步骤3中深度学习框架构建还包括:步骤5.1:使用keras框架搭建神经网络构建输入层,输入层包括五个输入内容;步骤5.2:搭建文本特征处理子网络,使用步骤2.1训练好的词向量作为文本特征学习网络的嵌入层的初始化权重,并固定权重不做训练;步骤5.3:搭建协同过滤子网络,使用嵌入层来让数字userid和itemid进行向量化操作;步骤5.4:联合学习,把文本特征处理子网络和协同过滤子网络的输出通过concatenate层连接起来送入全连接层进行学习然后使用sigmoid作为激活函数输出user通过短文本评论对于物品item的偏好结果。由上,本发明的基于用户偏好异构性分析的推荐方法至少具有如下有益效果:(1)通过对短文本进行词语,短语,句子三种粒度的分析从而可以从中得到用户的异构性偏好。(2)将情感分析和基于深度学习的协同过滤组成联合推荐系统提高了推荐系统的推荐质量。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下结合优选实施例,并配合附图,详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍。图1为本发明的基于用户偏好异构性分析的推荐方法的模型结构图;图2为本发明中的spacy库解析句子树样例图;图3为本发明中的gensim的word2vec的cbow模型图;图4为本发明的评价结果图,随着推荐列表大小k的增大命中率hr的变化;图5为本发明中的评价结果图,随着推荐列表大小k的增大归一化折损累计增益的变化;图6为本发明和其他模型结果对比图,随着推荐列表大小k的增大命中率hr的变化;图7为本发明和其他模型结果对比图,随着推荐列表大小k的增大归一化折损累计增益的变化。具体实施方式下面结合附图详细说明本发明的具体实施方式,其作为本说明书的一部分,通过实施例来说明本发明的原理,本发明的其他方面、特征及其优点通过该详细说明将会变得一目了然。在所参照的附图中,不同的图中相同或相似的部件使用相同的附图标号来表示。如图1至图7所示,本发明的基于用户偏好异构性分析的推荐方法,包括如下步骤:步骤1:对amazon公开数据集及进行数据筛选,得到符合要求的数据集,其中,对数据筛选的步骤如下:步骤1.1:从网上下载amazon数据集,利用python读取原始json数据文件并转换成csv文件;步骤1.2:然后从中筛选用户评论总数大于10条的数据,同时去除文本数据过长的数据。也就是用python读取数据条目中userid大于10的数据并另存为csv文件,如果小于10条就跳过。步骤2:对处理好的文本数据进行分词分句并对文本数据进行词向量训练和名词短语提取,其中,词向量训练和名词性短语提取步骤如下:步骤2.1:利用gensim的word2vec方法来进行词向量的训练,如附图3所示为本发明使用的cbow方法。短文本数据原始语料例子如下:thecableisverywobblyandsometimesdisconnectsitself.thepriceiscompletelyunfairandonlyworkswiththenookhdandhd+……。经过word2vec训练之后的词向量例子如下:the4.27916672.2556083-4.743311-2.17422910.43216790.34792212-1.0501866-2.8685815-1.72274481.69966210.330595551.471537-0.3039655-1.7861961.67009854.762954-0.9809836-0.87618196-2.04894730.5477355-1.48840841.25433550.66688612.668589-2.2519014-5.13696050.98586833-0.4022950.771074650.329876870.75003462.7211926-1.84340061.2330314-0.943495870.25308713-2.8201354-2.257605-2.8037086-0.4010564-0.24289921.4629673-0.9636666-1.8354031-1.0654441-0.608260332.71833-0.50063281.9647481-1.4020698i-3.5152304-2.1650405-7.2456913.6289215-2.37726283.38186480.094712555-6.404832.24423862.28733440.128473.4640203-0.17056510.46115306-2.70906623.696657-4.5920370.32361296-2.75449851.0226178-1.4941045-1.5931389-0.701218960.7115058.415213-3.433592-1.0511217-0.71148783.81047752.17262085.042425-1.55267021.82392453.491039-2.4117312-5.1653280.4756929-1.75692572.4582508-3.63649340.26751211.7055091-2.6723769-1.97998853.349063-0.3100949-1.4537231-2.1457840.483789031.0621636and1.92520560.56438480.816220340.07531359-1.02055412.16144560.5990402-3.2473364-0.8335343.59098742.15829162.51853041.84577630.29273406-1.1676320.6700316-0.148284521.7328572-2.22869732.16239480.13199387-0.198128921.38217190.84417460.1553333-1.4192909-1.33716080.15448438-2.3001518-0.572160360.499448662.820292-4.03344870.62032220.442213120.82453180.11593819-4.0870886-0.170478181.8874853-2.73509241.3254955-0.09433418-2.95285080.11423697-0.151590531.80395460.17590083-1.3097358-0.70908576……这里可以选择训练词向量的长度,本发明选择的是训练50维的词向量。可以作为推荐模型中的embedding层的初始化权重大大减少网络训练的难度和训练速度。步骤2.2:使用spacy库进行句子的名词性短语提取,具体步骤如下:如图2所示例子,thisisabeautifultelevision.这一句英文句子经过spacy库的分析之后会得到各个词语的词性和词语词之间相互依赖关系,利用词语的依赖关系来分析短语的构成情况。本发明中分词和分句操作具体由keras数据预处理函数进处理。由于本发明中使用的是英文数据集,因此分词操作就是把评论文本按照空格进行分割,变成词语。分句操作即按照英文逗号进行分割分成相应的句子。在通过keras映射为数字id矩阵可以送入神经网络进行学习。由于单词,短语,句子映射关系相似这里举例短语映射关系,具体如下:i,thevitalitycanneddogfoodproducts,them,goodquality,theproduct,astew,aprocessedmeat,it,mylabrador,she,thisproduct,product,jumbosaltedpeanuts,thepeanuts,anerror,thevendor,theproduct,jumbo,aconfection,aroundafewcenturies,it,"alight,pillowycitrusgelatin",nuts,thiscase,filberts,it,tinysquares,powderedsugar,it,atinymouthful,heaven,i,thisyummytreat,you,thestory,c.s.lewis,"""thelion",thewitch,thewardrobe,thetreat,edmund,hisbrother,sisters,thewitch,会被映射成为:1,363050,5,941,23,10427,363051,2,15203,10,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,033,363052,2719,9419,1470,23,37903,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,042607,363053,2,2167,363054,219,724,29782,2,238831,5542,2,363055,540,1,67474,3,3113,769,254,177476,28562,61339,85067,365,74313,16806,22915,61339,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0这样的id数字向量。由于文本长短不一因此如果向量长度不够,在后面补充相应数目的0以补全矩阵。步骤3:使用深度学习框架构建推荐系统模型,按照单词短语的映射关系对userid和itemid也照样映射成为数字相应的数字,在输入模型中每一条数据格式如下:useriditemidwordphrasesentencelabel输入数据最后一项是当前数据的标签,即用户对当前评论的item的态度。为0则不喜欢,为1则喜欢。然后对推荐模型的输入层进行相应的改动保证处理好的数据可以正常送入神经网络进行训练。其中,深度学习框架构建步骤如下:步骤3.1:对步骤1和步骤2.2处理的词语,名词性短语,句子进行分通道,学习其中用户对于不同粒度的偏好特征,然后把不同粒度的文本通道连接起来学习用户对评论物品的个性化偏好特征;步骤3.2:对步骤1.2处理之后的userid和itemid进行初步学习并使用深度学习协同过滤分析用户对所评论项目的偏好特征公式如下:fu=wuu+bufi=wii+bi其中w表示模型训练userid和itemid所对应的权重,而b则对应相应的偏置项,然后进行整体特征的学习,然后把fu和fi的结果连接起来作为一个整体作为整体协同过滤子网络的输出,其中代表fu和fi的输出结果按照行连接在一起,最后模型左边的输出为:步骤3.3:把步骤3.2所生成的两部分神经网络综合在一起进行联合学习最终输出用户对项目的个性化偏好,预测公式如下:其中predict是输出的用户的偏好结果,sigmoid是用户情感二分类函数,wp是联合学习的网络权重,fui是协同过滤的学习结果,ftext是文本特异性偏好,bp是预测偏置项。步骤4:把预先处理好的文本数据分成训练集和测试集,使用步骤3构建的模型对训练集进行训练,并对训练好的模型应用于测试集进行评价得到最优的推荐模型。模型应用于测试集评价的步骤如下:对原始数据进行拆分处理按照总数的前百分之八十设置为训练集,总数的后百分之二十为测试集。然后在网络训练时设置训练集的百分之十为验证集。步骤4.1:在步骤3的测试集中,一个userid选取一条标签正例的数据并依照数据的每一个属性给它增加99个负例作为一组,测试集中所有的userid都进行如此操作,把所有的组样本合起来产生一个新的测试集;步骤4.2:在步骤3.3已经训练好的推荐模型中输入步骤4.1中新生成的测试集。随着推荐列表的大小而分析userid标签为正例的itemid是否在推荐列表之中,并分析itemid的排名情况,模型结果如图4和图5所示;如图6和图7所示是模型和当前已有模型进行推荐结果对此,经过运行对比均体现出良好的推荐效果。评测公式如下:hr的含义是给当前用户推荐的列表中用户喜欢的项目所占有的比例。比如当前待推荐的项目数为k个,其中如果得到用户喜好反馈的数目为khit,则当前推荐的命中率为khit/k。而ndcg是用以评价当前列表排序质量的参数。体现用户喜好的待推荐项目在推荐列表中的排名情况。如果参数越大则代表项目在推荐列表中的排名越靠前。更加容易得到用户的关注和交互。其中,zk是正规化,保证推荐列表中存在一个值1,ri是第i个项目的评级相关性。在评价过程中经常使用二值化处理:如果项目在测试集中则ri=1,否则ri=0。另外,本发明的步骤3中深度学习框架构建还包括:步骤5.1:使用keras框架搭建神经网络构建输入层,输入层包括五个输入内容,分别为small(词语),med(短语),sent(句子),user_input(用户id),item_input(物品id);步骤5.2:搭建文本特征处理子网络,使用步骤2.1训练好的词向量作为文本特征学习网络的嵌入层的初始化权重,并固定权重不做训练。把嵌入层输出的结果连接到lstm网络层中学习不同粒度的特征和各自粒度的个性化特征。其中每一个lstm神经元中就会有三个控制门,每一条先上传输一整个特征向量,lstm层定义式如下:ft=σ(wf·[ht-1,xt]+bf)x∈(sm,m,se)it=σ(wi·[ht-1,xt]+bt)x∈(sm,m,se)ot=σ(wo[ht-1,xt]+bo)x∈(sm,m,se)ht=ot*tanh(ct)其中,xt是当前时刻该神经元的输入元素,ht-1为上一个神经元的输出权重。σ门是用来控制和保持神经元的活动状态,σ1是忘记门用来对上一个神经元记忆的信息ct-1进行选择如果输出结果,ft为1则表示接受上一个神经元的信息如果输出结果,为0则表示忘记上一个神经元的信息。wf为神经元输入权重,bf为输入偏置项。然后通过σ2输入门用来筛选当前神经元需要更新记忆中的信息it,wi为记忆权重,bt为记忆偏置项。tanh是用来生成一个新的待更新向量wc为候选权重,bc为候选偏置项。最后信息经过σ3更新门进行当前层最后的更新信息,ot然后和新的记忆信息ct向量进行运算输出ht,wo为更新权重,bo为更新偏置项。经过lstm网络处理之后连接到全连接层进行单个粒度特征学习,全连接层的输出连接dropout层防止过拟合出现。把三个不同粒度通道的输出特征使用concatenate层合在一起送入一个全连接层学习文本的整体特征之后连接dropout层防止过拟合。文本特征处理子网络搭建完毕。步骤5.3:搭建协同过滤子网络,使用嵌入层来让数字userid和itemid进行向量化操作。输出送入flatten层降维然后连接全连接层学习各自特征。输出连接dropout层防止过拟合。把user通道和item通道输出使用multiply层合并为协同过滤。协同过滤子网络搭建完毕。步骤5.4:联合学习,把文本特征处理子网络和协同过滤子网络的输出通过concatenate层连接起来送入全连接层进行学习然后使用sigmoid作为激活函数输出user通过短文本评论对于物品item的偏好结果。本发明要解决的技术问题为如何通过对短文本多粒度的分析从不同层次挖掘用户的个性化偏好,并利用用户与项目的交互历史建立的协同过滤深度学习推荐模型来实现个性化推荐,并在一定程度上解决数据的稀疏性。本发明采用联合学习网络结构,分别处理文本多粒度信息的特征学习网络,还有用来学习用户和项目关联信息的协同过滤网络,数据处理中使用spacy来提取名词性短语,并通过word2vec学习词语特征向量,减少输入网络的数据维度增强网络的推荐精度。以上所述是本发明的优选实施方式而已,当然不能以此来限定本发明之权利范围,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变动,这些改进和变动也视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1