前言
python课实验,
将爬取到QQ音乐歌曲评论进行处理;
提取评论中的关键词制作词云;
分析评论中词语的词性,做出词性统计
提示:以下是本篇文章正文内容
一、评论数据清洗整理
刚刚从QQ音乐上爬取的评论数据很乱,这里先给大家看一下我刚刚爬下来存在csv里的数据的样子:
可以看到横纵都有无关内容,且数据不规整,还有我们不需要的回复(只要评论就可以)。
所以我们先对数据进行整理:
import csv
import pprint
'''
clean_comments.py
'''
def read_csv(index):
csv_path = './comments_info.csv'
with open(csv_path, 'r', encoding='utf-8') as f:
data = csv.reader(f)
comments = [all_comments[index] for all_comments in data]
# pprint.pprint(comments)
# 删除回车与回复
new_comments = []
for i in range(len(comments)):
comments[i] = comments[i].replace('\n', '')
if '回复' in comments[i]:
continue
new_comments.append(comments[i])
# pprint.pprint(new_comments)
return new_comments # 返回评论的一维列表
- 先用utf8读取csv数据
- 只取第二列的数据,index这里是要取的列
- 简单处理数据,把所有的回车和回复内容删掉
- 最终生成较为规整的评论数据,返回评论列表
(ps:这里把“评论”也存进去了,可以手动删掉的。不过在这么多评论面前,这两个字几乎不影响)
二、词云与词性统计
1.词云制作
函数代码如下:
def get_Word_Cloud():
pre_comments = clean_comments.read_csv(1)
# 删去无效词
jieba.analyse.set_stop_words(stop_words_file_path)
# 把评论列表组合成一个字符串,用于删去无效词+关键词提取
sentences = " ".join(i for i in pre_comments)
# 关键词提取
word_count_list = jieba.analyse.extract_tags(sentences, topK=50, withFlag=True)
# 生成词云
key_words = " ".join(i for i in word_count_list)
word_cloud = WordCloud(width=2000, height=1000, font_path="./font/msyhl.ttc", max_font_size=225,
background_color="white", font_step=2)
word_cloud.generate(key_words)
word_cloud.to_file("wordcloud.png")
plt.rcParams["font.sans-serif"] = ["SimHei"] # 设置中文
plt.imshow(word_cloud)
plt.title("评论关键词词云")
plt.axis('off')
plt.show(