一、项目简介
本项目是基于携程网中关于大唐不夜城评论的文本分析,项目中用到了Python、词频分析、词云图分析、kmeans聚类、LDA主题分析、情感分析、社会网络语义分析等。
二、实验过程
实验环境
Anaconda
Python3.9
2.1获取数据
数据目标是获取携程网中关于大唐不夜城景点的评论文本数据
由于该网站抓包不是很方便,于是我果断选择使用selenium自动化工具。该网站也不需要登录,直接可以访问这个页面并且可跳转下一页,最后我们使用CSV文件进行存储。
先导入第三方库
from time import sleep from selenium.webdriver.chrome.service import Service from selenium.webdriver import Chrome,ChromeOptions from selenium.webdriver.common.by import By import warnings import csv import random #忽略警告 warnings.filterwarnings("ignore")
创建我们的浏览器并准备好用来存储评论数据的csv文件
# 创建一个驱动 service = Service('./chromedriver.exe') options = ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation','enable-logging']) options.add_experimental_option('useAutomationExtension', False) # 创建一个浏览器 driver = Chrome(service=service,options=options) 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()
接下来就主要编写我们的main()函数,该函数主要就是访问页面获取评论标签元素,一页获取完点击下一页,并用创建的csv文件进行存储。
def main(): driver.get('https://you.ctrip.com/sight/xian7/130441.html') sleep(2) for i in range(109): comment_list = driver.find_elements(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() comment = comment.replace('\n','') csvwriter.writerow(('大唐不夜城',comment)) f.flush() print(comment) except: pass driver.find_element(By.CSS_SELECTOR,'li.ant-pagination-next>span').click() print(f'=====================第{i+1}页爬取完毕!=========================') sleep(random.random()*5)
评论一共有109页,大概也就1000条评论数据,运行截图如下:
数据已经准确就绪,下来我们将开始一一分析。
2.2情感分析
首先导入我们评论文本数据
使用snownlp情感分析模块进行情感打分
经过了上面的打分操作,现在已经有了每句话都情感分值及其情感类别。
接下来对情感分值和类别进行可视化展示
从结果看出评论主要都是积极评论占比88%,只有极少数的中性和消极评论,说明该景点真的很值得去!
接着我们编写一个画词云图的函数,该函数中的功能包括文本预处理、文本分词、去除停用词、词频统计、画出top10词频条形图、画出词云图。
画出积极评论的词云图,调用上面的函数,运行结果如下:
画出中性评论的词云图,调用上面的函数,运行结果如下:
画出消极评论的词云图,调用上面的函数,运行结果如下:
前面我们分别对积极、中性、消极评论进行了词云图分析,我们发现在消极评论中,最突出的问题就是人多拥挤,谁叫它是免费的景点呢,哈哈哈。
基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析(下):https://developer.aliyun.com/article/1434919