共计 7602 个字符,预计需要花费 20 分钟才能阅读完成。
通宵灯火人如织,一派歌声喜欲狂。新冠“乙类乙管”的施行加上春节假期的到来,使得人们的出行激情空前低落。依据中国游览研究院的考察显示,23 年春节假期全国国内游览出游达到了 3.08 亿人次,同比增长 23.1%,期间游览支出达 3758.43 亿元。以杭州西湖景区为例,该景区在春节期间款待游客 292.86 万人次,数量近上年的 4 倍。各大景区热闹非凡、游客川流不息的新闻也成为了人们对 23 年春节独特的回顾。
因为先前的新冠风控,许多景区在财政和园区治理方面经验了难熬的两年。在游客反馈方面,因为人次过少,景区非常容易陷入无奈对游客需要进行精确判断的窘境。理解游客的实在感触和评估,并依据这些信息对景区硬件、软件、治理等进行降级,是景区应答暴涨的游客需要和期待最无效的解决方案之一。
面对后疫情时代下,游览行业逐步迈向复苏,景区该如何把握机会,通过晋升服务来满足游客需要呢?基于以上背景,咱们决定建设这样一个实验性我的项目,让数据来通知大家答案。
我的项目背景与构造
寰球旅游业权威钻研机构 PhoCusWright 指出,公众对于景区的点评值得被加以分析与使用,能够为游览企业带来微小的价值。很多景区治理部门因为对游客需要的误会、信息技术的落后、或是相干反馈部门的缺失,对于网络上的评论并未做到无效的收集与剖析。在进入大数据时代后,一些适应了新型数据平台的景区治理部门通过在网络上收集与景区相干的评论,并对这些数据进一步剖析来重点调整、降级景区中让游客在意的局部。其中就波及了对各大游览点评网站中景点评论的演绎总结,包含对游客类别的统计和评论文本信息的建模与剖析。
游览网站的品种泛滥,但商业价值的侧重点会有所不同。猫途鹰(TripAdvisor)是一款侧重于记录用户旅行数据的国际性游览网站,领有着数十亿条国内外实在旅行者的点评和倡议。许多游客在出行前会在该平台查问目的地酒店、餐厅和景点的相干点评,多而全的点评信息不仅能帮忙旅客做出出游决定,也是景区收集游客反馈的好渠道。
本我的项目以热门景点“上海外滩”为例,采集猫途鹰网站上与该景点相干的评论,查看随着工夫与出行政策的变动,国内外游客在出游形式和态度上的转变,联合 NLP(自然语言解决)技术,开掘评论中值得借鉴的意见和倡议,寻找游客对景点需要的趋势。总体的解决方案构造如下:
- 确定数据起源
- 数据采集
- 数据入库
- 数据荡涤
- 探索性数据分析
- 数据建模
- 数据洞察
我的项目步骤解析
1. 确定数据起源
首先,咱们确定应用来自猫途鹰中文版网站(www.tripadvisor.cn)和国际版网站(www.tripadvisor.com)截至 2023 年 2 月 20 日的数据。重点关注旅游者对“上海外滩”这个景点的中英文评论,收集来自世界各地的评论有助于晋升景区的剖析维度,让决策更具包容性,这也是咱们抉择猫途鹰这个国际化游览平台的起因。
2. 数据采集
在对网页抓取工具做了深度评估、对网页数据和构造的初步理解后,咱们决定应用 Selenium 进行网页文本数据的抓取。依据评论格局的特点,咱们能够抓取的信息如下:
- 用户
- 用户所在地
- 评分
- 点评题目
- 到访日期
- 旅行类型
- 具体点评
- 撰写日期
留神,对于中文评论的抓取,咱们把用户所在地锁定至城市,而对于英文评论,用户所在地的抓取会具体至国家和城市。最终,咱们执行的网页抓取程序大抵能够分成两个步骤:
第一步:发送申请,应用 Selenium 操作浏览器找到指定景点的评论页面
第二步:进入评论页面,抓取评论数据
因为中文评论的数量远少于英文评论,为了保持数据总量的一致性,咱们采集了中文评论的全量数据(1710 条,时间跨度 2009-2022 年)和英文评论的局部数据(2000 条,时间跨度 2018-2022 年)。如果大家想从残缺的工夫线维度比照中英文评论,能够自行获取更多英文评论数据,在本我的项目中咱们就不多加赘述了。
3. 数据入库
在采集结束评论数据后,咱们能够将数据存进数据库,以便数据分享,进行下一步的剖析与建模。以 PieCloudDB Database 为例,咱们能够应用 Python 的 Postgres SQL 驱动与 PieCloudDB 进行连贯。在《PieCloudDB Database 云上商业智能的最佳实际》中,咱们具体介绍了 PieCloudDB 的内部连贯形式,如有需要请参考这篇 技术博文。
咱们实现数据入库的形式是,在获取了评论数据并整合为 Pandas DataFrame 构造后,借助 SQLAlchemy 引擎将该数据通过 psycopg2 上传至数据库。因为中英文的文本剖析技巧略有不同,所以咱们将中英文数据寄存在两张表中。最终,咱们能够在 PieCloudDB 中查看如下两张源数据表构造:
中文表
英文表
4. 数据荡涤
数据荡涤是指对反复或多余的数据筛选和革除,同时残缺地补充失落的数据,纠正或删除谬误的数据,最初整顿成咱们能够进一步解决和应用的数据。在这里,咱们会对数据进行空值填充和类型转换。
- 空值填充:中文表中的 trip_type(旅行类型)这一列存在 807 个空值,咱们应用“未知”文本填充;英文表中 trip_type(旅行类型)的 405 个空值也是同样的操作,而对于 location_city(所在地城市)和 location_country(所在地国家)这两个变量,咱们通过手动检索来辨认误填、漏填和错位的状况,而后修改或补齐信息。
- 类型转换:中文表中的 rating(评分)这一列数据类型不匹配,咱们将其转换成便于后续计算的 int 类型。
因为数据是依照标准的数据结构采集的,所以数据荡涤局部绝对简略。接下来,咱们就能够用初步荡涤后的数据做一些探索性剖析。
5. 探索性数据分析
咱们应用 BI 工具 Tableau 内部接入 PieCloudDB,具体步骤请参考 这里。为了将中英文评论数据可视化,咱们绘制了如下两张动态化的仪表板:
中文仪表板
英文仪表板
以中文评论仪表板为例,咱们能够通过右侧的评论工夫筛选器来调节整个仪表板的数据应用范畴,上图就是显示了近十年的中文评论数据状况。咱们将评分划分了三个等级:好评(4-5 分)、中评(3 分)和差评(1-2 分),并将评论数量的散布细分至每一年的每个季度。通过探索性数据分析,咱们总结了以下几点可用信息:
- 自疫情(2019 年底)以来,评论数量急剧下降,阐明疫情对游客的出行影响重大。
- 应用该平台的用户所在地次要集中在上海、中国台湾、中国香港、江苏等地区,也正是参观上海外滩景点的次要华人游客起源。
- 近十年来,大家更偏向于结伴旅行,单独旅行的占比也在逐年减少。
- 各地区对上海外滩这个景点的评估总体很高,来自重庆的游客评估绝对偏低。
- 咱们认为 trip_type(旅行类型)存在大量空值的起因大概率是平台的降级,在 2013 年 6 月左右给用户减少了旅行形式的抉择性能。因为通过调节工夫筛选器,咱们发现在 2013 年 6 月以前,所有评论均为未知旅行类型,在此之后才有其它旅行类型的呈现。
- 游览从业者能够重点关注呈现差评的年份和季度,将差评的评论单拉进去,进行深度剖析。
英文评论仪表板的信息提炼形式也十分相似,这里就不反复赘述了。比照中英文语言使用者的游客,咱们发现了一个显著的差别点:参观上海外滩的英文游客更偏向于情侣游(couples),国内游客更偏向于结伴旅行(friends)和单独旅行(solo)。
6. 数据建模
在对数据有个初步的理解后,咱们就能够进行更高阶的建模剖析了。这里,咱们尝试了多种分析方法:emoji 剖析、分词关键词、文本情感剖析、词性词频剖析、主题模型文本分类。对于模型而言,文字并非无效输出,咱们须要将文本信息数字化,再将数字化后果传递给模型,输入后果。留神,因为中英文的自然语言解决是两种体系,所以咱们会抉择各体系中更为成熟的工具去应用。
- emoji 剖析
首先,咱们发现有些评论中会夹杂多种语言,当剖析重点是中文评论时,咱们以句为单位,筛选掉非中文的文本。同样,侧重点是英文评论时,也是相似的操作。与此同时,评论中还会夹杂 emoji 表情,因为年老用户的 emoji 应用频率越来越高,所以咱们决定把这类文本从评论文本中分离出来,从中文评论中失去这样一个 emoji 的列表:
从英文评论中又失去了以下 emoji 的列表:
之后,咱们会联合评论的正负向情感对 emoji 进一步剖析。
- 分词关键词
其次,咱们须要对每个文本进行分词,并对词性进行标注。中文评论局部应用的 Python 库为 jieba,是最受欢迎的中文分词组件之一,蕴含应用 Viterbi 算法新词学习的能力。它领有多种分词模式,其中 paddle 模式利用了 PaddlePaddle 深度学习框架,训练序列标注(双向 GRU)网络模型实现分词。为了判断哪类分词形式更适宜,咱们选取数据中的评论样本进行测试,最终咱们选定了精准模式来做分词。
举个例子,“外滩矗立着 52 幢格调迥异的古典振兴大楼,素有外滩万国修建博览群之称,是中国近现代重要史迹及代表性修建,上海的地标之一,1996 年 11 月,中华人民共和国国务院将其列入第四批全国重点文物保护单位。”评论通过分词解决后,返回如下后果:外滩 / 矗立 / 着 / 52/ 幢 / 格调 / 迥异 / 的 / 古典 / 振兴 / 大楼 /,/ 素有 / 外滩 / 万国 / 修建 / 博览 / 群之称 /,/ 是 / 中国 / 近现代 / 重要 / 史迹 / 及 / 代表性 / 修建 /,/ 上海 / 的 / 地标 / 之一 /,/ 1996/ 年 / 11/ 月 /,/ 中华人民共和国国务院 / 将 / 其 / 列入 / 第四批 / 全国 / 重点 / 文物保护 / 单位 /。
Jieba 中蕴含两种更高阶的用来计算关键词的算法:TF-IDF 和 TextRank。其中 TF-IDF 作为词袋模型(Bag of Word)也常常被用来作为将文字内容数字化的算法之一。因为这两种算法自带清理模块,咱们间接应用了原文本而并非去除了停用词的语料。
基于 TF-IDF 和 TextRank 算法的前 20 个关键词别离如下,能够看到关键词的权重排序上略有不同:
英文 NLP 中最当先的平台之一便是 NLTK(Natural Language Toolkit)。NLTK 领有 50 个语料库和词汇材料,开发了多种如分词、情感剖析、标记、语义推理等语言解决性能。因而在解决英文评论时,咱们抉择 NLTK 来解决英文语料。在分词的过程中,各个词会同步进行词性标注。
- 文本情感剖析
支流的中文文本情感分析模型有两种:应用经典机器学习贝叶斯算法的 SnowNLP 和应用 RNN 的 Cemotion。SnowNLP 和 Cemotion 的返回值都在 0-1 之间。SnowNLP 返回值越靠近 0 则越负向,越靠近 1 则越正向;而 Cemotion 返回的是文本是正向的概率。在测试过程中,咱们发现 SnowNLP 在计算速度上更快,但精确度无限;Cemotion 尽管速度慢,但精准度更高。因而,联合咱们的数据量,在本我的项目中咱们将保留 Cemotion 的后果。留神,两种算法都蕴含了分词等性能,只需输出文本信息即可取得情感偏向后果。最初,在 1710 条中文评论中,负向情感偏向的评论有 117 条(占比 7.19%),正向情感的有 1593 条(占比 92.81%)。
对于英文评论的情感剖析,也是相似的操作,但咱们抉择了更适宜英文语料的工具 TextBlob(NLTK 的包装器模式)。最终,在 2000 条英文评论中,负向情感偏向的评论有 50 条(占比 2.5%),正向情感的有 1950 条(占比 97.5%)。
- 词性词频剖析
在中文分词的根底上,咱们还做了词性的标注,以名词为例,jieba 会将名词进一步细分为一般名词、地名、人名和其余专名。咱们依照以下形式将 jieba 分词后的词语归类为名词、动词和形容词三类:
- 名词(n):n,nr,ns,nt,nz
- 动词(v):v,vn
- 形容词(a):a
和中文评论相似,咱们依照以下形式将 nltk 分词后的英文单词做了如下归类:
- 名词(n):NN,NNS,NNP,NNPS,FW
- 动词(v):VB,VBD,VBG,VBN
- 形容词(a):JJ,JJR,JJS
而后,从多个维度对词语进行词频统计,别离是:情绪偏向、词性、评论年份、评论月份。在这过程中,为了进一步理解游客们对上海外滩的探讨内容,咱们将中英文语料中的名词、动词和形容词别离制作了词频词云。从下图能够看到,无论是中文还是英文的语料,占比拟高的词在意义上十分相近,两种语言的词云后果很相似。
中文
英文
- 主题模型文本分类
为了丰盛文本剖析的档次,咱们还应用主题模型(Topic Modelling)对语料进行无监督学习,依据语义将相似的文本划为一组,对评论进行分类。主题模型次要有两类:pLSA(Probabilistic Latent Semantic Analysis)和 LDA(Latent Dirichlet Allocation),LDA 是基于 pLSA 算法的延长,使得模型能够适应新的文本。这里,咱们应用了 Python 的 Genism 工具库来辨认中英文文本的语意主题。
以 LDA 为分类器的 2 类主题的中文单词散布为:
(0, ‘0.012“ 夜景 ” + 0.011“ 修建 ” + 0.011“ 人 ” + 0.010“ 都 ” + 0.009“ 去 ” + 0.009“ 很 ” + 0.009“ 早晨 ” + 0.008“ 十分 ” + 0.006“ 黄浦江 ” + 0.006“ 中央 ”‘)
(1, ‘0.021“ 很 ” + 0.021“ 去 ” + 0.019“ 人 ” + 0.015“ 都 ” + 0.012“ 夜景 ” + 0.010“ 早晨 ” + 0.010“ 修建 ” + 0.008“ 看 ” + 0.007“ 感觉 ” + 0.007“ 很多 ”‘)
咱们能够看出,后果并没有太大区别。事实上,在建模过程中,很多模型的体现并不会像人们预期的一样好。不过由此也能够看出,基本上中文评论并没有突出的类别,游客根本以旅行景观和修建为主,并且旅行工夫大多为早晨。
同样的,咱们也对英文评论进行了主题模型的文本分类,与中文评论相似,英文评论的分类并没有很突出的类别。从最初的分类后果中能够看出,英文评论大抵能够分成三类:夜景与修建、夜景与黄浦江景色、夜景与灯光秀,游客对上海外滩的关注重点是夜景。
以 LDA 为分类器的 3 类主题的英文单词散布为:
(0, ‘0.027“view” + 0.020“night” + 0.019“building” + 0.017“river” + 0.015“walk” + 0.014“great” + 0.011“beautiful” + 0.010“see” + 0.010“place” + 0.009“light”‘)
(1, ‘0.025“view” + 0.022“night” + 0.016“place” + 0.016“river” + 0.015“see” + 0.013“walk” + 0.013“building” + 0.012“light” + 0.011“visit” + 0.010“day”‘)
(2, ‘0.022“night” + 0.021“view” + 0.017“light” + 0.016“building” + 0.015“see” + 0.014“river” + 0.013“place” + 0.011“day” + 0.011“must” + 0.011“great”‘)
7. 数据洞察
在数据建模的根底上,针对中文评论,咱们将情感偏向、emoji、评论工夫、词性、评分和旅行类型这些变量的关系可视化,绘制了如下动态化的仪表板:
咱们能够通过右侧的评论工夫、情感偏向、词性筛选器来调节整个仪表板的数据应用。从仪表板的六张图中,咱们产生了很多数据洞察和倡议,心愿对于游览行业的工作者来说,也有肯定的借鉴意义:
- emoji 的应用也是掂量情感偏向的一个指标,能够反映一些被忽视的状况,比方就上海外滩这个景点来说,“⛈”和“🍃”反映了下雨刮风对游客评估的影响。
- 2021 年的负向情感占比最高,倡议着重查看负向情感占比高的期间,甚至能够细分到季度和月份。
- 各类词语(名词、形容词、动词)的应用频率与情感偏向也无关,比方产生负向情绪时通常会应用哪些词语,从中能够发现景点设施、服务的一些问题。
- 不同旅行类型(单独游览、结伴旅行、商务行等)的游客对景点评估的情感偏向也略有不同,倡议景点能够关照到各种类游客的需要。
- 最初也是最重要的一点,能够关注评分和情感偏向重大不符的例子,尽管情感偏向的判断不是 100% 精确,但在某种意义上能够反映评估的主观水平。
举个例子,对于以下这条评论,尽管评分只有 1,然而模型判断的情感偏向是正向的。通过仔细阅读,发现的确是一条投诉景点的评论,游客的打分与评论不匹配,阐明评分低不肯定是景点的问题,可能是游客的评分不够主观。
再举一个例子,对于以下评论,尽管给出了 5 分的高分,但情感偏向辨认为负向。咱们查看点评后发现,游客对于人太多、应用婴儿推车不不便等方面进行了反馈,的确存在一些负向情绪,阐明游客打高分的同时也可能提出问题。
对于英文评论的建模后果,咱们也能够应用相似的可视化剖析流程,这里就不反复赘述步骤了。最初,咱们还综合比照了中英文评论。整体而言,中外游客对于上海外滩的旅行印象趋同,风景、修建、灯光秀等关键词都频繁地呈现在评论中,但从细节上来比照,中外游客的评论还是有以下这些差别:
- 外国游客中,除未提供旅行类型信息的人外,以情侣或结伴的多人出游为主,而国内游客近年来单独旅行的占比会更高。
- 外国游客对景点的整体评分会比中国游客高,并且模型断定的情感偏向也更正向。
- 外国游客对上海外滩的景色与修建留下了深刻印象,由此衍生的评论大多数是好评,但和中文评论相比,对于人文方面的评论(如物价、设施、与当地人或服务业接触的感触)要少许多。
- 中文评论会十分间接地指出除风光、修建以外的感触,如公共卫生、便当设施、服务质量等问题。
- 中文评论更偏爱应用 emoji,且会呈现在各种情感偏向中,而外国游客应用 emoji 绝大多数是为了表白正向情感。
我的项目论断
在上述数据迷信的流程中,探索性剖析步骤率领咱们理解和可视化数据,而数据建模步骤则在此基础上,将文本数据抽丝剥茧,帮助咱们发现数据深层的含意。如果咱们只看统计的指标性数据,而疏忽了文本中常带有发表者的集体情感偏向,就会使最终剖析的后果不够主观,继而损失了很多发表者的宝贵意见。数据建模在整个解决方案中不是必须项但却是加分项,能够极大水平地晋升数据分析的深度,开掘数据外在的价值,造成有用的数据洞察从而辅助决策。如果大家对本我的项目中数据采集、数据清理和数据建模的原理和代码实现感兴趣,能够关注 Data Science Lab 的后续博文。
参考资料:
- 戴斌 | 春节游览市场高开 全年游览经济稳增
- 西湖景区春节接待游客 292.86 万人次
- Scrapy Vs Selenium Vs Beautiful Soup for Web Scraping
- Extract Emojis from Python Strings and Chart Frequency using Spacy, Pandas, and Plotly
- Topic Modeling with LSA, PLSA, LDA & lda2Vec
本文中局部数据来自互联网,如若侵权,请分割删除