基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析(上)

简介: 基于词云图+Kmeans聚类+LDA主题分析+社会网络语义分析对大唐不夜城用户评论进行分析

一、项目简介


       本项目是基于携程网中关于大唐不夜城评论的文本分析,项目中用到了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

目录
相关文章
|
2天前
|
数据可视化 数据挖掘
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
10 2
|
9天前
|
机器学习/深度学习 数据可视化 测试技术
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
21 0
|
10天前
|
Python 数据可视化 索引
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
24 0
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
|
10天前
|
机器学习/深度学习 算法 数据可视化
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
17 0
用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析3
|
10天前
|
存储 算法 前端开发
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
32 0
|
10天前
|
数据可视化 网络可视化
R语言混合图形模型MGM的网络可预测性分析
R语言混合图形模型MGM的网络可预测性分析
11 0
|
11天前
|
算法 定位技术 Windows
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
16 4
|
11天前
|
机器学习/深度学习 资源调度 数据可视化
使用Python和Keras进行主成分分析、神经网络构建图像重建
使用Python和Keras进行主成分分析、神经网络构建图像重建
13 1
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
43 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真