发明内容
本发明提供一种基于用户评论动态分析的用户评分预测方法,其能够对用户评论进行动态分析,以获得更为准确的评分预测结果。
为解决上述问题,本发明是通过以下技术方案实现的:
一种基于用户评论动态分析的用户评分预测方法,具体包括步骤如下:
步骤1、将训练集中的所有用户评论根据评论生成时间,划分到不同的时间窗口下,对所有时间窗口中的用户评论进行主题动态分析,生成主题集合,以及主题词集合;
步骤2、以主题词为基础,根据主题词在各个时间窗口下的概率值不同,挖掘主题词之间的层次关系,在每个时间窗口下每个主题均构建主题词层次树;
步骤3、根据用户评论所在的时间窗口,将训练集中的所有用户评论映射到该时间窗口下的所有主题词层次树上,生成训练用户的偏好向量;
步骤4、将训练集中所有用户评论对应的训练用户的偏好向量和用户的评分,输入到随机森林预测模型中,对其进行训练,得到训练好的评分预测模型;
步骤5、根据待预测的用户评论所在的时间窗口,将该待预测的用户评论映射到该时间窗口下的主题词层次树上,生成待预测用户的偏好向量;
步骤6、将待预测用户的偏好向量输入到步骤4所训练好的评分预测模型中,对用户评分进行预测。
上述步骤2中,每个主题的主题词层次树的构建过程如下:
步骤2.1、计算当前时间窗口中指定主题下的主题词的互信息强度值,并按互信息强度值的降序对主题词进行排列,得到有序的主题词集合;
步骤2.2、从有序的主题词集合中取出排在最前的主题词作为主题词层次树的第一层;
步骤2.3、计算位于主题词层次树的第一层的主题词与有序的主题词集合中剩余主题词的相似度,并将相似度小于相似度阈值的主题词加入到主题词层次树的第一层中;
步骤2.4、从第二层开始,对于主题词层次树的上一层相邻2个主题词,从有序的主题词集合中选出位于这2个主题词之间的主题词集合,得到有序的节选主题词集合;
步骤2.5、从有序的节选主题词集合中取出排在最前的主题词作为主题词层次树的节点加入当前层中;
步骤2.6、计算位于主题词层次树当前层的主题词与有序的节选主题词集合中剩余主题词的相似度,并将相似度小于相似度阈值的主题词加入到主题词层次树的当前层中;
步骤2.7、重复步骤2.4-2.6,直至有序的主题词集合中的所有主题词均被加入到主题词层次树中。
上述方法中,偏好向量U={U1,U2,...,UK},其中
其中,LK表示用户评论在第K个主题的主题词层次树下的平均层次,SK表示用户评论包含的第K个主题的主题词数量。
上述步骤4的具体步骤如下:
步骤4.1、将所有评论对应的偏好向量和用户评分,生成用户偏好-评分向量集合;
步骤4.2、在用户偏好-评分向量集合中,偏好向量作为特征向量,评分作为决策值;
步骤4.3、设定随机森林中的决策树数量f;
步骤4.4、对于偏好-评分向量集合中的每一条记录,随机选择偏好向量中的元素作为特征值,对应的评分为作为决策值,生成一棵决策树;
步骤4.5、重复步骤4.4,直至生成f棵决策树,由此得到训练好的评分预测模型。
与现有技术相比,本发明具有如下特点:
1、考虑到用户评论数据的非结构性以及用户对商品不同属性的偏好会随着时间而改变,本发明使用数据处理技术对用户评论进行预处理;并通过对不同时间段内的用户评论数据采用动态的主题模型;对不同时间段内的用户评论生成相同的主题和主题词,通过不同时间段内主题词的概率变化表征用户偏好的变化;
2、由于在实际情况中,用户评论分布在不同的时间段内,本发明通过融入主题词概率的变化因子可以提高用户评分预测的效果,并将用户评论的映射到同一个主题向量空间作为用户的偏好向量,有效地解决了根据用户评论生成的用户偏好向量维度过高的问题;
3、从细粒度的角度出发,以主题词为用户评论分析的基础,考虑不同主题词对用户评分的影响力不同,本发明以主题词的互信息强度以及相互之间的相似度为构建原则,提出了一种构建主题词层次树的方法,利用主题词所在的层次为主题词赋予权重,深层次的主题词对用户评分的影响力越大;
4、以用户评论中是否含有主题词为原则,将用户评论映射到主题词层次树上,生成用户对商品的偏好向量,通过每条用户评论生成对应偏好向量以及评论对应的评分,输入到预测模型中,从预测结果的平均绝对误差和均方根误差来评估预测结果。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,并参照附图,
为了表述方便,首先给出一些记号的表示:
本发明所提出的一种基于用户评论动态分析的用户评分预测方法,如图1所示,其主要用于挖掘用户评论与用户评分之间的关系,进而根据用户评论对用户评分进行预测,其具体包括步骤如下:
步骤1、将用户评论根据评论生成时间,划分到不同的时间窗口下,对所有时间窗口中的用户评论进行主题动态分析,生成主题集合T,以及第i个主题词集合Wi。
本发明从用户评论的主题词层面对主题词概率的动态性进行描述。在每个时间窗口下,主题词的概率值变化刻画用户偏好的动态性。首先,对用户评论集合R={R1,R2,...Rm}预处理,将划分到每个时间窗口下的评论集合R1,R2,...Rn输入到DTM(Dynamictopic model动态主题模型)中,每个时间窗口下生成的主题数以及每个主题下的主题词均相同。则通过DTM可获得用户评论的主题集合T={T1,T2,...TK},以及第i个主题下的主题词集合Wi={Wi1,Wi2,...WiN}。
对于时间窗口t
n中的主题i,
表示主题词W
iN出现的概率,则
的计算方法如式(1):
其中
表示主题i中的主题词W
iN在时间窗口t
n中出现的次数,计算方式如式(2):
由式(1)(2)可计算每个主题词在每个时间窗口中的概率值,则主题词WiN的概率值分布为如下:
通过主题词在各个时间窗口下的概率值来刻画用户偏好的动态性,使得用户评分预测工作能够切合用户偏好在不同时间窗口中的动态性,更真实的反映了评分的时效性和真实性。
步骤2、根据在每个时间窗口中每个主题词的互信息强度以及主题词之间的相似度不同,则在每个时间窗口下每个主题均构建主题词层次树
主题词在各个时间窗口下的概率值不同,可以通过计算指定窗口下主题词之间的相似度以及主题词的互信息强度来确定主题词之间层次关系,构建动态的主题词层次树。依据主题词在动态层次树中的层次来表征其对用户评分的影响力。主题词之间的层次关系识别原则在于主题词概率值越大就越可能成为层次树的上层概念。采用互信息值强度作为主题词的度量方式,比较每个主题词的互信息强度大小来对主题词进行上下位关系的判定。同时,以主题词之间的相似度作为构建层次关系的约束条件,令相似度高的主题词分布在层次结构的同一分支中,而相似度低的主题词分布在层次结构的不同分支中。
首先计算时间窗口tn下主题词互信息强度并进行降序排列,每个主题i下均得到有序的主题词序列集合Wi'={Wi1':MI(tn,Wi1'),Wi2':MI(tn,Wi2'),...,WiN':MI(tn,WiN')},且MI(tn,Wi1')>MI(tn,Wi2')>MI(tn,WiN'),选择其中互信息值强度最大的主题词Wi1'作为层次树的上位概念词并从集合Wi'中删除Wi1'。此时选择Wi2'作为层次结构待判定主题词,若主题词Wi2'与上位概念词Wi1'之间的关系满足定义1要求,则主题词Wi2'作为上位概念词的下位概念词Wi1'加入到层次结构并从集合Wi'中删除Wi2';若不满足定义1要求,则集合Wi'中保留Wi2'。
定义1在时间窗口tn内主题词Wia,Wib层次关系判别
②如式(5)所示,满足MI(tn,Wia)<MI(tn,Wib)
同理,按序依次对待识别层次的主题词进行判断,直至所有的主题词都标识结束,则该主题下的层次树结构构建完成。采用同样的方法,对不同时间窗口下的各个主题进行主题词层次树的构建,每个时间窗口下生成K棵主题词层次树,主题i的主题词在时间窗口t
n下构成的层次树为
其中
并且
因此主题词在层次树中所处的层次各不相同并且同一个主题词对用户评分的影响力大小随着时间而变化。
主题i中的两个主题词Wia是Wib在用户评论集Rn的相似度计算如下:
其中
表示在用户评论集R
n内,根据主题词W
ia每条用户评论中的TF-IDF值构成的空间向量,则
向量的元素
表示主题词W
ia在用户评论集R
n中第m
n条评论中的TF-IDF值,计算如式(5):
其中
表示主题词W
ia在用户评论集R
n中的出现的次数,|R
n|表示评论文本的总数,|{j:W
ia∈R
n j}|表示包含词汇W
ia的文本总数。
在时间窗口tn的主题i下,主题词Wia的互信息强度指主题词Wia与其他主题词的点互信息的累加和:
其中,两个主题词的点互信息计算公式如下:
其中由式(1)可知,在时间窗口t
n下
表示主题词W
ia出现的概率,主题词W
ia和W
ib同时出现的概率则用
表示。
主题词层次树的构建伪代码如算法2所示:
算法2.基于主题动态分析的主题词层次树构建算法.
输入:用户评论集Rn第i个主题下的主题词集合Wi={Wi1,Wi2,...WiN}
输出:主题i下主题词集合W
i={W
i1,W
i2,...W
iN}的对应的主层次
1.统计主题个数K,每个主题下的主题词个数N
2.FOR i=1 TO K
3.由式(3)计算主题词两两之间的相似度,得到相似度集合sim
4.由式(5)计算主题词的互信息强度值,并按降序排列,得到有序的主题词集合Wi'
5.从Wi'中取出Wi1'作为层次树的上位概念,加入层次树结构
6.FOR j=2 TO N
7.查询相似度集合sim,得到Wi1'和Wij'的相似度SIM(Rn,Wi1',Wij')
8.IF
则W
ij'作为与W
i1'同层概念加入层次树结构
9.END FOR
10.统计第一层层次树的节点数为M1
11.FOR l=1 TO M1-1
12.查询层次树同层相邻两个节点在主题词集合Wi'中的下标,得到两个下标之间的主题词集合Wi”,主题词数为A
13.从Wi”中取出Wi1”作为当前上位概念,加入层次树结构
14.FOR n=2 TO A
15.查询相似度集合sim,得到Wi1”和Wij”的相似度SIM(Rn,Wi1”,Wij”)
16.IF
则W
ij”作为与W
i1”同层概念加入层次树结构
17.END FOR
18.END FOR
19.统计第二层层次树节点数为M2,重复迭代第11步操作,直至集合Wi'元素全部加入层次树结构中。
20.END FOR
步骤3、根据用户评论所在的时间窗口,映射到该时间窗口下的所有主题词层次树上,生成用户的偏好向量。
在时间窗口t
n中,主题i下的主题词集合W
i={W
i1,W
i2,...W
iN}中的每个主题词在层次结构中所对应的层次为
利用层次
赋予主题词W
iN权重。对用户评论集合R
n中的记录r,其包含主题i下的主题词数
的计算方式如下:
遍历K个主题,得到用户评论包含每个主题下的主题词数
根据用户评论r中包含主题词集W
i中的主题词以及主题词在层次树
中的对应层次,计算每条用户评论在主题层次树上的平均深度,计算公式如下:
遍历K个主题,得到用户评论在主题层次树下的平均深度
其中
表示时间窗口t
n中主题i下主题词W
ij所在层次,
表示用户评论r在主题i的主题词层次树下的平均深度。
根据用户评论在每个主题下包含的主题词数
以及用户评论在层次树下的平均深度
采用如式(10)的类似指数式函数来计算第m条评论对应于用户对主题的K偏好程度U
K m,假设第m条评论位于时间窗口t
n中,则U
K m计算如下:
逐一计算U
K m,从而得到对应的用户的偏好向量U
m={U
1 m,U
2 m,...,U
K m}。该方法充分考虑第m条用户评论包含每个主题的主题词数
以及在主题词层次树下的平均深度
对于用户偏好影响不同。
步骤4、根据用户评论生成的用户偏好向量,以及该用户评论对应的用户的评分,输入到随机森林预测模型中,根据用户评论对用户评分进行预测。
采用随机森林预测模型进行评分预测,输入为用户偏好-评分集合Q={Q1,Q2,...,Qm},其中Qi={U1 i,U2 i,...,UK i,Gi}。{U1 i,U2 i,...UK i}表示第i条用户评论生成的偏好向量。
随机森林预测模型的
训练过程如下:
1.FOR b=1,...,f://训练生成决策树的数量为f
2.训练样本时候随机替代所取的特征,特征向量为Up~Uq(1≤p≤q≤K),对应的决策值为G
3.在Up~Uq,G上训练得到一棵决策树fb
在预测过程中,输入用户的评论所在的时间窗口映射到对应的主题词层次树上得到的用户偏好向量U,通过所有的决策树的预测值计算平均值得到最终的预测结果为s,计算公式如式(1):
下面通过一个具体实例,对本发明效果进行验证。
测试数据来源于亚马逊网站上的用户评论数据,选取其中2类商品:平板电脑和遥控器,其相应的用户评论数如表1所示。
表1不同商品的用户评论数据量
注:亚马逊网站上的用户数据中,每条记录包括了用户对商品的评论以及评分。实验均用商品编号代表该商品。
论文采用MAE(平均绝对误差)和RMSE(均方根误差)来评估预测评分效果,其中MAE和RMSE的计算公式如式(12)和式(13):
其中,Z为评论的总数,yi'为预测的评分,yi为实际的评分。
为分析相似度阈值的变化对于主题词层次树构建的影响,首先设置主题数K为5,主题词数N为50,时间窗口数n为3,不同的主题词相似度阈值
分别为0.025,0.05和0.1,分别在3个时间窗口下对B00ZV9RDKK和B00TSUGXKE构建主题词层次树,主题词在各个层次上所占的比例如图2所示。
两类商品的用户评论随着主题词相似度阈值的增加,位于层次树第一层的节点数不断增加,而位于其它层的节点数不断减少,表明相似度阈值越小,更多的主题词划分到上位概念节点的下位结构中,这使得主题词之间的层次结构越明显。当主题词层次树上主题词之间的层次结构越明显,对评分预测效果的影响如图3所示。
如图3所示,两类商品的用户评分预测结果的MAE值和RMSE值随着主题词相似度阈值的增大而增大。由于主题词的相似度阈值越小,用户评论的主题词之间的层次关系则会越明显,使不同主题词能够更好地表征其对用户评分的影响力,从而利用用户评论对用户评分进行预测预测的效果得到改善。因此选择相似度阈值
的值为0.025作为参数。
论文提出的主题词层次树在不同的时间窗口中是动态变化的,设置时间窗口数n为3,在各个时间窗口中,两类商品的主题T1中主题词在不同层次所占比例如图4所示。
如图4所示,在不同的时间窗口中,主题T1的主题词层次树中各个层次的主题词数量不同,表明主题词层次树随着时间的变化而变化。主题词层次的变化在一定程度上刻画了用户的偏好的变化,从而基于主题词的动态层次分析对用户评分进行预测可适应用户偏好的演变,使得评分预测的工作具有时效性。
为了验证在设置不同时间窗口数对评分预测的影响,设置时间窗口数为3(以年为单位)、6(以半年为单位)、12(以季度为单位)作为测试。设置主题数K为5,主题词数N为50,相似度阈值
为0.025,在不同数量的时间窗口下,两类商品的评分预测结果如图5所示。
对于B00TSUGXKE和B00ZV9RDKK这两类商品,随着时间窗口数的增加,能从更小的时间范围内对用户的评论的主题词进行动态层次分析,因此评分预测均能得到改善,而两类商品的用户评分预测效果改善的程度不同。原因在于B00ZV9RDKK这类商品本身属于更新换代较慢的商品,用户随着时间的推移对该类商品的关注点变化较慢造成主题词层次树的变化不大,因此在更细的时间范围内对用户评论的主题词进行动态层次分析,评分预测效果的改善较小。B00TSUGXKE这类商品,更新换代较快,用户对该类商品的关注点不断更新造成主题词层次树随着时间推移而变化明显,时间区间越小越够更好地适应用户偏好的变化,因此评分预测效果的改善较大。
需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。