机器学习-LDA--景区评论分析 ipython

本文通过Python进行机器学习中的LDA主题分析,对景区评论数据进行词频统计和模型评估,详细代码和数据集可在指定链接获取。
摘要由CSDN通过智能技术生成
#导入所需基本包
import pandas as pd
import numpy as np
# 导入扩展库
import re                           # 正则表达式库
import jieba                        # 结巴分词
import jieba.posseg                 # 词性获取
import collections                  # 词频统计库
import csv                          #文件读写
import os
import pandas as pd

# 打开文件
path = 'A:\jupyter_code\模式识别期末论文\评论数据'
dirs = os.listdir( path )         #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
# 输出所有表格文件
excels=[]
i=0
for fname in dirs:
     if 'xlsx' in fname:  #搜索带有xlsx的文件,即读取所有.xlsx文件
        print ('%-22s'%fname,'\t','标签取为:',i)
        df = pd.read_excel('评论数据/'+fname)
        df['标签']=str(i) #添加标签
        excels.append(df)
        i+=1
a = pd.concat(excels)           #纵向合并
#评论内容去重
a = a.dropna(subset=['评分'])  #删除评分为空值的行
print('去重之前:',a.shape[0])
a=a.drop_duplicates(subset=['评论内容'])
print('去重之后:',a.shape[0])

a.to_excel('景区评论.xlsx',index=False)   #保存文件
丽江古城.xlsx              	 标签取为: 0
九寨沟.xlsx               	 标签取为: 1
伦敦眼.xlsx               	 标签取为: 2
卢浮宫博物馆.xlsx            	 标签取为: 3
张家界.xlsx               	 标签取为: 4
杭州西湖.xlsx              	 标签取为: 5
洱海.xlsx                	 标签取为: 6
都江堰景区.xlsx             	 标签取为: 7
雅典卫城.xlsx              	 标签取为: 8
鼓浪屿.xlsx               	 标签取为: 9
去重之前: 25789
去重之后: 23811
import pandas as pd 
data = pd.read_excel('景区评论.xlsx')

去重之前: 23811
去重之后: 23811

词频统计

import jieba                        # 结巴分词
import jieba.posseg                 # 词性获取
import collections                  # 词频统计库 
import re                           # 正则表达式
import csv                          #文件读写
import pandas as pd 


data = pd.read_excel('景区评论.xlsx')
stopWords = pd.read_csv('stopword.txt',encoding='utf-8', sep='lipingliping', header=None)
custom_stopWords = pd.read_csv('自定义停用词.txt',encoding='utf-8', sep='lipingliping',header=None)
adverbWords = pd.read_csv('程度副词.txt',encoding='utf-8', sep='lipingliping',header=None)
stop = list(stopWords.iloc[:, 0])+list(custom_stopWords.iloc[:, 0])+list(adverbWords.iloc[:, 0])#将停用词写入列表
#景区热词表名
name=['丽江古城热词','九寨沟热词','伦敦眼热词','卢浮宫博物馆热词','张家界热词','杭州西湖热词','洱海热词','都江堰景区热词','雅典卫城热词','鼓浪屿热词']
j=0
for labels in range(0,10):
    
    data01=(''.join(str(i) for i in data.loc[data["标签"]==labels,"评论内容"]))
    #预处理
    pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|\ |"\|~·@¥……*|“”|‘’|()|{}|') # 定义正则表达式匹配模式(空格等)
    data02 = re.sub(pattern, '', data01)     # 将符合模式的字符去除
    data_cut = jieba.cut(data02,cut_all=False,HMM=True)

    data_stop = []
    #去除停用词(目的是去掉一些意义不大的词)
    for word in data_cut:         # 循环读出每个分词
        if word not in stop:       # 如果不在去除词库中
            data_stop.append(word)    # 分词追加到列表

    word_counts = collections.Counter(data_stop)       # 对分词做词频统计
    word_counts_top = word_counts.most_common(20)    # 获取前20个最高频的词
    print(word_counts_top)
    
    words_cloud_A = open('A:/jupyter_code/模式识别期末论文/景区热词表/'+name[j]+'.csv', 'w', newline = '')   #打开景区热词表格文件,若表格文件不存在则创建
    write = csv.writer(words_cloud_A)    #创建一个csv的writer对象用于写每一行内容
    write.writerow(['评论热词','
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值