一种融合LDA主题模型与LSTM网络的个性化推荐算法
2019-12-04尧婉辰孙怀远谢润忠
尧婉辰 孙怀远 谢润忠
摘要:为改善传统个性化推荐算法精准度不高的问题,使用评论数据作为数据集,先对评论数据作文本预处理和特征提取,然后使用LDA主题模型对文本特征数据建模,得到主题词分布,将其作为标签,同时使用LSTM网络作文本分类,通过计算得到好评率。最后把用户需求和标签利用潜在语义标引计算相似度,根据相似度和好评率大小向用户推荐结果。实验结果表明,该方法能够向用户推荐符合其兴趣的个性化需求信息,且准确率高于96%,证明了该推荐算法的有效性。
关键词:LDA主题模型;LSTM神经网络;个性化推荐算法;潜在语义标引
DOI:10.11907/rjdk.182905开放科学(资源服务)标识码(OSID):
中图分类号:TP312文献标识码:A 文章编号:1672-7800(2019)010-0050-05
0引言
随着电子商务和Web在线服务的迅速发展,信息变得越来越广泛,用户难以在海量信息中获取所需信息,推荐系统应运而生。推荐系统在电子商务(如淘宝网、京东商城、唯品会、苏宁易购、walmart等)、信息检索(如360搜索、火狐浏览器、IE浏览器、百度网、Google等)、新闻推送(如澎湃新闻、腾讯新闻、新浪新闻、今日头条、BuzzFeed等)等很多领域得到了成功应用。传统的个性化推荐方法主要包括基于协同过滤的推荐(Collaborative Filtering,CF)算法、基于内容的推荐(Content-based Recommendation)算法和混合型推荐(Hybrid Recommendation)算法。其中,基于協同过滤的推荐因对专家知识依赖度低以及可以利用群体智慧等特点,得到了广泛深入的研究,但同时也遭遇到严重的数据稀疏(一个用户评分过的项目仅仅占总项目数量的极少部分)和冷启动(新的用户和新的项目往往没有评分数据)问题。
近年来,采用LDA主题模型和评论文本进行推荐的研究逐渐增多,但很少将两者结合起来研究。本文提出一种基于LDA主题模型和LSTM网络的个性化推荐算法,该算法使用评论数据作为数据集,先对评论数据做文本预处理和特征提取,然后使用LDA主题模型对文本特征数据建模,得到主题词分布,把其作为标签,同时使用LSTM神经网络做文本分类,进而计算得到好评率。最后把用户需求和标签利用潜在语义标引(Latent Semantic Indexing,LSI)计算相似度,根据相似度和好评率大小向用户推荐结果。
1相关技术
1.1LDA模型
LDA(LatentDirichletallocation)模型即隐含狄利克雷分布,是Blei等提出的一种生成主题概率模型,通常用来对大规模文档数据进行建模。它属于一种非监督机器学习方法,能够识别大规模文档集和语料库中潜在隐藏的主题信息。由于不同的单词可能隐含相同的主题,因此比较两篇文档的相似性不能只是单纯比较共现单词的数目,而要比较两篇文档中所隐含的主题之间的相似性。LDA主题模型是一个三层贝叶斯模型,包含文档层、单词层、主题层,如图1所示。LDA主题模型使用概率分布表示层与层之间的关系,将文本表示成多个主题的概率分布,将主题表示为多个单词的概率分布。可以这样认为,一篇文章中每个词都是通过“以一定的概率选择了某个主题,并从这个主题中以一定的概率选择了某个词语”这样一个过程得到的。通过隐含的特征联系用户感兴趣的物品,也可以这样理解用户的评分矩阵:将用户感兴趣的物品看成是词汇,用户的评分看成是词频,用户对物品的所有评分就可转变成一篇伪文档,这样就可使用LDA对物品间接地进行模糊聚类,从用户的评分矩阵中发现潜在的主题,通过潜在的主题对用户和用户感兴趣的物品进行连接。
1.2Gibbs抽样
LDA模型中隐含变量联合分布很复杂,直接对隐含变量概率分布进行计算是不可能的。常用估计方法有变分贝叶斯推理、期望传播算法、Gibbs抽样。Gibbs抽样是MCMC算法的一种简单实现形式,由于其在困惑度和运行速度等方面均优于变分贝叶斯推理和期望传播算法,且易于理解和实现,因此本文采用Gibbs抽样算法对LDA模型进行主题抽取,其采样步骤如下:
(1)在[1,T]中随机取一个整值给主题z,i=1,2,…,N,N是文档集所有出现在文本中的特定词个数,即马尔可夫链初始状态。
(2)循环采样,迭代到足够多的次数直至马尔可夫链接近目标分布,并记录当前Zi值,对每个zi按下式估算φ和θ值。
1.3循环神经网络(RNN)结构
循环神经网络最早由Goller等提出,是一种时间递归网络,可以看作是同一个神经网络结构在时间轴上循环多次得到的结果。与其它深层神经网络相比,RNN的结构特点决定了它更擅长处理序列数据。
RNN网络结构如图2所示,其中,A为RNN隐藏层处理单元,xt为当前时刻的输入值,ht为当前时刻隐藏层的输出值。从图中可以看出,ht是由当前输入值xt和上一时刻输出值ht-1、共同决定的,而ht又会影响下一时刻的输出,即每个输出值不仅与当前的输入值有关,还与之前时刻的输出值有关。
理论上RNN可以处理任意长度的时间序列数据,但发现RNN在训练过程中会产生梯度消失和梯度爆炸问题。Pascanu等通过详细的数学推导解释了这一现象产生的原因,即传统的RNN模型在训练时倾向于按照序列结尾处的正确权值方向进行更新。由于隔得越远的输入序列对权值正确变化的影响越小,所以网络输入偏向于新信息的输入而不具备长期记忆功能。
1.4LSTM网络结构
LS7ME解决了RNN训练神经网络过程中梯度消失和梯度爆炸问题,能够保留更久以前的信息。LSTM的网络结构与RNN大体接近,但是隐藏层的结构更为复杂,如图3所示。
图3中,t时刻的输入信息包括当前的输入值xt以及上一时刻的输出值ht-1。LSTM处理单元主要由输入门(用it表示)、遗忘门(用ft表示)、输出门(用ot表示)组成。
以上公式详细地推导了输入信息在LSTM隐藏层的处理过程。LSTM通过输入门、遗忘门和输出门调控信息流向以及筛选信息,从而解决了信息的长时记忆问题。LSTM的输入是句子的单词序列,模型对单词序列进行扫描,词向量序列由嵌入层到达lstm网络层,再经过全连接层映射到标签,得到整个句子的表达,进而实现文本分类,最终得到好评率。
2推荐算法模型
以药品推荐为例说明新模型。
2.1药品评价文本预处理
预处理步骤如下:①初步处理数据。将药品评价数据集中的非评论数据去掉,减少这些数据对最后结果的影响;②自定义专用词典,对评论数据文档进行精准分词;③删除停用词表(包括连词、副词等与主题关系不大的高频词)中的词,进行降维;④进行词性标注;⑤得到文本特征结果。
2.2药品好评率计算
在数据预处理已提取文本特征的基础上进行文本分类器构建。先把评价文档按照评价正负面感情色彩分成好和差两类,然后按照80%与20%的比例随机分成训练集和测试集,使用训练集训练LSTM分类器,最后使用测试集计算每种药品的好评率。
好评率按照“好评率:测试集好评文档数量/测试集文档总数量”进行计算。
文本分类使用LSTM网络,大量实验证明通过构造LSTM网络结构分析文本获得了相当高的准确率,远远优于逻辑回归、朴素贝叶斯、SVM等机器学习算法在文本分类中的应用。
2.3相似度计算
对用户需求描述语言作分词、去停用词标准预处理,然后和LDA模型得到的药品评价标签作相似度计算,按照相似度大小给出药品排序。若相似度相同,按照好评率大小排序,把排在第一位的药品推荐给用户。
相似度计算采用余弦相似度公式,在计算之前先使用潜在语义标引模型对标签数据和用户需求描述文字作奇异值分解(SVD),得到潜在语义空间向量,然后使用余弦相似度公式计算,以此提高相似度计算的精确度。
2.4推荐算法
推荐算法步骤如下:①构建药品数据集。收集药品评价数据作简单处理,剔除表情符号等无用信息,构造药品集合;②评论数据处理,提取文本特征。对评论数据作精确分词、去停用词、词性标注、词性过滤等处理,获取评论数据的关键信息,提取文本特征;③LDA建模,生成药品标签:使用LDA模型对处理好的药品评论数据建模,得到权重较高的前N个词,生成药品标签;④LSTM网络评论文本分类,计算得到好评率;⑤相似度计算,结果推荐:根据用户需求标签计算其与药品标签的相似度,依照相似度大小排序,如果相似度值大小相等则依照好评率大小排序,把前N种药品作为结果推荐给用户。
推荐算法结构如图4所示。
3实验结果与分析
3.1实验平台与工具
中文分词工具是开源分词工具NLTK,自定义词典内容指搜集的疾病症状和药品名称。本实验总共收集了4种药品共计10010条数据。实验平台与工具如表2所示。
3.2LDA模型实验结果
按照推荐算法步骤①和步骤②完成对药品评论文档数据的预处理和特征提取,然后使用BOW词袋模型得到文档的稀疏向量,应用LDA建模。模型迭代次数设置为1000次,以包含“六味地黄丸”、“川貝枇杷膏”评论数据为例,使用LDA模型挖掘出来的主题词及频率分布数据如表3所示。
如果每种药品都得到表3形式的数据,则把这个数据作为每种药品的特征标签,用药品的特征标签和用户需求做比较,就可找到符合要求的药品。从实验结果看,挖掘出的主题词充分反映了药品内容的各个方面。
3.3推荐实验
使用推荐算法步骤②得到文本特征数据,对其进行LSTM网络分类,分类结果如表4所示。按照步骤⑤得到推荐结果。现有的公开药品评论数据集都是针对情感分析计算建立的,为了验证本文算法推荐结果的准确性,采取两种方式模拟用户需求:①从用户的角度设置用户需求,验证推荐结果是否符合要求;②从药品评论网站随机抓取用户评论将其设为用户需求作为正确的推荐结果,根据推荐结果判断准确性。
采取第①种方式进行用户需求和药品标签相似度实验时,设置4条用户需求,分别是:①“昨晚吃烧烤,口腔溃疡了”;②“今天打篮球,手指顶到球了,肿起来了,得涂一些跌打损伤的药”;③“这段时间正好准备戒酒,肾虚吃点补补身体”;④“应该是受凉感冒了,总是咳嗽”。
实验结果如表5所示。从表5的实验数据可以看到,对于需求1,客户需要有关治疗口腔溃疡的药品,而药品1是滋阴补肾药,药品2是治疗咳嗽药,药品3是治疗跌打损伤药,药品4才是治疗口腔溃疡药,所以相似度最大的是药品4;同理,对于需求2、需求3、需求4的相似度得到如表5中的结果。若向用户推荐1种药品,则根据实验结果和算法步骤5的推荐规则,4条需求的推荐结果分别是药品4,药品3,药品1和药品2。
第2种方式实验:从中国药品评价网站对每种药品各抓取500条数据进行推荐,结果如表6所示。
从上述两种方式的实验结果可知,本文推荐算法不仅能推荐符合用户个性化需求的结果,而且推荐结果准确率都高于96%,平均准确率达到了97.15%。
4结语
基于LDA主题模型和LSTM网络的个性化推荐算法,使客户情感倾向性得以最大化体现,满足客户个性化需求,充分验证了该算法的有效性。尽管本文算法在药品推荐中取得了良好效果,但如何提高其泛化性能还需深入研究。