一品文秘网 - www.sdelec.cn 2024年05月20日 13:28 星期一
当前位置 首页 >专题范文 > 公文范文 >

基于Spark,框架的瀑布型融合旅游推荐系统

发布时间:2024-03-27 14:00:04 来源:网友投稿

杨佳鹏, 俎毓伟, 纪佳琪, 陈丽芳

(1 华北理工大学 理学院, 河北 唐山 063210;

2 河北民族师范学院, 河北 承德 067000;
3 河北省文化旅游大数据技术创新中心, 河北 承德 067000)

互联网技术的发展引发了信息超额问题,从快速增长数据中找到符合需求的信息需要花费大量的时间和精力,而形成的海量数据也促进了大数据分析以及各种推荐系统的发展。

目前随着人们生活水平的提高,外出旅游已成为一种重要的休闲方式。但由于相关知识和经验的不足,游客难以对复杂多样的景点信息做出最优决策,对游客而言,符合用户特征的大数据推荐系统是一种不错的选择[1]。

目前,已有研究人员根据用户历史数据及用户评分构建旅游景点推荐系统,但该系统并不能在流数据上运行,并且推荐结果存在很大差异,不符合用户需求,具有局限性。

根据用户意向和景点信息的相似度推荐景点,可以更有效地满足用户的特定化需求,对实现智能化生活以及大数据推荐系统具有积极意义。

结合图神经网络和用户情感画像的协同过滤算法是旅游推荐最常用的方法,研究人员结合图神经网络和用户情感画像推动了数据分析与信息挖掘快速发展[2-4],然而此类算法无法满足用户的特殊需求。

图神经网络运用注意力机制[5]获取景点序列中游客的长短期偏好,根据用户历史游玩行为信息推荐景点,而用户的历史游玩信息和长短期偏好容易受到客观环境影响;
用户情感画像依据景点评分进行推荐,具有很强的主观性。

因此,该方法无法在流数据上使用,并且不能实时应对用户需求的变化。

根据用户评论和评分的协同过滤算法也是一种常用的方法,谭云志等学者[6]提出根据文本评论信息学习项目特征,将不同特征分布及用户偏好同时引入协同过滤推荐系统中。

杨家慧学者[7]引入巴氏系数[8]减少共同评分的影响,使用Jaccard 系数[9]增加协同过滤的共同评分项占比。

由于不合理因素可能会造成用户的情感产生一定的偏差,并导致少量用户打出极端的评分,这就会使推荐结果出现明显误差。

针对以上问题,本文提出基于瀑布型融合的旅游推荐系统(WFRA)对用户的想法进行实时分析,因此在面对用户兴趣突然发生更改的情况时,系统可以分析用户最新的想法去重新推荐景点,实时更新模型。

在该系统中将构建2 个过滤层。

第一个过滤层采用SimHash 算法,该算法能够实现大规模文档相似性的精确检测,同时在实际应用中对程序运行速度有所保障,能够对亿万旅游数据进行快速过滤,从而降低后面过滤层的压力;
第二个过滤层采用TF-IDF 和余弦相似度相结合的算法进行过滤,能够进一步把握语义。

实验结果表明庞大的旅游数据在经过2 个过滤层筛选后所推荐得到的结果更具有针对性和精准性。

1.1 设计思路

在瀑布型融合模型中,构建了SimHash 算法和余弦相似度算法两个过滤层。

经过SimHash 算法对海量数据进行降维操作,把文本比较次数从最初的上亿次减少到几百万次,大大降低了时间成本,该设计思路为海量数据的精准处理提供了创新性的改善策略。

在首层过滤所得数据的基础上,再选择余弦相似度算法和TF-IDF 算法进行第二次过滤。

通过程序执行窗口,用户可以输入自己想去做的事情,系统会反馈给用户TOP-100 个推荐结果,其中包含景点所在城市、景点名称、评分、门票价格、销量、以及景点所在的省市区等相关信息。

如果用户想要继续了解其中某几个景点的地理位置信息、各省市推荐景点的数量以及平均票价在地图上的分布情况,可以继续执行程序,得到相关数据的可视化结果,设计思路如图1 所示。

1.2 系统架构

根据上述设计思路,将上述的系统架构分为X层,系统架构如图2 所示。

由图2 可看到,对系统结构中各层设计,拟展开研究分述如下。

图2 系统架构Fig. 2 The architecture of the system

(1)Data 层。

Data 层利用Spark 读取得到的景点数据,存储在原始旅游景点数据库中进行备份,以备后续使用,同时创建一个空白的推荐数据库存储最终的推荐结果。

(2)处理层。

该系统在处理层搭建了2 个过滤层,根据用户输入的文本,过滤层会对数据流进行筛选,每经过一个过滤层,就把推荐结果存入推荐数据库中,作为下一个过滤层的输入。

(3)输出层。

系统在输出层输出最终的推荐结果,用户可以在推荐结果中选取兴趣景点,输出层会对这些兴趣景点做统计分析,并进行地图可视化来展示景点的详细信息与位置。

1.3 主要算法

1.3.1 SimHash 算法

Liu 等学者[10]提出SimHash 算法,其主要思想是对特征向量进行降维,利用2 个向量的汉明距离来计算相似度。

Yu 等学者[11]证明,SimHash 算法在处理亿万级别的数据时不仅拥有运行速度优势,也具有较高的准确性和鲁棒性。

该算法不仅大大降低了运行时间成本,也有效地减少了第二过滤层的工作量,使用户能更快地得到推荐结果。

SimHash 流程如图3 所示。

图3 SimHash 流程Fig. 3 SimHash process

1.3.2 余弦相似度算法与IF-IDF

在第一层过滤掉了大量景点后,第二过滤层采用余弦相似度算法,通过提取关键词进一步精简文本信息,从而提升系统的效率。

假定用户输入的特征向量a为[x1,y1],某个景点的介绍、即向量b为[x2,y2],那么能将余弦定理改写成式(1):

余弦的这种计算方法对n维向量也成立。

假定A和B是2 个n维向量,这里A是[A1,A2,…,An],B是[B1,B2,…,Bn] ,则A与B的夹角θ的余弦为式(2):

利用式(2),就可得到A与B的相似度。

综上所述,本文在第二层使用的余弦相似度算法和TF-IDF算法的步骤如下:

(1)用TF-IDF 算法计算词频向量找出每段文本的关键词。

(2)将每段文本取出的若干个关键词合并成一个文本库,计算每段文本对于该文本库中关键词的词频,并使用相对词频可以避免文本长度的差异。

(3)获得两段文本各自的词频向量。

(4)计算两段文本的余弦相似度。

2.1 数据集的获取

本文对原始数据集进行初步整理得到34 个省市的景点数据。

其中包括省市、景点名称、星级、评分、票价、销量、简介以及所在省/市/区,北京市部分景点数据见表1。

表1 北京市部分景点数据Tab. 1 Data of some scenic spots in Beijing

2.2 数据预处理

传统的数据库[12]在应用上存在着一定技术瓶颈,主要表现在2 个方面:

(1)MySQL 等数据库的数据处置能力有限,数据量的大幅度增加会使Join、GroupBy、OrderBy 等操作速度受到很大的限制,有可能出现资源成本过高从而导致运行失败的情况;
其次,将数据存储转移到分布式系统的代价太大。

(2)无法进行跨数据源的访问。

比如,对Hive Table 和MySQL 的数据混合进行查询。

大多数做法是将数据源进行转移。

过程中涉及的技术应用包括Sqoop[13]、Hive[14]外表等,不过这些技术需要很高的时间成本,且Sqoop 在对特殊字符的处理中也存在着问题与不足。

Spark 作为开源的大数据处理平台[15],通过将Resilient Distributed Datasets 以分布式的形式存储在集群的内存中和将计算压力转移到Hadoop 集群中来提高执行效率。

利用Spark 读取整理好的数据集并进行预处理操作,清洗不符合要求的数值;
通过高德地图API 和Echarts 将景点的地理位置转换为经纬度坐标,以利于后续进行可视化处理。

3.1 系统设计

为了能够更具有针对性地向用户推荐旅游景点,开发了基于瀑布型融合的旅游推荐系统。

用户输入自己的想法,便可以得到系统推荐的景点,用户还可以从推荐结果中选择兴趣景点,并查看其详细信息和地图上的具体位置。

本文主要通过应用不同的算法搭建过滤层对用户期待体验的文本描述和景点信息进行匹配来挖掘用户感兴趣的景点。

3.2 系统应用

(1)打开并运行旅游景点推荐程序,会有文字提示用户输入想要去做的事情,例如:用户输入:我突然想去泡个温泉,最好是专门的中心。

用户在输入想做的事情后按下回车键,系统会反馈给用户100 个推荐结果。

根据推荐结果可知,该算法反馈给用户推荐景点的针对性较强,具有较高的精准性。

在得到TOP-100 个景点的数据后,将其按照省市分类得到各省市兴趣景点的数量及票价的平均值,如图4、图5 所示。

图4 各省市兴趣景点的平均票价Fig. 4 Average ticket prices for attractions of interest in various provinces and cities

图5 各省市兴趣景点的数量Fig. 5 Number of attractions of interest in each province and city

(2)用户还可以选择兴趣景点所对应的序号,得到其在地图上具体地理位置的分布情况,以及清晰、直观的3D 可视化结果。

(3)用户可以选择继续获取各省市兴趣景点的数量以及平均票价的相关信息,最终以地图和柱状图的形式进行可视化。

如果想了解某个省市的兴趣景点分布数量以及平均票价,只需将鼠标移动至该省市的柱子上,就会动态展示相关信息。

其中,lng和lat分别表示该省市的经纬度,alt表示该省市所包含兴趣景点的个数,value表示该省市兴趣景点的平均票价。

本文提出的基于瀑布型融合的旅游景点推荐系统在测试中具有很强的针对性和较高的精准度。

其本质是根据用户的想法,对各旅游景点的信息进行过滤,在每一个过滤层除去不符合条件的景点,筛选出更符合用户意愿的景点。

该系统不仅能够更好地满足用户的个性化需求,还能灵活地应对用户兴趣更改的情况,达到实时分析的效果,在某种程度上实现智能化旅游推荐,使用户能够在任何时候都能得到符合当下内心想法的推荐结果,使旅游推荐更加智能化。

由于在处理海量旅游景点数据过程中,第一过滤层采用SimHash 算法降低了整个算法的时间成本,并使程序的运行速度得到明显提升,整个算法的结构体系具有很强的实用性。

在后续的研究中,可搭建并行过滤层分别针对不同特征属性进行过滤筛选,并根据数据集的大小、算法的时间复杂度、系统运行效率,以及利用景点与景点之间的相似度进行横向推荐等多个角度进行改进,从而获得更加智能的推荐结果。

猜你喜欢余弦景点文本在808DA上文本显示的改善制造技术与机床(2019年10期)2019-10-26基于doc2vec和TF-IDF的相似文本识别电子制作(2018年18期)2018-11-14打卡名校景点——那些必去朝圣的大学景点意林·全彩Color(2018年7期)2018-08-13两个含余弦函数的三角母不等式及其推论中学数学杂志(高中版)(2016年6期)2017-03-01英格兰十大怪异景点海外星云(2016年7期)2016-12-01分数阶余弦变换的卷积定理北京信息科技大学学报(自然科学版)(2016年5期)2016-02-27文本之中·文本之外·文本之上——童话故事《坐井观天》的教学隐喻小学教学参考(2015年20期)2016-01-15图像压缩感知在分数阶Fourier域、分数阶余弦域的性能比较职业技术(2015年8期)2016-01-05没有景点 只是生活Coco薇(2015年11期)2015-11-09景点个股表现股市动态分析(2015年12期)2015-09-10
Top