谌 颃
(广东技术师范学院天河学院,广东 广州 510540)
随着云计算和互联网+时代的到来,信息呈爆炸式增长,信息超载问题越来越突出,用户从海量数据中获取感兴趣的信息越来越困难,大大降低了信息的使用效率。个性化推荐技术作为一种重要的信息过滤手段,能有效地为用户推荐感兴趣的资源,协同过滤推荐虽然是迄今为止最为成功的个性化推荐技术之一,但因其不能准确理解用户的喜好,从而影响到推荐的准确率及推荐效果。本文研究的标签推荐技术是基于用户、资源和标签三者建立动态关系,从而可以实现对用户喜好的标注和理解。
由于传统推荐技术在处理大数据量甚至海量信息时计算性能表现差,而云计算具有超大规模以及分布式处理架构等特点,适合大数据量计算处理,基于此提出了一种基于Hadoop的标签推荐系统:我们将大数据集和推荐计算功能分布到多台计算机上并行处理,可大大提高推荐系统的处理性能和可伸缩性。
对标签的语义分析可以提高资源推荐的准确性,该系统框架可对标签的含义进行处理,其过程包括标签整理、建立标签库以及标签选择,最后建立起基于标签的用户喜好模型。系统框架图如图1所示,其中最重要的是组件是推荐引擎和用户喜好模型两部分。
图1 基于语义的标签推荐系统框架
(1)标签结构分析
标签是一种由用户支配的目录内容管理方式,用户不受外部系统的影响,可自由标注任何标签,但这种自由也带来了诸多问题:
第一,不同的标签可能具有相同含义。
第二,近义词或是同义词的存在。
第三,单词拼写错误。
第四,不同语境单词含义不同。例如标签“苹果”,可能是水果中的苹果也可能“苹果”设备。
第五,标签可能是单词、词组或句子。从现有MovieLens中的数据可知有超过一半的标签是句子或短语。
(2)标签整理
首先要对无效的标签进行清理,识别并过滤掉因恶意用户或恶意行为而产生的标签,以建立规范的标签库。针对上述五个问题需要做以下针对性的整理工作:
第一个问题的处理:针对于词的不同形式,如名词的单复数形式,动词时态问题等同根词汇,采用Porter算法合并具有同根的单词;
第二个问题的处理:查近义词词典,对词义类似的单词进行合并;
第三个问题的处理:采用Santanjeev Banerjee算法,根据上下文含义对同名标签进行消歧处理;
第四个问题的处理:采用有效的单词检查算法,纠正单词拼写错误;
第五个问题的处理:增加句子的相似度算法,以满足不同长度标签的计算需要。
(3)标签选择
一种是隐式标签选择算法,即用户无需关心哪些标签重要哪些不重要,系统会根据对标签的观察来决定,此方法依赖于系统。
另一种是显性的标签选择算法。标签的重要性由用户来决定,此方法依赖于用户。
本设计中使用的是标签数量方法,即某一标签被使用次数越多,我们就认为这个标签越重要。MovieLens实验数据也证明了此方法具有较高的推荐准确度。
(4)基于标签推荐系统用户喜好模型
经过标签整理和选择流程后,系统获得了一组质量较好的标签,系统对这组标签进行组合后建立起用户喜好模型。
用户喜好模型的数据源来源于用户与标签之间的交互行为,一般包括添加、浏览和搜索等三种。
第1步,按照一定比重选择与这三种交互行为有关联的标签,得到一组候选标签向量,记为VC={C1,C2,….,Cm},该比重可根据实际情况做出调整;
第2步,使用标签数量法,从候选标签向量VC的m个元素中选出n个最重要质量最高的标签,作为用户喜好标签向量V={T1,T2,…,Tn};
第3步,定期对用户喜好标签向量进行更新,重复前面两步。
推荐算法的核心工作就是找到准确的相似对象,而查找准确的相似对象依赖于计算相似对象所用的相似算法。目前基于标签的推荐系统多是采用传统协同过滤推荐算法,如Cosine相似度算法,Pearson相似度算法,然而这些算法仅仅计算两个空间向量的相似度。
标签本身具有丰富的语义信息,本设计采用基于语义相似度的算法,以此来理解用户行为含义,不仅有利于项目资源的推荐,也有利于增强用户对系统的信任。取用户u喜好的标签集合u-pref-tags和与项目资源最相关的标签集合i-reltags之间的相似度值算法如下:
ss-rec(u,i)=sim-sentences(u-pref-tags,i-reltags)
其值即为用户u未购买项目i的预测评分。
云计算是一种能提供动态资源共享池、虚拟化和高可用性的计算平台,具有数据高可靠性、可扩展性和经济性等特点。Hadoop是一种基于批处理技术的开源云计算平台,主要由存储基础Hadoop分布式文件系统HDFS(Hadoop Distrubuted File System)和核心计算基础Map/Reduce两个主要子项目构成。本研究利用本学院网络中心提供的计算机网络环境搭建云计算平台,其框架如图2所示,其计算模型如图3所示。
图2 Hadoop云计算框架
图3 基于Hadoop的云计算模型
以Hadoop云计算平台为基础,设计了基于Hadoop的标签推荐系统,系统结构如图4所示。根据Hadoop框架体系,集群可以分成两大类角色:主节点(MasterNode)和从节点(SlaveNode)。其中主节点由JobTracker、NameNode、推荐算法引擎库、JavaApplication等组成;从节点由DataNode、Task-Tracker组成。其中主节点负责算法实现、作业调度,从节点负责实际的计算和存储工作,主节点一个,从节点可以多个。
图4 基于Hadoop的标签推荐系统
NameNode负责将文件系统的Metadata存储到内存中,主要存储了每一个文件块到DataNode的映射信息。DataNode是文件实际存储的基本单元,它将文件块存储在本地系统中,并保存文件块的Metadata。推荐算法引擎库包含了标签推荐算法和批处理算法,基于云计算的分布式特点,对需要并行执行的算法采用MapReduce编程模型进行重新设计,并将其存入MasterNode的算法库中然后JobTracker会自动将这些分布式算法分发至各SlaveNode,供TaskTracker执行时调用。设计批处理算法时采用Java语言实现,该算法负责从数据库服务器中抽取用户行为数据,形成HDFS文件,交给分布式推荐算法引擎处理,最后再将推荐结果回写到数据库服务器的相关表中。JobTracker和TaskTracker采用主-从工作模式,JobTracker负责启动、跟踪和调度各个SlaveNode的任务执行;TaskTracker负责在SlaveNode上对本地数据进行处理,并将状态和结果报告给JobTracker。
因此,从功能上看,NameNode、DataNode、DBServer属于系统存储部件,JobTracker、推荐引擎算法库、TaskTracker、Java Application则构成了系统计算部件。整个系统使用普通PC作为硬件设备,内部的节点之间使用千兆以太网交换机连接,以Hadoop 1.0.2作为基础,搭建在CentOS 5.5之上。
(1)Hadoop集群配置
基于以上要求,在本研究实验中,将分别对1台Master+3台Slave、1台Master+4台Slave和1台Master+5台Slave三种Hadoop集群组合进行实验对比。
(2)实验数据集
语义相似度算法实验数据集拟采用Rubenstein和Goodenough的“上下文相似和同义相似的关系”调查项目中的65对单词数据集,语义词典软件则使用基于WordNet2.1软件包。
推荐系统验证实验中可以采用MovieLens的数据集,该数据集是美国明尼苏达大学开发的一个基于Web的研究型推荐系统,通过用户对电影的评分进行电影推荐,网站公布了三个很有价值的数据集;也可以采用Netflix对外发布的电影评分数据集;还可以采用HP/Compaq的DEC研究中心对外发布的EachMovie数据集等。
与传统推荐算法相比,本研究提出的基于Hadoop的标签推荐算法的具有更高的推荐准确度,系统具有较高的伸缩性和性能。
本文提出了基于Hadoop的标签推荐系统的设计方案,重点介绍了用户喜好模型的建立,设计了基于Hadoop的标签推荐算法的系统结构。标签语义相似度的计算较好地解决了系统对用户喜好的理解问题,Hadoop平台使系统具有了较高的伸缩性,并解决了传统推荐技术在大数环境下计算性能不足的问题。
[1]李玉林.基于Hadoop的MapReduce模型的研究与改进[J].计算机工程与设计,2012,8:3112-3114.
[2]崔林,宋瀚涛,陆玉昌.基于语义相似性的资源协同过滤技术研究.北京理工大学学报,2005,25(5):402-405.
[3]谌颃.使用分类改进标签推荐系统准确度的研究[J].微电子学与计算机,2011,5:96−93.
[4]刘建国,周涛,汪秉宏.个性化推荐系统的研究进展[J].自然科学进展,2009,19(1).
[5]李文海,许舒人.基于Hadoop的电子商务推荐系统的设计与实现[J].计算机工程与设计,2014,1:130-134.