基于顾客评论的在线旅游线路选择毕业论文
2022-01-05 21:12:20
论文总字数:18811字
摘 要
随着旅游业在近几年的快速发展,越来越多的游客在旅游之后会将景点的评价发表在网上,为还未出游的游客提供参考。这些评论信息数量庞大,质量良莠不齐,几乎囊括旅游的方方面面。因此,研究从海量的评论数据中挖掘有用的信息,并结合游客的个人偏好,可以在游客选择景点时,有效地利用群体智慧制定更加合理和个性化到的旅游决策。
根据游客实地考察后发布的在线评论数据,本文通过构建景点推荐模型为游客提供针对景点的个性化推荐。首先爬取携程网上的景点评价数据,经过清洗和预处理后进行情感分析,区分积极评价和消极评价,再使用LDA主题模型提取文本中的特征值,生成景点正负标签。另一方面选取被推荐目标的历史评论数据,通过词频统计的方法,生成游客正负画像,与之前的景点标签对比后,将最符合用户偏好的景点推荐给游客。
关键词:旅游 在线评论 个性化推荐Online Travel Route Selection Based on Customer Reviews
Abstract
With the rapid development of the tourism industry in recent years, more and more tourists will publish the reviews of the scenic spots on the Internet after the tour to provide reference for tourists who have not yet traveled. The amount of information in these reviews is huge and the quality varies, covering almost every aspect of tourism. Therefore, research on mining useful information from massive comment data, combined with the personal preferences of tourists, can effectively use group wisdom to make more reasonable and personalized tourism decisions when tourists choose scenic spots.
According to the online review data released after the field visits by tourists, this article provides tourists with personalized recommendations for scenic spots by building a scenic spot recommendation model. First, crawl the Ctrip online scenic spots review data, after washing and preprocessing, conduct sentiment analysis, distinguish positive and negative evaluation, and then use the LDA theme model to extract the feature values in the text to generate positive and negative attractions labels. On the other hand, the historical comment data of the recommended target is selected, and the positive and negative portraits of tourists are generated by word frequency statistics. After comparing with the previous attractions labels, the scenic spots that best meet the user's preference are recommended to the tourists.
Key words: Tourism; Online reviews; Personalized recommendation
目录
摘要 1
Abstract 2
第一章 绪论 1
1.1 研究背景与意义 1
1.2 研究目标与研究内容 1
1.2.1 研究目标 1
1.2.2 研究内容 2
1.3 论文结构 2
1.4 研究方法 3
第二章 文献综述 4
2.1 旅游数据挖掘方面的研究 4
2.1.1 数据挖掘的综合性研究 4
2.1.2 数据挖掘方法的研究 4
2.2 优化推荐算法方面的研究 4
2.2.1 国内学者对算法的优化 5
2.2.2 国外学者对算法的优化 5
2.3 简要述评 5
第三章 相关基础理论与技术研究 7
3.1 情感分析方法 7
3.1.1 基于词典的情感分析方法 7
3.1.2 基于机器学习的情感分析方法 7
3.2 特征向量化方法 8
3.3 特征值选取方法 9
3.4 旅游推荐的方法 9
3.4.1 协同过滤的推荐方法 9
3.4.2 基于内容的推荐方法 10
第四章 基于在线评论的个性化旅游路线推荐模型 11
4.1 数据准备 11
4.1.1 研究区域 11
4.1.2 数据预处理 11
4.2 情感分析 12
4.2.1 SnowNLP情感分析 12
4.2.2 朴素贝叶斯情感分析 14
4.3 特征值选取 14
4.4 推荐模型构建 16
4.4.1 游客画像 16
4.4.2基于标签的推荐模型 17
4.4.3 推荐模型的应用举例 17
第五章 总结与展望 20
5.1 总结 20
5.2 不足与展望 20
致谢 25
图表目录
图1-1 研究结构图 3
图4-1 数据示例 11
图4-2 去停用文本 12
图4-3 SnowNLP代码 13
图4-4 正负面评价 13
图4-5 特征向量化 14
图4-6 LDA主题模型 15
表4-1 景点标签表 16
图4-7 游客数据源 17
图4-8 词频统计 18
图4-9 匹配示例图 18
第一章 绪论
1.1 研究背景与意义
随着国民收入的提升和旅游资源的开发应用,我国旅游事业发展迅猛,各地旅游人次及游客数量逐年增加。随着“互联网 行业”的提出,旅游逐渐从线下慢慢往线上渗透,线上旅游信息逐渐成为游客选择自己旅游目的地的重要选择依据。旅游业与互联网的结合为旅游事业发展注入了新活力,消费者可以通过互联网对旅游全过程进行解析和操作,例如通过互联网购买车票、机票或船票,通过互联网预定酒店,通过互联网查看旅游攻略并制定旅游路线,通过互联网查看旅游景点评论等等。
一个地区的旅游路线可以有多种,选择一个合适的旅游路线可以极大地提高旅游带来的正面收益。但是,目前旅游数据出现日益严重的过载现象,旅游公司很难从如此庞大的游客数据中挖掘出符合用户个性化需求的旅游路线,用户也很难从旅游公司的方案中找到对口味的旅游计划。目前已经存在了一些个性化旅游路线推荐的方案,其中很多方案使用的推荐算法在处理大量数据时表现出耗时长、消耗大、不准确等弊端,很多算法得出的推荐结果与游客真正喜欢的路线依旧存在很大出入,因此研究个性化旅游线路推荐,给出更加准确的旅游路线具有重要的价值和意义。
线上旅游信息的一个重要载体就是其他游客的评论,评论反映了一个游客基于其过去的旅游经历,对某一旅游景点的景色、服务、环境等部分的感受。由于由景点官方提供的景区介绍难免掩盖一部分缺点,着重突出自身的优点,所以官方的介绍准确度并不高,因此游客在选择旅游路线时,会更多关注其他游客的真实评论,以此来选择自己的旅游路线。旅游评论传播速度快、影响范围广,具有实时性,可以帮助即将出行的游客选择自己的目的地。除此之外,在线评论的好坏极大地影响了旅游景区的口碑和声誉,旅游管理者可以通过分析和管理在线评论,改进旅游营销策略,改善旅游服务,以达到建立高口碑旅游品牌的目的。因此,通过研究旅游评论数据来达到个性化推荐的目的,具有非常深远的意义。
1.2 研究目标与研究内容
1.2.1 研究目标
面向游客的个性化旅游路线推荐需求,以在线评论数据为研究基础,为游客提供更加精准的个性化旅游路线推荐服务。游客可以通过本文最后得出的模型,获取符合本身偏好的旅游咨询,享受个性化旅游的乐趣。
1.2.2 研究内容
围绕上述研究目标,通过采集游客在南京旅行之后,在携程网发表的各景点的评论数据,以游客评论数据作为数字脚印构建算法模型,为游客做偏好预测和排序,达到为游客提供景点推荐的研究目标。本文的主要研究内容如下:
(1)旅游路线推荐的相关理论研究
在充分了解游客信息需求的基础上,深入探究本研究中所涉及到的主要理论和技术,详细研究了数据获取方法、情感分析方法、用户画像方法、旅游推荐方法,建立个性化推荐与游客评论之间的联系。
(2)基于在线评论的个性化旅游路线推荐模型构建研究
对中山陵、老门东、夫子庙、大报恩寺等景点的游客评论进行信息提取,进行情感分析、统计分析等,构建旅游路线推荐指数数学模型,将推荐指数高的景点推荐给游客。
1.3 论文结构
第一章,绪论。提出主题即“基于顾客评论的个性化旅游路线选择”,介绍写作背景,总结当前研究形势,确定本文的主题内容及研究方法。
第二章,文献综述。在网络上通过搜索:1.大数据旅游 2.旅游路线推荐 3.评论挖掘等相关文献,对检索结果进行分析总结,给出国内外研究现状。
第三章,相关基础理论与技术研究。介绍本次研究涉及的数据获取方法、情感分析方法、用户画像方法、以及旅游路线推荐方法。
第四章,基于在线评论的个性化旅游路线推荐模型。详细介绍本次研究以南京市的旅游景点为例,以携程网上的旅游用户评论为数据基础,整个个性化旅游线路推荐模型的搭建过程,包括数据准备、情感分析、特征值选取、推荐模型构建。
第五章,总结与展望。对全文内容进行总结,给出自己的理解,并对今后个性化旅游路线推荐领域的发展进行展望。
以下为论文研究结构图:
图1-1 研究结构图
1.4 研究方法
在本文的写作过程中,拟采用网络爬虫、智能分词、情感分析、朴素贝叶斯分类法等方法。首先从旅游网站爬取用户评论文本数据,经过数据清洗和预处理后分词,通过情感分析的方法为每条评论打出情感等级,然后根据一定算法,模拟计算该地区高质量旅游路线,最后给出推荐方案。
第二章 文献综述
2.1 旅游数据挖掘方面的研究
为每一位旅游推荐个性化的旅游路线,首先就要分析该用户的偏好特征,针对用户的各种信息、足迹等进行数据挖掘是目前最有效果的一种方式。目前国内外都有很多针对旅游数据进行挖掘分析的研究,这些学者从多个方面对各类旅游数据进行挖掘分析,最终得出相应结论并对相关行业做出贡献。
2.1.1 数据挖掘的综合性研究
梁溶方[1]等人基于网络文本分析研究了桂林旅游者行为,通过选取携程旅游网、马蜂窝网、百度旅游等旅游网站中关于桂林旅游的200多万字的评论数据,对个人特征,旅游动机,旅游消费偏好和旅游态度进行了分析研究和建议。他们的研究成果为桂林旅游业的发展提出了建议。梁峰[2]对旅游地的形象进行研究,以无锡地区的旅游评论信息为基础。该研究运用文本情感分析技术研究了无锡旅游目的地形象感知的主要要素和形象结构。最后,作者提出了一种基于旅游目的地形象感知结果的环境、水质和门票价格控制的管理优化策略。陈怀娜[3]等人对交通和道路状况进行分类和预测,得到景区是否值得推荐。他们运用了机器学习算法并将环境、景色等多个因素纳入考虑范围,比较这些算法所得结果之后得到最佳算法。唐琳[4]等人提出了一种基于Python的旅行笔记文本数据分析。旅游公司的网站需要随时紧跟旅游潮流,因此需要进行一定分析来决定网站内容。该研究很好地预测了未来的旅游趋势,并为网站的搭建提出了建设性的意见。
2.1.2 数据挖掘方法的研究
郭文月[5]等人研究了时空关联规则的挖掘,在此规则下没有时间限制。同时使用全球恐怖事件挖掘中的应用作为例子证明方法有效性。何占军[6]等人对顾及背景知识的多事件序列关联规则挖掘算法进行研究,能在一定程度上改善经典的MOWCATL算法存在的挖掘规则冗余或遗漏问题。张久滕[7]等人提出了一种基于时间框架的旅行计划规划算法,用于多约束旅行计划。林甲祥[8]等人根据约束子集的定义,提出约束关联规则挖掘算法,通过约束条件提高最终关联规则的针对性,提高挖掘算法效率,优化挖掘结果。
2.2 优化推荐算法方面的研究
对于旅游路线的推荐技术研究,在国内外已有一些基于旅游资讯、景点信息进行推荐。多数研究都对现有的算法进行了优化,在已有的基础上进行优化,解决现存算法某些弊端,从而达到提高效率、精准推荐的目的。本文从国内国外两个角度,对学者们对算法的优化研究进行了总结。
2.2.1 国内学者对算法的优化
字云飞[9]等人针对FFP-Growth算法在处理大量数据极耗内存的弊端,提出了一种优化算法,该算法加入兴趣度,提高了FP-Growth算法的效率,同时还提供了一种基于该算法的旅游路线规划挖掘系统。周家昊[10]等人使用一定方法估计用户的偏好,从而做出旅行路线推荐。他们的研究是依据用户的历史操作、评价数据,运用协同过滤的方法达到分析目的。张晗[11]等人设计了一个针对旅游的智能推荐系统,该系统充分运用了关联规则算法,挖掘了收集到的数据中存在的可能用来推荐的信息。王显飞[12]等人设计了一个基于约束的旅行推荐系统。该团队进行了许多访谈,记录了很多用户的偏好信息,之后他们根据这些信息进行了相应的开发。朱全[13]运用了机器学习中的关联进行数据挖掘,设计了一个智能旅行推荐系统。吕红亮[14]等人研究为用户提供个性化的旅行路线推荐服务。它充分寻找了用户、景点与路线三者之间隐藏的关系,找出用户与另外两个方面之间的相关系数,并对它们进行排名,最后向目标用户推荐排名最高的旅行路线。这个方法是一种基于PageRank的改进算法。
2.2.2 国外学者对算法的优化
国外学者Krumm[15]早在2005年之前就运用最短径算法向用户推荐个性化旅游路线,并使用地理信息系统来分析和推荐旅游信息系统服务。在2010年之前,Huang.Y和Bian.L[16]提出了一种基于网络信息分析的推荐方法。该研究总结出了各个旅游热门地区的主要指标,并使用神经网络的分类方法将它们进行分类。Chodhury[17]等人在2010年使用网络相册作为数据支持来分析网络相册并提取相关的信息数据。他们建立的系统根据提取的信息自动向用户推荐旅行路线。
2.3 简要述评
当前的各种研究对旅游路线推荐系统的发展做出了很大的贡献,但是依然有一些问题或者某些领域上的困难需要我们去攻克,例如将用户个人信息作为数据挖掘的一个参考因素,以及对于新的旅游路线的出现等冷启动问题。目前的研究在基于情感分析的旅游路线推荐方面内容是比较少的,本文认为情感分析方法得出的结论是最能体现用户的真实偏好的。因此,本文拟尝试使用情感分析的方式,结合用户、景点画像,建立个性化旅游路线推荐模型。
第三章 相关基础理论与技术研究
3.1 情感分析方法
文本情感分析是对主观文本进行情感分类,还要对文本进行评价,修改,分类和预测。情感分析可以大致分为三个研究级别:单词级别,句子级别和章节级别。这样的分类是根据处理的文本粒度不同而分类的。章节级别的情感分类是为了指定总体的情感方向,即确定文章是传达总体的正面还是负面的观点。句子级别的情感分类是为了获取句子中每一个短语所表达的情感倾向,一般情况下,句子级别的情感分类是对带有用户主观观点的句子进行进一步分析的过程。词语级别的情感分类与前两种情感分类区别较大,它除了可以判断情感极性(例如:正面、负面),还可以识别和提取各褒贬观点的特征对象(例如:景色、排队等)。本文采用篇章级别的情感分析,即判断每条评论文本的整体情感倾向,随后分别使用基于词典的情感分析方法和基于机器学习的情感分析方法进行情感分类,比较分类结果,最终选取准确率更高的方法来进行后续研究。
3.1.1 基于词典的情感分析方法
基于字典的方法主要是需要制定词典和规则或者直接引用现有的词典。将待测文本与词典中的词语系数一一匹配句法依存关系,获得其对应的权重。使用这个权重就可以得到该文本的情感倾向信息。基于字典的情感分析一般分几步进行,首先是对整个文本进行断句,将文本划分为一个个小小的句子。之后将每个句子进行分词,由句子在此拆分为一个个单词。再将这些单词放入词典,遍历词典中的词语,寻找与之匹配的词语以及系数。整个文本内的词语都获得相应系数之后进行加权,如果负面情感的系数为负数,正面情感的系数为正数,那么我们就可以根据最终加权结果的正负来判断该文本的最终情感倾向。如果整个文本构成较为复杂,那么我们就可以先采取一定方法,将整个文本对表达情感倾向无关的内容进行剔除,这样就可以降低杂质对整个文本情感的影响。本文将Python中的SnowNLP包用于基于字典的情感分析。SnowNLP是Python中比较受欢迎的第三方工具,调用该工具可以仅仅使用几行代码实现上述所有情感分析过程。
3.1.2 基于机器学习的情感分析方法
情感词典的准确率有时会受一词多义等中文常见表达方式的影响,导致准确率和召回率不稳定,有时分析效果不尽人意。同时,如果想在某一方面构建自定义的情感词典,那么这一工作的工作量将会非常巨大,短时间内无法凭借一个人的力量完成。所以我们需要考虑其他的情感分析方法,那就是机器学习。使用机器学习的方法的好处之一就是这一类算法中有多种有监督算法可供选择,我们可以根据实际情况,选择最适合这一情景的算法进行分析。这种方法需要把文本信息转化为计算机可以理解的数字向量信息,然后在有监督的前提下拟合模型,经过和原来文本本身极性比较得到正确率。如果准确率可以接受,那么拟合后的模型就可以用于预测新文本信息的情感极性。目前常用的机器学习算法主要是朴素贝叶斯、最大熵和支持向量机。本文在这里选择可以通过计算条件概率来分类的方法:朴素贝叶斯。
朴素贝叶斯考虑如何基于所有相关概率来选择最优的类别标记,而且还可以在现有数据不断增加的情况下,通过稍稍修改分类数值来实现增量训练。对于给定的数据集x,有一个贝叶斯公式:
根据公式可以得出数据x归为情感类型C的概率。将x分词为x1,x2,x3,x4,则:
朴素贝叶斯在贝叶斯公式的基础上做了独立同分布假设,所以简化p(x)的计算为:
3.2 特征向量化方法
由于计算机智能识别并处理数字化的数据,所以我们的中文文本数据需要进行向量化,即将中文词语转化成电脑可以识别的词向量。在自然语言处理中,最细粒度的对象是单词。如果我们要使用一般思路执行词性标记,则可以有一系列数据(x,y)。其中,x代表单词,y代表词性。我们要做的是找到从x到y的映射。传统方法包括贝叶斯,SVM和其他算法。但是我们的数学模型通常是数字输入。但是,自然语言处理中的单词是人类以符号形式的抽象摘要,因此需要将其转换为数字形式或嵌入数学空间中,这种嵌入方法称为词嵌入。当前,有很多方法可以在Python中将文本数据转换为单词向量,最广泛接受的方法是word2vec方法。总而言之,word2vec是使用一层神经网络将单热点形式的零散的词向量映射到n维(通常为几百个)的密集向量的过程。 Word2vec是单词嵌入的一种。在自然语言处理中,将m视为句子中的一个单词,n是该单词的上下文单词。该模型的目的是确定(m,n)样本是否符合自然语言定律。Word2vec关心神经网络的权重,并且将这些参数作为输入m的一种词向量。
3.3 特征值选取方法
每个景点都有其特色和缺点,为了有针对性地推荐用户更可能喜欢的景点,本文需要对景点进行特征值提取,即找出某景点在哪些方面是十分吸引人的,在哪些方面是让人望而却步的。本文使用LDA模型来进行特征值的提取,隐含狄利克雷分布的英文名称就是Latent Dirichlet Allocation。它还有一个简称为LDA,是一种概率主题模型。它默认每一组待测文本都是由一个个独立的,没有先后顺序的并且平等的词语组成。这些词语都是围绕一个或多个主题而出现的,每个词语对这个主题的贡献度不同。该模型可以通过多层贝叶斯分类的形式,使用概率的方法确定待测文本的主题。获得主题之后该模型可以使用聚类的方法将词袋中的每个词语对主题的贡献大小进行区分。因此,它也被称为是一个非常典型的词袋模型。本文通过情感分析得到关于某一景点的所有好评和所有差评两个数据集,将其导入LDA模型后,会得到在所有文本中对文本的正负评价影响最大的几个关键词,这些关键词就是这个景点的特征值。
3.4 旅游推荐的方法
通常来说,常用的推荐算法主要分为:协同过滤推荐方法,基于内容的推荐方法和基于知识的推荐方法。结合实际情况,本文更适合于协作过滤和基于内容的推荐方法。本文将比较这两种推荐方法,选取效果较好的方法进行后续研究。
3.4.1 协同过滤的推荐方法
协同过滤顾名思义就是类似于一个滤网,这个滤网可以过滤掉所有与表达研究对象之间的关系无关的要素,只留下能表达关系的内容然后进行学习。从而达到可以预测新对象的偏好的目的,是使用一组用户的已知偏好的历史行为数据来推荐或预测其他用户的未知偏好。协作过滤方法分为两类:基于内存的协作过滤和基于模型的协作过滤。它们之间的区别在于,前者以用户ID或项目ID为输入,实时查询数据库并返回计算的推荐结果,这更可解释,但是数据库很大,查询和计算都很慢;后者通过离线数据预先训练模型,然后输入满足模型的参数以获得预测的推荐结果。此方法无法解释,但是就离线模型计算和训练而言,是可以处理大规模数据的。
3.4.2 基于内容的推荐方法
基于内容的推荐方法专注于研究用户和物品本身的标签信息。它的主要思想是一方面基于用户过去浏览的商品记录创建用户画像,另一方面提取商品的特征向量以创建商品画像,并向用户推荐通过比较商品肖像和其他商品的用户肖像之间的相似性,浏览历史记录是相似的。与协作过滤中基于分数的相似度相比,基于内容的推荐方法中的项目内容和用户偏好是通过一些属性来表示的。如果基于内容的推荐方法只考虑物品若干结构化的特征,那么特征提取就非常容易,而且后续的相似度计算也相对容易。但如果基于内容的推荐方法还需要考虑物品的文本描述,并且还需要以若干关键词为基础,利用搜索引擎融合其他文本数据源,那么特征的提取就涉及自然语言处理技术,即如何从文本描述中分词、提取关键词向量甚至形成主题。如果内容的稳定性相对较好,但是用户的兴趣是动态变化量,则根据用户的历史行为对推荐方法进行调整是存在差异性的。在考虑反馈的情况下,如果用户对物品打了低分,那么用户的特征向量值会降低。在不考虑反馈的情况下,用户对物品打低分的行为有可能被认为是短期影响或者噪音,用户的特征向量值保持不变。
第四章 基于在线评论的个性化旅游路线推荐模型
4.1 数据准备
4.1.1 研究区域
南京拥有丰富的旅游资源和发达的旅游产业。 它是中国首批优秀旅游城市之一。 南京有数百个景点,每年接待国内外游客1.47亿人次,旅游总收入2784.95亿元。本文选取的研究区域知名度和关注度都很高,游客对研究区域的旅游需求明显,网上关于本文选取的研究区域景点的点评也很丰富,研究结果对其他景区具有借鉴意义。本文从携程网上选取南京热门景点中排名靠前的总统府、侵华日军南京大屠杀遇难同胞纪念馆等9处景点,使用Python爬取前750条用户评论信息,共计6750条。爬取到的每条评论包括景点名称、用时参考、评论内容、评论时间四个属性,数据示例如下图所示。
图4-1 数据示例
4.1.2 数据预处理
一些无用的数据经常出现在数据的采集、记录过程中,为了提高研究数据的准确性,保证挖掘结果的有效性,需要预处理网站爬取的评论数据。
(1)处理错误数据
爬取后获得的评论数据中有很多没有实际研究意义的评论数据,比如有的用户为了获得15字以上评论的积分奖励,在评价中加入了很多重复的字。还有一些不规范的表达方式,会在之后的情感分析时产生错误,影响实验结果,需要进行修改,比如“为鸡鸣寺打call”改为“鸡鸣寺很好”。
(2)删除多余列
本次分析只需要用到评论数据,所以源数据只需要保留“评论内容”一列即可,其余的景点名称、浏览时间以及评论时间可以删掉。
(3)jieba分词
该实验的情感分析部分需要对数据进行细分,仅保留与情感趋势相关的关键要素和词语。本文使用广受赞誉的Python第三方库jieba进行分词。jieba分词的思想简而言之就是尝试所有的词分割模式,结合当时的句意,选择最准确的切割方式来对文本数据进行处理,以求实现最准确的分词效果。在这里,我们使用其自带的精确切割模式,可以最准确地剪切句子,非常适合于本文的情况。
(4)去停用词
中文文本中含有一些“的”、“地”、“得”、“在”等没有意义的词汇,还有许多标点符号,属于停用词。通过建立停用词表,将经过分词后的评论文本匹配停用词后予以过滤。本文从网上获取了中文停用词表,共计3000行左右,去停用词后文本如下图所示。
图4-2 去停用文本
4.2 情感分析
4.2.1 SnowNLP情感分析
本次实验先尝试使用基于词典的情感分析方法,即采用Python中的SnowNLP第三方包自带的情感分析功能。SnowNLP是典型的基于词典的情感分析方法,该方法将分词之后的文本中所有的词与情感字典中的词进行匹配,获取该词的情感系数,这种方法得到的情感系数介于0和1 之间,越接近1则表示正面情感越强,越接近0则表示负面情感越强。应用SnowNLP的Python代码如下图所示。
图4-3 SnowNLP代码
本次实验认为情感系数大于0.6为正面评论,小于0.3为负面评论,分别查看分好的正负面评价如下图所示。
图4-4 正负面评价
本文查看负面评价后发现,有些本身很明显是正面评价的评论被分到了负面评价中,原因是一条评论往往有多句话,而这之中的某一句可能包含负面评价的字眼,且该字眼负面系数很接近0,而其余句子中的正面系数又没有那么接近1,导致没办法将整个句子的情感系数提高到0.6以上,所以被分到了负面情感中。例如在中山陵景区的负面评价中很多提到需要预约的评价,景区需要预约在目前看来是一个比较中性的评价内容,但是在SnowNLP中,“预约”是一个负面的词语。因此我们可以知道SNowNLP在进行这种多个句子的全文本情感分类时不够准确,所以本文决定使用基于机器学习的情感分析方法,通过编写朴素贝叶斯的Python代码,来实现情感分类。
4.2.2 朴素贝叶斯情感分析
为了实现朴素贝叶斯情感分类,本文首先是将数据特征向量化,特征向量化的目的就是将m×1的矩阵转化为m×n的矩阵(其中1表示1维文本, n表示1维文本中的n个词汇),分别计算n个特征词汇在m行中出现的频数。特征向量化的代码及结果如下图所示。
图4-5 特征向量化
随后,本次试验将所有原始数据分为训练集和测试集,训练集占80%,测试集占20%,以此来检验朴素斯分类器的准确度。由于Python自带sklearn机器学习包,所以在进行编写代码的时候可以直接调用这个包并使用其中的朴素贝叶斯函数。先使用训练集训练算法,然后代入测试集,将测试集的分类结果与其原来的评分表示的正负面进行比较,最终得到正确率0.84375的模型。由准确率可见该模型的分类效果要优于SnowNLP,因此本次实验将把朴素贝叶斯的分类结果应用到后续研究中。
4.3 特征值选取
旅游包括很多方面,比如娱乐、饮食、景色等多个方面,特征值选取的目的就是通过分析每个景点的正负面评价,确定该景点的正负标签,如果某景点的某个正标签与某个用户的兴趣标签相匹配,那么该景点就可以进入针对该用户的推荐清单;反之,如果某景点的负标签与某用户的兴趣标签匹配,那么该景点就不能进入该用户的推荐清单。本次试验中,选取历史、自然、文化、排队、饮食、教育、娱乐以及费用这8个标签为旅游相关的特征值。
本文使用LDA主题模型的方法进行特征值选取,LDA模型认为每个文本都是围绕某一主题来构成的,而且每个文本都可能有多个主题,也就是有多种构成方式。该模型将返回其选取的三个主要主题的构成方式,词语前面的系数表示该词语的权重,权重越大则表示该词语对该主题贡献越大。如果我们把正负面评价分别输入LDA主题模型,那么将会得到围绕好与坏两个大致主题的表达式,因此本文就可以根据表达式权重选取特征标签。以侵华日军南京大屠杀纪念馆为例,LDA主题模型代码如下图所示。
图4-6 LDA主题模型
运行之后得到的结果中,负面评价中“排队”权重最大,达到0.022,其次还有“沉重”的权重为0.016。正面评价中权重排名靠前的词语有“历史”、“铭记”、“免费”。根据上述结果,我们可以确定侵华日军南京大屠杀纪念馆的标签,正标签为历史、教育以及费用,负标签为排队、娱乐。使用此方法,给本次实验选取的全部九个景点进行特征值选取之后,结果如下表所示。
表4-1 景点标签表
景点名称 | 正标签 | 负标签 |
南京大屠杀纪念馆 | 历史、教育、费用 | 排队、娱乐 |
夫子庙 | 文化、自然 | 饮食、排队、费用 |
鸡鸣寺 | 自然、文化 | 费用、娱乐 |
老门东 | 饮食、文化 | 历史 |
明孝陵 | 自然、历史 | 费用 |
南京博物院 | 历史、文化、教育 | 排队 |
玄武湖公园 | 自然、费用 | 排队 |
中山陵 | 历史、教育 | 自然、费用 |
总统府 | 饮食、历史、文化 | 排队 |
4.4 推荐模型构建
推荐系统一般通过一种或多种中介关系建立用户和项目之间的联系。譬如,基于用户的协同过滤推荐算法,是以用户的偏好物品作为中介关系,获得具有与目标用户相似的首选项的用户组。然后模型可以据此来为目标用户推荐项目。本文讨论推荐系统的一种重要中介关系的表现方法——标签。基于标签的推荐方法通过标签建立用户兴趣特征和项目特征之间的联系,为用户推荐与目标用户兴趣特征标签相似的项目。
4.4.1 游客画像
用户画像是从用户属性和用户行为中归纳出可读取运算的用户模型。为了为以下的推荐算法提供更准确的语义信息,本文建立游客画像的过程既是将游客信息标签化。首先将实验游客实地旅行之后发表的评论文本信息进行分词,然后对评论对象进行词频统计,为游客生成定量标签,最后构建一个游客画像的向量表示。游客画像的数学表达形式为U=(u1,u2,u3,…,ui,…,un),其中ui表示游客兴趣标签的权重,权重大小由游客兴趣标签出现的频率决定,频率越高,权重越大。由于景点分为正标签和负标签,所有游客画像同样有正画像和负画像,正画像是由该游客的所有好评得出,为该游客感兴趣的标签;负画像是由该游客所有差评得出,为该游客不喜欢的标签。
4.4.2基于标签的推荐模型
基于标签的推荐算法根据目标游客画像标签与候选景点画像的特征标签数据进行相似度计算比较,为目标游客推荐最可能感兴趣的几个景点。对于目标游客而言,当景点的旅游形象与该游客以往感兴趣的景点相似时,游客将来很可能对这些景点同样感兴趣。不同于协同过滤算法,基于标签的推荐算法不需要通过相似游客来推荐,即向目标游客推荐景点时不需要其他游客的数据,没有数据稀疏问题,因此本文尝试使用该方法向目标游客推荐景点。某游客曾经去过多个地区旅游并在携程网上发表了许多评论,在把好评和差评分开后,分别进行词频统计,获得游客正画像和负画像。将正画像与候选景点的正标签比对,找出相似度较高的景点,记为P 。同时将负画像与候选景点的负标签比对,找出相似度较高的景点,记为P-。那么最终的推荐清单即为P -(P ∩P-)。
4.4.3 推荐模型的应用举例
我们使用马蜂窝上爬取的某个旅游博主的游记数据为本次示例的数据源,该游客在马蜂窝上共发表了25篇游记,其中好评游记21篇,差评游记4篇。该游客的游记共有415条评论和68万以上的阅读量,并且在该游客的游记中没有关于本文所研究的9处南京的景点的相关内容,因此非常适合用来作为推荐示例。示例选取如下图所示。
图4-7 游客数据源
我们对好评和差评的游记分别进行了分词和去停用操作后,又对他们进行了词频统计的工作,这样做的目的就是将好评游记和差评游记中的主要影响因素找出来。以好评游记为例,,我们选取词频统计排名靠前的词语以列表的形式展示出来,经过人为统计即可获得该游客的正面画像。好评游记词频统计如下图所示。
图4-8 词频统计
由上图可以轻松看出,“自然”、“风景”、“美景”都可以归类为自然类别,因此在好评游记中“历史”和“自然”两类词语分别出现了11次和17次,那么该游客的正面画像即为“历史”、“自然”。同理,经过对差评游记的处理和词频统计,我们也得到了该游客的负面画像“费用”,共在游记中出现9次。至此我们已经获得了该游客的正面和负面画像,接下来就是用用户画像去和景点标签进行匹配,获得最终推荐结果。匹配过程示例如下图所示。
图4-9 匹配示例图
请支付后下载全文,论文总字数:18811字