百度飞桨小白逆袭—鲤鱼跃龙门之最后一跃

177 阅读5分钟

百度飞桨小白逆袭—鲤鱼跃龙门之最后一跃


这里是三岁,这里是小白逆袭大神最后的大作业,鲤鱼跃龙门最后一跃,该项目的最后一跃却是我们大家打码写bug的开始,那么开始白话讲解大作业⑧~~~

参考地址:https://aistudio.baidu.com/aistudio/index

作业

第一步:爱奇艺《青春有你2》评论数据爬取(参考链接:www.iqiyi.com/v_19ryfkiv8…)

爬取任意一期正片视频下评论
评论条数不少于1000条
第二步:词频统计并可视化展示

数据预处理:清理清洗评论中特殊字符(如:@#¥%、emoji表情符),清洗后结果存储为txt文档
中文分词:添加新增词(如:青你、奥利给、冲鸭),去除停用词(如:哦、因此、不然、也好、但是)
统计top10高频词
可视化展示高频词
第三步:绘制词云

根据词频生成词云
可选项-添加背景图片,根据背景图片轮廓生成词云
第四步:结合PaddleHub,对评论进行内容审核

作业划分

  • 爬虫——爬取评论
  • 数据清洗——替换无用信息
  • 分词——jieba库的使用
  • 词云——wordcloud库的使用
  • PaddleHub,对评论进行内容审核

爬虫

爬虫!和之前一样 使用requese库,但是分析数据以后发现是json数据不需要bs4

那么就开始分析数据⑧
在页面找不到数据,进行抓包查看页面的数据
在这里插入图片描述
network是抓包查看各类数据集
all 所有数据
prevew 预览当前信息

经过预览该网页的信息没有发现有用的数据有可能是同步逐渐加载的那么就要继续寻找

在这里插入图片描述
我们在network进行抓包
看到网页最下面有加载更多评论,这里说不定是一个突破口
我们按左边那个小圈圈,把network页面的数据清空,然后点击查找更多评论!
奇迹就在眼前!

在这里插入图片描述
出现了评论,被找到了,排除照片,那么剩下来的就2选一了

经过预览就能够找到所在的包
在这里插入图片描述
找到了api和请求方式那么就可以查找到所在的页面

经过比较发现这些api没有特性不能够翻页,那么怎么办???
对 url 进行处理把没有用的数据进行删除(不要问我这么知道有没有用,我只能够说我是一个个试的)

在这里插入图片描述
找到所有的&键他们是数据的分隔线,把部分内容删除如果能够正常访问就不影响,如果影响就不能够删除直到最简

'https://sns-comment.iqiyi.com/v3/comment/get_comments.action?
agent_type=118&business_type=17&content_id=15068699100&last_id={list_id}#在list_id里面加上用户id

这样子api就OK了

这样子用requests进行获取就可以

获得的数据是json数据
采用json转字典就好处理了
在这里插入图片描述
仔细观察会发现content里面的数据就是我们要的,经过字典然后加上循环就可以获取了,不多说加油!!!

数据清洗

使用jieba库 ,jieba库和wordcloud中自带停用词库和分词库不过时长更新都是5年前了
需要我们自己根据需要添加

点击下载停用词!!!

当判断到和停用词一样时就会用空格进行处理

#停用词导入
stopwords = [line.strip() for line in open('停用词库地址', 'r', encoding='UTF-8').readlines()]

如何把那些标点什么的清除?正则!!!

s = re.sub(r"</?(.+?)>|&nbsp;|\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 ',。;:“”、》《、|*&…🙏!♥♡😊🌚?💚√🍼【】💔🐴]๑👍[🌟😘🤘ノ🐱👩‍❤“💎🌸💙😁❄,≧▽≦👀🐶🍬😂 !🧡😃 ヾ↗~↖^ 🏻🍋~♀٩௰^ و˃͈ ̶ω˂😆௰ ˂🔒🧍💛💚💖Ő ∀Ő∀✔🤠( ง _ • 。́ ) ง🔒✨🍑💙💜👧🐛🐟✊🌠🌨💪⭐”…':
            s = s.replace(ch, ' ')

大家好奇的分词新建的add_vords.txt是什么东西?
小编给大家准备了一部分
词汇 频率 词性 其中频率和词性可以省略

青你
奥利给
冲鸭
喻言
虞书欣
赵小棠
宋昭艺
刘雨昕
孔雪儿
安崎
谢可寅
上宫喜爱
许佳琪 
创造营
符雅凝
大鱼海棠
爱你
练习生
练习室

还有的你自己加
其实在jieba文件里面就有一个,如果长期需要的可以在那里面修改!

词云嘛昨天有举例跟着修改就可以

有好多人在统计时发现有分词错误的现象,为了更加真实,做了以下判断

#在什么位置自己确认!!!
    for word in words:
        if word not in stopwords:
            i = 0
            if word != 1:

                if word == '虞书' or word == '欣虞书' or word == '欣书' :
                    word = '虞书欣'
                elif word == '喻言冲' or word == '投喻言' or word == '言喻' :
                    word = '喻言'
                elif word == '谢可寅谢' or word == '可寅谢' or word == '可寅':
                    word = '谢可寅'
                elif word == '孔' or word== '雪儿' :
                    word = '孔雪儿'
                    i += 1
                    if word ==  '孔雪儿' and i%2 == 0:
                        outstr[word] = outstr.get(word, 0) + 1
                        continue
                elif word == ' ' or word == '':
                    continue

                outstr[word] = outstr.get(word, 0) + 1

在这里插入图片描述

这个是许多小白懵逼的地方,我也一样,后来才知道,这个是主函数,函数入口(差不多这个意思,理解就好,具体的我也所不清楚,说了也错)

目前能够说的就这么多,至于那个调用分析,大家多找找大神,我无能为力
谢谢大家的支持有什么不对的请多多指教!!!