【文旅大模型应用-知识整理】景点评论数据的爬取和处理

【文旅大模型应用-知识整理】评论数据的爬取和处理

版本一:从html内容提取内容【百度百科】

1.1 爬取html内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 成功爬取大唐不夜城-百度百科静态网页html内容

import requests
import urllib
url1 = 'https://baike.baidu.com/item/'
key_word = (input())
lens = len(key_word)
key_word = urllib.parse.quote(key_word,encoding = 'utf-8', errors = 'replace')
headers = {
# 'wd':key_word,
# 'Host': 'https://baike.baidu.com/item/',
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
html = requests.get(url1+key_word,headers = headers)
print(url1+key_word)# 验证链接是否正确
html.encoding = html.apparent_encoding
fo = open("bigTangNoNightCity.txt",'wb')# 爬取百度百科的内容保存到本地中
fo.write((html.content))
print("写入文件成功")

1.2 把html清洗为文本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 成功把html内容提取为文本

from bs4 import BeautifulSoup

# 读取txt文件内容
with open('bigTangNoNightCity.txt', 'r', encoding='utf-8') as file:
html_content = file.read()

# 解析HTML内容
soup = BeautifulSoup(html_content, 'lxml')

# 提取文本
text = soup.get_text(separator='\n', strip=True)

# 保存清理后的文本
with open('datang_baike_cleaned.txt', 'w', encoding='utf-8') as file:
file.write(text)

print("文本清理完成,保存为 'datang_baike_cleaned.txt'")

1.3 把文本内容转换为xlsx格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 在kimi和ChatGPT的辅助下,将内容提取到xlsx文件中

import re
import pandas as pd

# 1. 文件路径定义
input_file = 'datang_baike_cleaned.txt'
output_file = '原始数据文件合集/Datang_Everbright_City_Info.xlsx'

# 2. 从文件中读取原始内容
with open(input_file, 'r', encoding='utf-8') as file:
raw_text = file.read()


# 3. 文本清洗函数
def clean_text(text):
# 去除 [数字] 格式的标记
cleaned_text = re.sub(r'\[\d+\]', '', text)
# 去除多余的换行和空格
cleaned_text = re.sub(r'\n+', '\n', cleaned_text).strip()
return cleaned_text

# 4. 清洗文本
cleaned_text = clean_text(raw_text)


# 5. 准备要写入 Excel 的数据
data = {
"大项": [
"历史沿革", "历史沿革", "历史沿革",
"景区布局",
"重要景点", "重要景点", "重要景点", "重要景点",
"文化活动", "文化活动",
"其他看点", "其他看点",
"开发与保护",
"相关文化",
"重要事件", "重要事件",
"价值意义", "价值意义", "价值意义",
"旅游信息", "旅游信息", "旅游信息", "旅游信息"
],
"小项": [
"初步建造", "改造发展", "",
"",
"贞观广场", "开元广场", "大雁塔南广场", "主题雕塑",
"节目演出", "其他活动",
"长安十二时辰主题街区", "西安音乐厅",
"",
"",
"重要荣誉", "热点事件",
"艺术价值", "社会价值", "文化价值",
"开放时间", "门票价格", "酒店住宿", "交通信息"
],
"内容": [
"20世纪90年代末,西安拟建曲江旅游景区,由中国工程院院士张锦秋规划设计曲江核心区“七园一城一塔”布局,其中“一塔”就是大雁塔,“一城”就是大唐不夜城。2002年8月,大雁塔北广场正式开建,拉开了大唐不夜城建设的序幕。2008年,西安市完成第四次城市发展规划,确定了大唐不夜城在西安文旅产业中的地位。同年12月初,大唐不夜城开始布局招商。2009年4月,大唐不夜城点亮工程启动。5月,大唐不夜城景观大道开始改造建设。次年9月26日,开元广场建成开放,开元盛世及武后行从两大主题雕塑落成,标志着大唐不夜城长2100米、宽500米的中央景观带全线贯通,展现了千年古都的历史命脉和文化轴线。",
"2018年按照“中国特色、地方特点、国际水平”的总体要求,充分挖掘城市文化底蕴,大唐不夜城整体以“唐”文化为主线,进行全面提升,构建了“一轴·两市·三核·四区·五内街”总体布局,形成观光游憩、文化休闲、演艺互动、特色餐饮、购物娱乐多位一体的发展模式。2018年6月26日,西安曲江大唐区域宣布将打造融文化、商业、旅游为一体的步行街。11月,中国31个省区市向商务部报送了包括大唐不夜城在内的128条重点培育的步行街。2018年底,商务部在中国启动了11条步行街改造提升试点,大唐不夜城成功入选。12月25日,大唐步行街正式开街。成功入选中国11条商业步行街改造提升试点后,按照商务部关于“中国特色、地方特点、国际水平”的总体要求,曲江新区对街区进行了全面提升,文商旅融合发展的特点日益明显。2019年1月29日,“西安年·最中国”活动核心区大唐不夜城现代唐人街开街盛典暨国家高品位步行街试点揭牌仪式举行。2020年2月21日,包含大唐不夜城在内的西安市室外开放式景区及户外公园全部开放。7月,大唐不夜城步行街入选首批中国示范步行街名单。2022年4月30日,“长安十二时辰”主题街区在西安大唐不夜城曼蒂广场正式开街,标志着历经2年多精心策划打造的中国首个沉浸式唐风市井生活街区向广大市民游客正式开放。近年来,大唐不夜城更以创建旅游休闲街区为核心,不断提升街区品质、丰富文化内涵、创新体验产品、优化消费业态、完善公共服务,致力于打造世界级文化IP旅游休闲街区。",
cleaned_text, # 将总的历史沿革内容放在此处
"大唐不夜城位于陕西省西安市雁塔区的大雁塔脚下,街区南北长2100米,东西宽500米,总建筑面积65万平方米。其北起大雁塔南广场,南至唐城墙遗址,东起慈恩东路,西至慈恩西路。该街区按照建设有中国特色、地方特点、国际水平步行街的总体要求,以国际化、人文化、特色化为目标,规划形成了大唐不夜城步行街“一轴·两市·三核·四区·五内街”的总体布局。一轴是指“大唐不夜城文化商业轴”;两市是指“贞观新风韵唐市、创领新时代都市”;三核是指“大雁塔广场景观文化核心、贞观文化广场时尚艺术核心、创领新时代广场休闲时尚核心”;四区是指“大雁塔盛唐景观人文风貌展示区、中华传统美食文化生活品鉴区、贞观国际艺术文化交流体验区、创领新时代都市休闲文化区”;五内街是指“慈恩镇——陕西风情小吃文化街、新乐汇——中华传统美食文化街、欧凯罗——潮流音乐酒吧文化街、温德姆—品味生活咖啡文化街、阳光城—SKP时尚青年艺术文化街”。大唐不夜城整体布局为线性布局,以大雁塔南广场到古城墙遗址之间的连线为轴线,分为五个功能区,即商业步行街、贞观广场、文化交流广场、庆典广场及唐城墙遗址公园。",
"贞观文化广场是大唐不夜城的核心部分,由西安大剧院、西安音乐厅、曲江美术馆和曲江太平洋影城四组文化艺术性建筑组成。该广场采取立体式设计,以地面层的四个下沉式广场把地面和地下的活动场所联系起来。贞观文化广场在总体设计中,四个主体建筑以正对大雁塔的南北轴线为空间对称关系,主体空间高度接近的电影院与美术展馆布置在用地的北部,两者的大屋顶均设计为重檐歇山;而音乐厅和大剧院布置在用地的南部,两者的大屋顶均设计为重檐庑殿。",
"开元广场是大唐不夜城中轴线的景观高潮,南北长161米,东西宽78米,面积约12200平米,其中旱喷泉约1000平米,绿化面积约1300平米。广场上设立了1组“开元盛世”群雕和8根LED灯蟠龙柱。广场上8根朱红LED蟠龙柱高20米,柱头直径8.9米,柱身直径2米,东西两侧各有四柱,取意为四方、四极、四周、四海,与八数相合,意为四面八方、四通八达,诠释了大唐不夜城的建筑美学,使得开元广场成为了一个露天宫殿。当LED灯柱在古城夜色中点亮,不夜城更加焕发出“不夜”之魅。",
"大雁塔南广场(玄奘广场)作为西安重要的佛文化主题空间,大雁塔南广场结合大慈恩寺传统建筑群营造兼具社会性与精神性的特色场所,呈现思想、精神、观念、文化和艺术的积累。该地段主题鲜明,尺度宜人,演绎着持续生长的本土文化,是容纳城市居民和外地游客公共活动的重要场所。广场基础设施配套完善,景观环境以纪念性开敞空间为主,连接大面积绿化和景观空间,提供了多样化的活动体验及视觉感受,是历史性与公共性并存的城市公共客厅。",
"万国来朝雕塑表现的就是大唐王朝四海成服,万国来朝的盛世景象。武后行从雕塑以唐代仕女画家张萱的《武后行从图》为蓝图,连接在贞观广场和开元广场之间,上承贞观之兴,下启开元之盛,完整地展示大唐盛世气象。唐历史文化浮雕柱位于武后行从雕塑两边的“唐历史文化浮雕柱”,共有24根,它们采用唐代建筑中斗拱的形式,将唐代48个重要的文化事件如“曲江游宴、丝绸之路、上元赏灯”等,以浮雕的形式展现,其中每个事件中的重要人物又以圆雕的形式予以表现,充分体现了大唐文化之勃兴和繁荣。“开元盛世”主题雕塑总高12.95米,最高一层基座上是4.59米高的“唐玄宗李隆基”。4.59米取意为九五之尊,李隆基站立在巨大的圆形龙壁前,帝王风范尽显。第二层是唐玄宗最器重的6位重臣及20个番邦使节。第三层42个乐俑手持各种乐器尽情演奏,壮美恢弘。整个雕塑群由78个人物组成,营造出一种大唐盛世百姓安居乐业的欢乐气氛。贞观纪念碑是不夜城的地标性雕塑,由李世民骑马像组成及周围的附属雕塑组成。中间,为李世民威武端跨高头大马之上,手抖缰绳欲勒马前行,意气风发;四周,号手、旗手各半的24人仪仗队、鼓手2人及文臣武将各3人紧密相随。碑体正面雕刻“贞观之治”四字,背面为贞观政要名录数百字。",
"大唐不夜城常态演出时间表包括诗歌艺术、花车斗彩、贞观之治、戏演壁画等节目,以及大雁塔水舞光影秀、再回长安等主题演出。各类演出在不同的展演时间在诗歌雕塑群内、团花广场、贞观之治雕塑群南侧、大唐文化柱、大雁塔北广场、开元广场主舞台等地举行。此外,还有开元广场不倒翁、北广场不倒翁、盛唐密盒、旋转的胡旋、华灯太白、乐舞长安、丝路曼舞、民俗荟萃舞台、长安故事舞台、追梦力量舞台等行为艺术和音乐舞台表演。",
"2019年春节,在为期66天的“西安年·最中国”活动期间,大唐不夜城举办了西商大会、丝绸之路国际电影节、国际模特大赛、国际时尚周、码农集市等时尚文化活动。2021年至2022年,大唐不夜城以唐文化、陕西特色文化及网红潮流文化为三大主题,研发并推出百余种文创产品,打造出“唐食坊”“唐礼坊”“大唐游艺区”等商业业态。大唐不夜城还创新推出了“盛世花开”“霓裳羽衣”等新的行为艺术和表演,全网总曝光率超25亿次;以“不倒翁小姐姐”为代表的系列IP人物火遍中国后,大唐不夜城相继推出“与李白对诗送肉夹馍”活动,点评赞过亿。",
"长安十二时辰主题街区为一所24000平方米的商业空间,注入了《长安十二时辰》电视剧相关IP与唐文化内容,建造长安城隐市坊的故事体系。街区全天8大类表演,百余场大型演艺。街区充分利用全唐场景,结合原影视剧情和长安城特有的烟火气息,设计NPC互动演绎,以偶遇触发式体验全新沉浸观感,首创游客全维度沉浸式消费体验。街区再现了剧中靖安司、通善坊、安仁坊等场景,同时还汇集了《霓裳羽衣舞》《万邦来朝》《大唐燕乐》等特色演艺。",
"不夜城内的西安音乐厅作为一个具有国际顶级水准的独立式场馆,由可容纳1300名观众的大型交响音乐厅及两个小型室内音乐厅、流行音乐厅构成。音乐厅内常举行大型音乐盛会和音乐赛事,可让人们领略世界顶级艺术。",
"大唐不夜城2002年启动建设,2009年9月28日,一期建成开放。建设初期以文化和旅游为主,是西安文化旅游的一张名片。经过多年的发展,周边开发建设不断完善,文商旅融合发展的特点日益明显。2018年,大唐不夜城对标国家5A级旅游景区标准,对街区硬件建设和基础设施配套全面改造升级,集中展现盛唐文化风貌,功能更加完善。在文旅融合方面,《再回大雁塔》《再回长安》等节目将街区的美食、建筑、演出、文创、科技融入到整个盛唐文化氛围中,打造大唐不夜城潮文创,开发了70多种文创产品,唐文化元素为潮玩手办赋予了丰富的文化内涵。街区在保护和还原盛唐文化原生态韵味的同时,不断加强文化创新,推出了“象棋对弈”“秦腔提线木偶”等行为艺术表演。街区入选全国11条商业步行街改造提升试点以来,按照商务部关于“中国特色、地方特点、国际水平”的总体要求,曲江新区对街区进行了全面提升。经过77天的提升改造,2019年元旦前全新亮相。大悦城、银泰等龙头商业相继落户,街区的商业氛围日益浓厚,已经成为西安引领新消费的标志性区域。",
"大唐不夜城是《长安十二时辰》的取景地,通济坊,范围在雁南二路以北,雁南一路以南。在电视剧播出后,陕西文化产业投资控股有限公司将“长安十二时辰主题街区”项目落地的目标瞄准了坐落在大唐不夜城核心区的曼蒂广场。如今长安十二时辰主题街区在大唐不夜城旁边。大唐不夜城也是《装台》的取景地,张嘉益演绎的“刁大顺”跟着大哥一家人聚餐的餐厅,就在大唐不夜城一家西安老字号——同盛祥,片头部分西安城墙永宁门的大场景,剧中西安护城河景区的镜头。《2024年中央广播电视总台春节联欢晚会》西安分会场设在大唐不夜城开元广场。",
"自建成后,大唐不夜城被国家部委确认为“国家旅游科技示范园区试点”“第一批国家级夜间文旅消费集聚区”“省级旅游休闲街区”,入选国家文化和旅游部产业发展司发布的“中国沉浸式产业数据库”、进入“中国沉浸式产业项目评选”中国40强、入选西安市2021年度文旅行业科技计划项目。2020年7月,大唐不夜城步行街入选首批中国示范步行街名单。2021年10月,西安市大唐不夜城步行街拟入选第一批国家级夜间文化和旅游消费集聚区名单。2023年1月,文化和旅游部发布2022年度文化和旅游最佳创新成果,由陕文投集团创新打造的“长安十二时辰+大唐不夜城”唐文化全景展示创新实践成果入选。",
"2019年11月,在大唐不夜城表演不倒翁行为艺术的冯佳晨因为一段“神仙牵手”的短视频在网络上走红。爆红之后,冯佳晨的粉丝从几个人增长至230多万人,她甚至还上了人民网和央视的《新闻周刊》。以“不夜城不倒翁”为代表的系列文化IP,仅2019年网络播放量达23亿次,成为带动人气和商气的全新IP。2019年8月,在大唐不夜城扮演“石头人”马旭阳在做凿“自己”的动作时,不小心用锤子砸到手上。有游客提醒他“砸手了”,一脸严肃的马旭阳瞬间“笑场”。视频一经上传,便在网络上收获有数万条点赞。大量游客专门前往西安大唐不夜城看他表演,并不断“挑逗”,只为博君一笑。2024年2月,西安大唐不夜城的演员刘江涛在台上表演节目时,手中的道具刀意外断裂,却坚持“无实物表演”,这一幕被游客拍摄下来后火遍全网。刘江涛称该节目名为《贞观之治》,自己扮演的是带刀侍卫。从“带‘刀’侍卫”秒变“丢‘刀’侍卫”,刘江涛当时的表情也被做成表情包火遍全网。走红网络后,刘江涛饰演其他角色的工作日常也被剪辑出来。因他曾在《诗歌艺术》中扮演船夫为“李白”撑船,网友笑称其“大刀换船桨,从四品直接被‘贬’到没品”。",
"大唐不夜城步行街区的仿唐建筑飞檐斗拱、层楼叠榭;华灯初上后灯火璀璨、游人如织。白居易笔下的雁塔题名、诗仙李白的醉酒吟诗、古诗古画中的簪花仕女、青史留名的房谋杜断等散落在史书典籍中的故事遗珠,在大唐不夜城通过现代舞蹈、真人演绎、现场互动等形式呈现于世人面前。千米长街一步一景,传统与时尚精彩碰撞、古老与现代相得益彰。",
"大唐不夜城的经营收入可观,且处于不断上涨状态。2019年,大唐不夜城接待市民游客达1.01亿人次,同比增长302.3%;营业收入达112.4亿,同比增长74%。2021年可统计口径数据恢复到2019年80%,总客流8000万人次,综合收入达85亿。消费增速全国第一,助力西安进入夜经济全国十强城市,夜经济景区影响力全国排名第一,全网总曝光量百亿,相继登上抖音全国热榜top1,微博全国热榜top1,总计接待中外媒体万余家,创造超1000余个就业岗位。",
"大唐不夜城聚焦中国传统历史文化,以盛唐文化为背景,提供给游客唐代建筑的视觉享受和唐风市井文化生活的沉浸式体验,即“观一场唐风唐艺、听一段唐音唐乐、演一出唐人唐剧、品一口唐食唐味、玩一回唐俗唐趣、购一份唐物唐礼”。在游览和体验中,增强了群众的“文化自信”。",
"全天", # 开放时间
"免费", # 门票价格
"西安威斯汀博物馆酒店位于曲江新区大雁塔南广场西南角,与大唐不夜城隔街相望,人文气息浓厚。酒店设计具有西安特色,立面采用深色的灰泥与石材;运用中国特色的坡屋顶和悬挑屋檐,同时将传统的复杂细节提炼转化为现代建筑的简洁线条。建筑外立面上深凹的洞口有节奏、有序列地转换,趣意盎然。西安豪享来温德姆至尊酒店坐落于西安曲江新区大唐不夜城的核心位置,大雁塔及众多风景名胜、国际购物中心、商业步行街近在咫尺。酒店距离西安国际会议中心及曲江国际会展中心仅5分钟车程。酒店将现代建筑艺术与中国传统建筑文化有机结合,有着565间奢华典雅的客房及套房、特色的全日制餐厅及本地特色美食。国际一流的会议设施更使得西安豪享来温德姆至尊酒店成为高标准公司会议及大型主题派对的首选之地。", # 酒店住宿
"大唐不夜城可乘坐地铁4号线在大雁塔站下车,步行即到。夜间地铁接驳线:1、北端408路区间地铁接驳线,由不夜城的最北端(大雁塔南广场)发车,接驳大雁塔地铁站(3号线、4号线)、北池头地铁站(3号线);2、中段146路区间地铁接驳线,由不夜城中段,长安十二时辰处(雁塔南路雁南一路口)发车,接驳纬一街地铁站(2号线);3、南端526路区间地铁接驳线,由不夜城最南端(雁塔南路雁南三路口、开元广场)发车,接驳电视塔地铁站(2号线)。" # 交通信息
]
}

# 6. 转换为 Pandas DataFrame
df = pd.DataFrame(data)

# 7. 将 DataFrame 写入 Excel 文件
df.to_excel(output_file, index=False)

# 8. 输出文件路径
print(f"数据已保存到: {output_file}")

附:

这只是小规模的数据,所以采取直接插入的方式

需要思考:当数据量变大,这种脚本的改进方式

版本二:对数据进行分析,生成图表

参考文章:

2.1 饼状图+说不出来什么图+词云图(生成了但无法显示)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# 导入依赖
import pandas as pd
import warnings

# 导入评论文本数据
data = pd.read_csv('comments.csv')
data.head()

# 使用snownlp情感分析模块进行情感打分
from snownlp import SnowNLP
import matplotlib.pyplot as plt

# 遍历每条评论进行预测
values = [SnowNLP(i).sentiments for i in data['用户评论']]

# 输出积极的概率,大于0.5积极的,小于0.5消极的
# myval保存预测值
myval = []
good = 0
mid = 0
bad = 0
for i in values:
if i >= 0.6:
myval.append("积极")
good += 1
elif 0.2 < i < 0.6:
myval.append("中性")
mid += 1
else:
myval.append("消极")
bad += 1
data['预测值'] = values
data['预测类别'] = myval
data.head()

# # 在控制台打印好评率等
# # ------------------------------------------
goodrate = good / (good + bad + mid)
print('好评率', '%.f%%' % (goodrate * 100)) # 格式化为百分比

midrate = mid / (good + bad + mid)
print('中评率', '%.f%%' % (midrate * 100)) # 格式化为百分比

badrate = bad / (good + bad + mid)
print('差评率', '%.f%%' % (badrate * 100)) # 格式化为百分比
# # ------------------------------------------


# 作图1:好评率差评率饼状图
# -------------------------------
y = values
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w', label=u'评价分值')
plt.xlabel('用户')
plt.ylabel('预测值')

# 让图例生效
plt.legend()

# 添加标题
plt.title('大唐不夜城-携程网评论-情感分析', family='SimHei', size=14, color='blue')
plt.show()
# -------------------------------



# 作图2
y = data['预测类别'].value_counts().values.tolist()
plt.pie(y,
labels=['积极', '中性', '消极'], # 设置饼图标签
colors=["#d5695d", "#5d8ca8", "#65a479"], # 设置饼图颜色
autopct='%.2f%%', # 格式化输出百分比
)
plt.show()


"""
一个画词云图的函数,
该函数中的功能包括文本预处理、
文本分词、去除停用词、词频统计、
画出top10词频条形图、画出词云图
"""

import collections
import re
import stylecloud
from PIL import Image
import seaborn as sns
from matplotlib import pyplot as plt
import jieba

sns.set(font='SimHei')


def draw_WordCloud(df, pic_name, color='white'): # 将默认背景色更改为白色
data = ''.join([item for item in df])

# 文本预处理:去除一些无用的字符只提取出中文出来
new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)
new_data = "".join(new_data)

# 文本分词
seg_list_exact = jieba.cut(new_data, cut_all=True)
result_list = []
with open('停用词库.txt', encoding='utf-8') as f: # 可根据需要打开停用词库,然后加上不想显示的词语
con = f.readlines()
stop_words = set()
for i in con:
i = i.replace("\n", "") # 去掉读取每一行的\n
stop_words.add(i)

for word in seg_list_exact:
if word not in stop_words and len(word) > 1:
result_list.append(word)
word_counts = collections.Counter(result_list)

# 调试信息
print("词云词语列表:", result_list[:10]) # 打印前10个词语

# 词频统计:获取前100最高频的词
word_counts_top = word_counts.most_common(100)
with open(f'{pic_name}词频统计.txt', 'w', encoding='utf-8') as f:
for i in word_counts_top:
f.write(str(i[0]))
f.write('\t')
f.write(str(i[1]))
f.write('\n')
print(word_counts_top)

# x = [item[0] for item in word_counts_top[:10]]
# y = [item[1] for item in word_counts_top[:10]]
# plt.bar(x, y)
# plt.title(f'{pic_name}Top10高频词')
# plt.xlabel('词语')
# plt.ylabel('频次')
# plt.show()

# 绘制词云图
stylecloud.gen_stylecloud(text=''.join(result_list[:]), # 提取500个词进行绘图
collocations=False, # 是否包括两个单词的搭配(二字组)
font_path=r'C:\Windows\Fonts\simhei.ttf', # 设置字体,参考位置为 C:\Windows\Fonts\,根据里面的字体编号来设置
size=8000, # stylecloud的大小
palette='cartocolors.qualitative.Bold_7',
# 调色板,调色网址 https://jiffyclub.github.io/palettable
background_color=color, # 背景颜色
icon_name='fas fa-circle',
# 形状的图标名称 蒙版网址:https://fontawesome.com/icons?d=gallery&p=2&c=chat...
gradient='horizontal', # 梯度方向
max_words=2000, # stylecloud可包含的最大单词数
max_font_size=150, # stylecloud中的最大字号
stopwords=True,
output_name=f'{pic_name}词云图.png') # 输出图片

# 打开图片展示
img = Image.open(f'{pic_name}词云图.png')
img.show()


print(data)
# 调用函数
draw_WordCloud(data[data["预测类别"] == "积极"]["用户评论"], "积极情绪")

1-评价饼状图

2-??图

3-词云图(理想效果)

4-词频统计图

版本三:爬取旅游网站的景点评论数据(以携程为例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# 成功爬取携程网关于大唐不夜城景点的评论

from time import sleep
from selenium.webdriver.edge.service import Service
from selenium.webdriver import Edge, EdgeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import warnings
import csv
import random

# 忽略警告
warnings.filterwarnings("ignore")

def main():
driver.get('https://you.ctrip.com/sight/xian7/1446.html') # 此处为景点的链接地址
sleep(2)
for i in range(200):
# 等待评论列表加载完成
comment_list = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.XPATH, '//*[@id="commentModule"]/div[5]/div/div[2]/div[2]'))
)

# 爬取评论内容
for item in comment_list:
try:
comment = item.find_element(By.XPATH, '.').text
comment = comment.strip().replace('\n', '')
csvwriter.writerow(('陕西历史博物馆', comment))
f.flush()
print(comment)
except:
pass

# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
sleep(2)

# 点击下一页按钮
try:
next_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, 'li.ant-pagination-next>span'))
)
retries = 3
for _ in range(retries):
try:
next_button.click()
break # 点击成功则跳出重试循环
except Exception as e:
print(f"点击失败,重试中... {_+1}/{retries}")
sleep(2) # 等待一段时间后重试
else:
print(f"第{i+1}页点击下一页失败,跳过该页。")
continue # 如果所有重试都失败,跳过该页

except Exception as e:
print(f"第{i+1}页点击下一页失败: {e}")
break # 如果点击下一页失败,退出循环

print(f'=====================第{i + 1}页爬取完毕!=========================')
sleep(random.random() * 5)


# 创建一个驱动
service = Service('./msedgedriver.exe') # Edge WebDriver 的路径
options = EdgeOptions() # 使用 EdgeOptions
options.use_chromium = True # Edge 浏览器基于 Chromium
options.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])
options.add_experimental_option('useAutomationExtension', False)
# 创建一个浏览器
driver = Edge(service=service, options=options) # 改为 Edge
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => false
})
"""
})
with open('原始数据文件合集/comments.csv', 'a', encoding='utf-8', newline='') as f:
csvwriter = csv.writer(f)
csvwriter.writerow(('景点', '用户评论'))
main()

使用注意事项:

运行之前要先下载msedgedriver.exe(用edge浏览器的话)

点击运行之后会弹出一个新的单独的edge浏览器界面进行自动的评论爬取

爬取当前页面结果会在控制台显示

需要保持“下一页”按钮在视觉范围内,因为脚本的原理就是查找“下一页”按钮并自动点击,继续爬取评论

版本四:读取和清洗csv中的数据

以华清宫为例

4.1 清洗数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import pandas as pd

# 读取CSV文件
df = pd.read_csv('原始数据文件合集/comments.csv')
# # 打印所有列名
print(df.columns)

# 读取负面词汇
with open('negative_words.txt', 'r', encoding='utf-8') as file:
negative_words = file.read().splitlines()

# 提取与"华清宫"相关的数据
df = df[df['景点'] == '华清宫']

# 打印提取后的数据前几行
print(df.head())

# 清洗数据:删除无关列(例如C1),并将剩余列合并成单个文本列
# df = df.drop(columns=['C1'])
df['text'] = df['用户评论']
df = df[['text']]

# 删除包含负面评价的行(可根据具体需求调整)
negative_words = ['后悔', '遗憾', '失望', '不好', '不值', '一般', '糟糕']
for word in negative_words:
df = df[df['text'].str.contains(word, na=False)==False]

# 将清洗后的数据保存为新的CSV文件
df.to_csv('cleaned_comments_华清宫.csv', index=False)

print("Success!")

4.2 将csv文件中部分内容提取到txt文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pandas as pd

# 读取CSV文件
csv_file_path = '华清宫/cleaned_comments_华清宫.csv' # 输入的CSV文件路径
txt_file_path = '华清宫/comments_华清宫.txt' # 输出的TXT文件路径

# 读取CSV文件,假设CSV文件只有一列,没有列名
df = pd.read_csv(csv_file_path, header=None)

# 将DataFrame转换为字符串,并保存到TXT文件
with open(txt_file_path, 'w', encoding='utf-8') as txt_file:
for item in df[0]:
txt_file.write(f"{item}\n")

print(f"CSV文件已成功转换为TXT文件,保存路径为: {txt_file_path}")
  • 运行效果:

将csv中的数据转换到txt中

  • 但是这样的数据只是相对整齐一点的评论数据,还没办法作为提供给模型进行中文问题生成的数据集
  • 于是借助能够分析长文本的大模型进行进一步整理(此处我选用kimi)

用kimi进一步整理过后的评论数据

  • 这个时候的评论通过使用大模型过滤,保留和整理成更有用的信息
  • 不过怎么进一步处理(在不进行人工cv的情况下)再提示一下数据质量还有待发掘……
  • 期待新的想法!!!

版本五:使用大模型生成一些问答对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
华清宫的历史有多悠久?
华清宫的开放时间是什么时候?
华清宫的门票价格是多少?
华清宫有哪些必看的景点?
华清宫和骊山是什么关系?
华清宫的温泉是否对外开放?
华清宫的《长恨歌》表演是什么时间?
华清宫有哪些餐饮设施?
华清宫的交通如何到达?
华清宫有哪些历史文化价值?
华清宫的温泉有什么特别之处?
华清宫的演出需要额外购票吗?
华清宫的游览大概需要多长时间?
华清宫内有没有导游服务?
华清宫的索道是否值得一坐?
华清宫有哪些适合儿童的游玩项目?
华清宫的长恨歌表演在哪里可以购买票?
华清宫的五间厅是什么?
华清宫的兵谏亭有什么历史故事?
华清宫的骊山晚照是怎么一回事?
华清宫的御膳苑有什么特色美食?
华清宫的九龙湖有什么特色?
华清宫的芙蓉湖可以划船吗?
华清宫的唐梨园遗址博物馆有哪些展品?
华清宫的飞霜殿和万寿殿有什么来历?
华清宫的环园和禹王殿有哪些看点?
华清宫的老母殿和老君殿供奉的是谁?
华清宫的烽火台可以上去吗?
华清宫的石瓮寺和遇仙桥有什么传说?
华清宫的骊山索道的运行时间是?
华清宫的骊山有哪些推荐的登山路线?
华清宫的骊山索道票价是多少?
华清宫的骊山有哪些文化遗迹?
华清宫的骊山可以骑马上山吗?
华清宫的骊山有哪些自然景观?
华清宫的骊山可以露营吗?
华清宫的骊山有哪些野生动植物?
华清宫的骊山可以骑自行车上山吗?
华清宫的骊山有哪些推荐的拍照点?
华清宫的骊山有哪些推荐的徒步路线?
华清宫的骊山有哪些推荐的观景台?
华清宫的骊山有哪些推荐的餐厅?
华清宫的骊山有哪些推荐的住宿地点?
华清宫的骊山有哪些推荐的旅游纪念品?
华清宫的骊山有哪些推荐的户外活动?
华清宫的骊山有哪些推荐的旅游季节?
华清宫的骊山有哪些推荐的旅游攻略?
华清宫的骊山有哪些推荐的旅游小贴士?
华清宫的骊山有哪些推荐的旅游路线?
华清宫的骊山有哪些推荐的旅游体验项目?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
- 【问题】华清宫的历史有多悠久?
- 【回答】华清宫有着超过3000年的皇家园林史和6000年的温泉利用史,是历代帝王的游幸之地。

- 【问题】华清宫的开放时间是什么时候?
- 【回答】华清宫的开放时间一般为早上8:00至下午5:00,具体时间可能会根据季节调整。

- 【问题】华清宫的门票价格是多少?
- 【回答】华清宫的门票价格为120元/人,具体价格可能会有变动,建议提前查询。

- 【问题】华清宫有哪些必看的景点?
- 【回答】必看景点包括唐御汤遗址、五间厅、九龙湖、芙蓉湖以及骊山等。

- 【问题】华清宫和骊山是什么关系?
- 【回答】华清宫位于骊山脚下,两者共同构成了华清宫景区。

- 【问题】华清宫的温泉是否对外开放?
- 【回答】华清宫的温泉部分对外开放,游客可以体验泡脚等服务。

- 【问题】华清宫的《长恨歌》表演是什么时间?
- 【回答】《长恨歌》表演通常在晚上举行,具体时间需根据景区公告。

- 【问题】华清宫有哪些餐饮设施?
- 【回答】华清宫内有御膳苑等餐饮设施,提供各类餐饮服务。

- 【问题】华清宫的交通如何到达?
- 【回答】可以乘坐地铁9号线到达华清池站,然后步行或乘坐公交到达。

- 【问题】华清宫有哪些历史文化价值?
- 【回答】华清宫是唐代皇家园林的代表,见证了唐玄宗与杨贵妃的爱情故事以及西安事变等重大历史事件。

- 【问题】华清宫的温泉有什么特别之处?
- 【回答】华清宫的温泉以水质纯净、温度适宜、富含多种矿物质而著称。

- 【问题】华清宫的演出需要额外购票吗?
- 【回答】是的,华清宫的《长恨歌》等演出需要额外购票。

- 【问题】华清宫的游览大概需要多长时间?
- 【回答】建议安排至少半天到一天的时间游览华清宫。

- 【问题】华清宫内有没有导游服务?
- 【回答】华清宫内有专业的导游服务,也可以租借电子导游设备。

- 【问题】华清宫的索道是否值得一坐?
- 【回答】骊山索道可以提供独特的视角,如果时间允许,值得体验。

- 【问题】华清宫有哪些适合儿童的游玩项目?
- 【回答】华清宫有丰富的历史文化可以学习,也有自然景观可以探索,适合亲子游。

- 【问题】华清宫的长恨歌表演在哪里可以购买票?
- 【回答】可以在华清宫景区售票处或官方网站上购买《长恨歌》的演出票。

- 【问题】华清宫的五间厅是什么?
- 【回答】五间厅是西安事变时蒋介石的居住和办公地点。

- 【问题】华清宫的兵谏亭有什么历史故事?
- 【回答】兵谏亭是西安事变时蒋介石被扣留的地方,见证了重要的历史时刻。

- 【问题】华清宫的骊山晚照是怎么一回事?
- 【回答】"骊山晚照"是著名的"关中八景"之一,指的是夕阳下骊山的美景。

- 【问题】华清宫的御膳苑有什么特色美食?
- 【回答】御膳苑提供具有陕西特色的美食,如凉皮、肉夹馍等。

- 【问题】华清宫的九龙湖有什么特色?
- 【回答】九龙湖以雕刻精美的九龙石柱和清澈见底的池水闻名。

- 【问题】华清宫的芙蓉湖可以划船吗?
- 【回答】芙蓉湖提供划船服务,游客可以在湖上泛舟。

- 【问题】华清宫的唐梨园遗址博物馆有哪些展品?
- 【回答】唐梨园遗址博物馆展示了唐代梨园文化和相关文物。

- 【问题】华清宫的飞霜殿和万寿殿有什么来历?
- 【回答】飞霜殿和万寿殿是华清宫的标志性建筑,与唐玄宗和杨贵妃的故事有关。

- 【问题】华清宫的环园和禹王殿有哪些看点?
- 【回答】环园和禹王殿展示了唐代园林建筑和大禹治水的传说。

- 【问题】华清宫的老母殿和老君殿供奉的是谁?
- 【回答】老母殿供奉的是女娲,老君殿供奉的是老子。

- 【问题】华清宫的烽火台可以上去吗?
- 【回答】烽火台是骊山的一处景点,游客可以登上烽火台俯瞰周边景色。

- 【问题】华清宫的石瓮寺和遇仙桥有什么传说?
- 【回答】石瓮寺和遇仙桥与一些民间传说和历史故事相关,具体故事建议请导游讲解。

- 【问题】华清宫的骊山索道的运行时间是?
- 【回答】骊山索道的运行时间一般与景区开放时间一致,具体需咨询景区。

- 【问题】华清宫的骊山有哪些推荐的登山路线?
- 【回答】推荐登山路线包括至烽火台、老母殿、老君殿等,可根据体力选择。

- 【问题】华清宫的骊山索道票价是多少?
- 【回答】骊山索道的票价为单程30元,往返60元。

- 【问题】华清宫的骊山有哪些文化遗迹?
- 【回答】骊山有烽火台、老母殿、老君殿等文化遗迹。

- 【问题】华清宫的骊山可以骑马上山吗?
- 【回答】骊山提供骑马服务,游客可以选择骑马上山。

- 【问题】华清宫的骊山有哪些自然景观?
- 【回答】骊山有丰富的自然景观,包括山林、溪流、岩石等。

- 【问题】华清宫的骊山可以露营吗?
- 【回答】骊山目前没有官方的露营区域,不建议擅自露营。

- 【问题】华清宫的骊山有哪些野生动植物?
- 【回答】骊山有多样的野生动植物,具体种类需要实地观察。

- 【问题】华清宫的骊山可以骑自行车上山吗?
- 【回答】骊山的山路较陡峭,不建议骑自行车上山。

- 【问题】华清宫的骊山有哪些推荐的拍照点?
- 【回答】推荐的拍照点包括烽火台、老母殿、骊山晚照等。

- 【问题】华清宫的骊山有哪些推荐的徒步路线?
- 【回答】推荐的徒步路线包括至烽火台、老母殿、石瓮寺等。

- 【问题】华清宫的骊山有哪些推荐的观景台?
- 【回答】推荐的观景台包括烽火台、老母殿观景台等。

- 【问题】华清宫的骊山有哪些推荐的餐厅?
- 【回答】骊山上的餐厅较少,建议在山下用餐或自备食物。

- 【问题】华清宫的骊山有哪些推荐的住宿地点?
- 【回答】骊山附近有多家酒店和民宿可供选择。

- 【问题】华清宫的骊山有哪些推荐的旅游纪念品?
- 【回答】推荐购买与华清宫历史文化相关的纪念品,如书籍、工艺品等。

- 【问题】华清宫的骊山有哪些推荐的户外活动?
- 【回答】推荐的户外活动包括登山、徒步、摄影等。

- 【问题】华清宫的骊山有哪些推荐的旅游季节?
- 【回答】骊山四季皆宜,春季和秋季气候宜人,是最佳旅游季节。

- 【问题】华清宫的骊山有哪些推荐的旅游攻略?
- 【回答】建议提前规划好游览路线,避开人流高峰,合理安排时间。

- 【问题】华清宫的骊山有哪些推荐的旅游小贴士?
- 【回答】建议穿着舒适的衣物和鞋子,携带足够的水和食物,注意防晒。

- 【问题】华清宫的骊山有哪些推荐的旅游路线?
- 【回答】推荐的旅游路线包括华清宫-骊山-兵谏亭-烽火台等。

- 【问题】华清宫的骊山有哪些推荐的旅游体验项目?
- 【回答】推荐的体验项目包括泡温泉、观看《长恨歌》演出、骊山索道等。
  • 下一步计划是通过这些问题,再进一步延伸出更多的相似问题,组建问答信息库
  • Copyrights © 2024-2025 brocademaple
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信