day5-综合大作业写作分享
day5-综合大作业写作分享
作业要求说明
第一步:爱奇艺《青春有你2》评论数据爬取
(参考链接:https://www.iqiyi.com/v_19ryfkiv8w.html#curid=15068699100_9f9bab7e0d1e30c494622af777f4ba39)
- 爬取任意一期正片视频下评论
- 评论条数不少于1000条
第二步:词频统计并可视化展示
- 数据预处理:清理清洗评论中特殊字符(如:@#¥%、emoji表情符),清洗后结果存储为txt文档
中文分词:添加新增词(如:青你、奥利给、冲鸭),去除停用词(如:哦、因此、不然、也好、但是) - 统计top10高频词
- 可视化展示高频词
第三步:绘制词云
- 根据词频生成词云
- 可选项-添加背景图片,根据背景图片轮廓生成词云
第四步:结合PaddleHub,对评论进行内容审核
完成作业所需要的准备
- 中文分词需要jieba
- 词云绘制需要wordcloud
- 可视化展示中需要的中文字体
- 网上公开资源中找一个中文停用词表
- 根据分词结果自己制作新增词表
- 准备一张词云背景图(附加项,不做要求,可用hub抠图实现)
- paddlehub配置
完整代码展示及说明
# 安装jieba和词云,分别用于中文分词和词云绘制
!pip install jieba
!pip install wordcloud
#安装中文字体,可以本地上传,也可以在线安装
#如果是本地上传的话,需要注意上传的文件名和你所引用的文件名是否一致,
# 下载中文字体
#!wgethttps://mydueros.cdn.bcebos.com/font/simhei.ttf
# 查看系统可用的ttf格式中文字体
!fc-list :lang=zh | grep ".ttf"
# 创建系统字体文件路径
!mkdir .fonts
# 复制文件到该路径
!cp simhei.ttf .fonts/
#添加可视化所需要的字体
!rm -rf .cache/matplotlib
#字体的调用
from matplotlib.font_manager import _rebuild
_rebuild()

#安装模型,解析LSTM所用
!hub install porn_detection_lstm == 1.1.0
# !pip install --upgrade paddlehub

#调用所需要的库,都懂,不解释
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
#请求爱奇艺评论接口,返回response信息
def getMovieinfo(url):
'''
请求爱奇艺评论接口,返回response信息
参数 url: 评论的url
:return: response信息
'''
session = requests.Session()
headers = {
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
#"User-Agent": "Mozilla/5.0",
"Accept": "application/json",
"Referer": "http://m.iqiyi.com/v_19rqriflzg.html",
"Origin": "http://m.iqiyi.com/",
"Host": "sns-comment.iqiyi.com",
"Connection": "keep-alive",
"Accept-Language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6",
"Accept-Encoding":"gzip, deflate"
""
}
response = session.get(url,headers=headers)
if response.status_code == 200:
return response.text
return None
#解析json数据,获取评论
def saveMovieInfoToFile(lastId,arr):
'''
解析json数据,获取评论
参数 lastId:最后一条评论ID arr:存放文本的list
'''
url = "https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&\%20%20%20%20agent_version=9.11.5&authcookie=null&business_type=17&content_id=15068699100&page=&page_size=10&types=time&last_id="
url += str(lastId)
responseTxt = getMovieinfo(url)
responseJson = json.loads(responseTxt)
comments = responseJson['data']['comments']
for val in comments:
#print(val.keys())
if 'content' in val.keys():
print(val['content'])
arr.append(val['content'])
lastId = str(val['id'])
return lastId
#使用正则去除文本中特殊字符,相关用法自行百度
def clear_special_char(content):
'''
正则处理特殊字符
参数 content:原文本
return: 清除后的文本
'''
s = re

本文介绍了一项综合大作业的实施过程,包括从爱奇艺爬取《青春有你2》评论数据,进行数据预处理、中文分词、词频统计,并通过词云进行可视化展示,同时运用PaddleHub进行内容审核。

831

被折叠的 条评论
为什么被折叠?



