大作业不难,但是涉及到的技术稍微多一点,请对于各个函数耐心查看代码和注释,认真食用。(因为用心,所有动人)
作业内容&要求第一步:爱奇艺《青春有你2》评论数据爬取(参考链接:https://www.iqiyi.com/v_19ryfkiv8w.html#curid=15068699100_9f9bab7e0d1e30c494622af777f4ba39)
爬取任意一期正片视频下评论
评论条数不少于1000条
第二步:词频统计并可视化展示
数据预处理:清理清洗评论中特殊字符(如:@#¥%、emoji表情符),清洗后结果存储为txt文档
中文分词:添加新增词(如:青你、奥利给、冲鸭),去除停用词(如:哦、因此、不然、也好、但是)
第三步:统计top10高频词并展示绘制词云
统计top10高频词
可视化展示高频词
根据词频生成词云
可选项-添加背景图片,根据背景图片轮廓生成词云
第四步:结合PaddleHub,对评论进行内容审核
需要的配置和准备 中文分词需要jieba 词云绘制需要wordclou 可视化展示中需要的中文字体 (./source/simhei.ttf) 网上公开资源中找一个中文停用词表 (./source/stopWords.txt) 根据分词结果自己制作新增词表 (./source/addWords.txt) 准备一张词云背景图(附加项,不做要求,可用hub抠图实现)(./source/bg.jpg)图片尽量使用白色背景或者透明背景 paddlehub配置本次的所有资源文件和生成的文件都会放到当前路径的source包下面。
在开始之前再次将matplotlib的显示中文的坑整理一下:
1.确保系统的.font文件下面有中文字体(这里假设中文字体就是simhei.ttf)如果不懂可以忽略这一条,直接跳到2。
# Linux系统默认字体文件路径
!ls /usr/share/fonts/
#查看系统可用的ttf格式中文字体
!fc-list :lang=zh | grep ".ttf"
2.要想matplotlib显示中文需要做到两点
2.1系统的font里面有simhei.ttf
2.2matpltlib的mpl-data/fonts/ttf/下面也需要有这个字体
第一点不多说,对于第二点,可以使用如下命令
cp ./resource/simhei.ttf /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
然后只要在调用matplotlib的时候 设置一下字体就行了,使用如下命令
# 设置显示中文
matplotlib.rcParams['font.family'] = ['SimHei']
# 解决负号'-'显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False
findfont: Font family [‘sans-serif’] not found. Falling back to Bitstream Vera Sans
可能经过上面的设置后还是会出现这样的错误。解决方法如下:
在mac系统下面:
删除系统根目录下面的matplotlib的隐藏文件(里面的缓存文件)即可
rm -r ~/.matplotlib
在windows系统下面:
删除系统根目录下的.cache/matplotlib目录
rm -r .cache/matplotlib
在aistudio平台:
同样删除.cache/matplotlib目录就行了。
from __future__ import print_function
import requests
import json
import re #正则匹配
import time #时间处理模块
import jieba #中文分词
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager
from PIL import Image
from wordcloud import WordCloud #绘制词云模块
import paddlehub as hub
import pandas as pd
一、评论爬取
这次的评论爬去其实就是一个对评论接口的调用。唯一的难度就在于如何找到接口的地址。
方法如下: