赞
踩
参加了百度的python七天课程: https://aistudio.baidu.com/aistudio/index
分享一下最后的大作业:
(ps:写作业过程中碰到了add_words问题,参考了叁岁大佬的这篇博文https://blog.csdn.net/weixin_45623093/article/details/105794512)
**第一步:**爱奇艺《青春有你2》评论数据爬取(参考链接:https://www.iqiyi.com/v_19ryfkiv8w.html#curid=15068699100_9f9bab7e0d1e30c494622af777f4ba39)
爬取任意一期正片视频下评论
评论条数不少于1000条
**第二步:**词频统计并可视化展示
数据预处理:清理清洗评论中特殊字符(如:@#¥%、emoji表情符),清洗后结果存储为txt文档
中文分词:添加新增词(如:青你、奥利给、冲鸭),去除停用词(如:哦、因此、不然、也好、但是)
统计top10高频词
可视化展示高频词
**第三步:**绘制词云
根据词频生成词云
可选项-添加背景图片,根据背景图片轮廓生成词云
**第四步:**结合PaddleHub,对评论进行内容审核
中文分词需要jieba
词云绘制需要wordcloud
可视化展示中需要的中文字体
网上公开资源中找一个中文停用词表
根据分词结果自己制作新增词表
准备一张词云背景图(附加项,不做要求,可用hub抠图实现)
paddlehub配置
!pip install jieba
!pip install wordcloud
# Linux系统默认字体文件路径
# !ls /usr/share/fonts/
# 查看系统可用的ttf格式中文字体
!fc-list :lang=zh | grep ".ttf"
# 下载中文字体
!wget https://mydueros.cdn.bcebos.com/font/simhei.ttf
# 将字体文件复制到matplotlib字体路径
!cp simhei.ttf /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
# 一般只需要将字体文件复制到系统字体目录下即可,但是在aistudio上该路径没有写权限,所以此方法不能用
# !cp simhei.ttf /usr/share/fonts/
# 创建系统字体文件路径
#!mkdir .fonts
# 复制文件到该路径
!cp simhei.ttf .fonts/
!rm -rf .cache/matplotlib
这里的simhei.ttf需要自己在网上下载,然后上传到当前工作路径下。
#安装模型
!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", "Accept":"application/json", "Refer":"http://m.iqiyi.com/v_19rqriflzg.html", "Origin":"http://m.iqiyi.com", "Bost":"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", "Aceept-Encoding":"qzip,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 # :return: 新的lastId # ''' url = "http://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&\agent_version=9.11.5&business_type=17&content_id=15068699100&page_size=10&type=time&last_id=" #url='https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_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: if 'content' in val.keys(): print(val['content']) arr.append(val['content']) lastId = str(val['id']) return lastId
注意上面这部分一定要认真检查一下headers和url等的正确性,因为在这里打错是不会报错的,但是之后主函数调用运行的时候会无法爬取评论。之前不小心多打了一个字母,debug了很久才发现是这里的问题(可能是我比较粗心)。
#去除文本中特殊字符
def clear_special_char(content):
'''
正则处理特殊字符
参数 content:原文本
return: 清除后的文本
'''
# s = re.sub(r"</?(.+?)>| |\t|\r","",content)
# s = re.sub(r"\n","",s)
# s = re.sub(r"\*","\\*",s)
# s = re.sub('[^\u4e00-\u9fa5^a-z^A-Z^0-9]',"",s)
# s = re.sub('[\001\002\003\004\005\006\007\x08\x09\x0a\x0b\x0c\x0d\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d]','',s)
# s = re.sub('[a-zA-Z]','',s)
# s = re.sub('^\d+(\.\d+)?$','',s)
s = re.sub(r"</?(.+?)>| |\t|\r", "", content)
s =re.sub(r"\n", "", s)
s =re.sub(r"\*", "\\*", s)
s =re.sub("\u4e00-\u9fa5^a-z^A-Z^0-9", "", s)
s = re.sub( '[\001\002\003\004\005\006\007\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a]+', '', s)
s = re.sub('[a-zA-Z]', "", s)
s = re.sub('^\d+(\.\d+)?$', "", s)
s = re.sub(u'[\U00010000-\U0010ffff]', ' ',s)
s = re.sub(u'[\uD800-\uDBFF][\uDC00-\uDFFF]', ' ', s)
for ch in ',。;:“”、》《、|*&…声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/318860
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。