跟着大佬实现的影评分析小玩意儿、根据豆瓣的影评,对电影做的好评度做分析,比较有意思,就跟着写来玩玩,也算是学习了。
效果展示
大概思路
数据来源于豆瓣《长津湖》影评。首先,需要根据影评的星级,将其划分为好评/中差评,分别去匹配评论中对应的词(hit_stopwords.txt可以自己去GitHub上找,好像都差不多);
def get_cut_words(content_series):
# 读入停用词表
stop_words = []
with open(r"hit_stopwords.txt", 'r', encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
stop_words.append(line.strip())
# 添加关键词
my_words = ['长津湖', '志愿军']
for i in my_words:
jieba.add_word(i)
# 自定义停用词
my_stop_words = ['电影', "长津湖", "战争"]
stop_words.extend(my_stop_words)
# 分词
word_num = jieba.lcut(content_series.str.cat(sep='。'), cut_all=False)
# 条件筛选
word_num_selected = [i for i in word_num if i not in stop_words and len(i) >= 2]
return word_num_selected
然后,利用stylecloud对筛选出来的不同的词构图。
图片设置
本文icon_name参数的模板为【fas fa-thumbs-up/fa-thumbs-down】,若要设置为其他图形,只需要改动iconname即可。
iconname并不是随便起的,必须能在fontawesome.com/license/fre… 搜到才可以。
# 绘制词云图
stylecloud.gen_stylecloud(text=' '.join(text1),
max_words=1000,
collocations=False,
font_path=r'bb4171.ttf',
icon_name='fas fa-thumbs-up',
size=600,
output_name='豆瓣正向评分词云图.png')
字体设置
至于词云的字体,把字体文件放在文件同目录下即可,字体文件百度找得到。
脚本文件如下
脚本不多,直接放这了
# main.py
import pandas as pd
import os
import jieba
file_path = os.path.join("douban.csv")
# 读取test.csv文件中的A、B列,若不设置usecols参数,默认读取全部数据。
df = pd.read_csv(open(file_path, 'r', encoding='utf-8'))
# print(df.head())
star_num = df.星评.value_counts()
star_num = star_num.sort_index()
def get_cut_words(content_series):
# 读入停用词表
stop_words = []
with open(r"hit_stopwords.txt", 'r', encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
stop_words.append(line.strip())
# 添加关键词
my_words = ['长津湖', '志愿军']
for i in my_words:
jieba.add_word(i)
# 自定义停用词
my_stop_words = ['电影', "长津湖", "战争"]
stop_words.extend(my_stop_words)
# 分词
word_num = jieba.lcut(content_series.str.cat(sep='。'), cut_all=False)
# 条件筛选
word_num_selected = [i for i in word_num if i not in stop_words and len(i) >= 2]
return word_num_selected
text1 = get_cut_words(content_series=df[(df.星评 == '力荐') | (df.星评 == '推荐')]['评论'])
print(text1[:5])
import stylecloud
from IPython.display import Image # 用于在jupyter lab中显示本地图片
# 绘制词云图
stylecloud.gen_stylecloud(text=' '.join(text1),
max_words=1000,
collocations=False,
font_path=r'bb4171.ttf',
icon_name='fas fa-thumbs-up',
size=600,
output_name='豆瓣正向评分词云图.png')
Image(filename='豆瓣正向评分词云图.png')
text2 = get_cut_words(content_series=df[(df.星评 == '还行') | (df.星评 == '较差')]['评论'])
print(text2[:5])
# 绘制词云图
stylecloud.gen_stylecloud(text=' '.join(text2),
max_words=1000,
collocations=False,
font_path=r'bb4171.ttf',
icon_name='fas fa-thumbs-down',
size=600,
output_name='豆瓣负向评分词云图.png')
Image(filename='豆瓣负向评分词云图.png')