朴素贝叶斯情感分析评分python_「豆瓣影评」从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(上) - seo实验室...
豆瓣影评
一、爬取豆瓣影评
基本思路:先获取每个电影的评论区链接,然后依次进入其评论区爬取评论。选取10部电影,每部200条评论。
用到的包为:BeautifulSoup,urllib
这里选取的链接为:豆瓣电影,打开后内容如下:
直接审查元素,找到每部电影的标签位置,如下图:
因此,找到此标签的代码为:
lists = bsobj.find('ul', {'class': 'lists'}).findAll('li', {'class': 'list-item'})
其中bsobj是该网页的bs对象。
接下来我们需要找到这部电影短评的链接,如下:
https://movie.douban.com/subject/26985127/comments?status=P
这是短评首页,翻页观察其变化:
https://movie.douban.com/subject/26985127/comments?start=20&limit=20&sort=new_score&status=P(第2页)
https://movie.douban.com/subject/26985127/comments?start=40&limit=20&sort=new_score&status=P(第3页)
唯一变化的是start后的数字,一页有20条评论,subject后的数字是电影的id号,只要获取电影的id号,就可构造它的短评网页的url。
评论区的位置:
获取评论区标签的代码为:
comments=reviewBSobj.findAll('p',{'class':'comment-item'})
由于之后要对评论进行朴素贝叶斯,所以要给评论打上标签 。这里方便起见,对评分三星以上的为积极,标记为0,二星以下为消极,标记为1。
评分位置如图:
allstar后的数字30表示三星,爬取代码如下:
star=comment.find('span',{'class':re.compile(r'^allstar(.*?)')})
这里用到了正则表达式。 另外,有的评论没有星级评分,打不了标签,因而直接丢弃。
if star is None:continue
if int(star['class'][0][7])>2:target=0
else:target=1
target是标签,取值0或1。
在保存之前,先对数据进行简单的清洗:去掉标点符号以及特殊符号,只保留汉字。
content=comment.p.get_text().strip()
pattern = re.compile(r'[\u4e00-\u9fa5]+')
filterdata = re.findall(pattern, content)
cleaned_comments = ''.join(filterdata)
content是评论的内容,pattern是正则表达式,cleaned_comments是清洗完的数据。
f = open('review.txt', 'w', encoding='utf-8')
数据保存在review.txt文件中。
1、代码解析
getbs4函数:返回bs对象
def getbs4(url):
'''
:param url:网址
:return: 返回BeautifulSoup对象
'''
try:
html=urlopen(url)
bsobj=BeautifulSoup(html,'html.parser')
html.close()
except (HTTPERROR,URLError):
return None
return bsobj
getFilmList函数:返回电影id列表
def getFilmList(url):
'''
:param url:网址
:return: 返回电影id的列表
'''
bsobj = getbs4(url)
if bsobj == None: return
lists = bsobj.find('ul', {'class': 'lists'}).findAll('li', {'class': 'list-item'})
return lists
getReview函数:爬取影评的主函数
def getReview(url,n):
'''
:param n:需要爬取的爬取页数
:return:爬取影评
'''
lists = getFilmList(url)
print('电影总数:'+str(len(lists)))
f = open('review.txt', 'w', encoding='utf-8')
for i in range(1):
print('开始爬取第%d电影,电影名为%s'%(i+1,lists[i]['data-title']))
reviewUrl='https://movie.douban.com/subject/'+lists[i]['id']+'/comments?status=P'
text=[]
for j in range(n):
reviewBSobj = getbs4(reviewUrl)
if reviewBSobj == None: return
comments=reviewBSobj.findAll('p',{'class':'comment-item'})
print('-----第%d页-----' % (j+1))
for comment in comments:
star=comment.find('span',{'class':re.compile(r'^allstar(.*?)')})
if star is None:continue
print(star)
if int(star['class'][0][7])>2:target=0
else:target=1
content=comment.p.get_text().strip()
pattern = re.compile(r'[\u4e00-\u9fa5]+')
filterdata = re.findall(pattern, content)
cleaned_comments = ''.join(filterdata)
text.APPend(str(target)+' '+cleaned_comments+'\n')
print('-------------')
reviewUrl='https://movie.douban.com/subject/'+lists[i]['id']+'/comments?start='+str(20*j+20)+'&limit=20&sort=new_score&status=P'
f.writelines(text)
f.close()
相关阅读
一年用一次的“春节+回家+催泪”的情感营销套路已经用烂了,用户越来越对此感到麻木无感,活动效果自然也不会好到哪里去。如何在这个
朴素贝叶斯情感分析评分python_「豆瓣影评」从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(上) - seo实验室...相关推荐
- python爬取京东商品数据要先登录_京东商品评论情感分析|文本数据预处理
本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意.所以对于文本 ...
- 基于Keras的IMDB数据集电影评论情感二分类
原创不易,如果有转载需要的话,请在首行附上本文地址,谢谢. 第一步加载IMDB数据集,如若加载不成功,这里提供一种解决方法:点开IMDB数据下载链接(喜欢的话给个小星星和follow一下),fork到 ...
- 【自然语言处理(NLP)】基于FNN网络的电影评论情感分析
[自然语言处理(NLP)]基于FNN网络的电影评论情感分析 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建 ...
- 从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(下)
基于朴素贝叶斯的电影评论情感分析 用到的包:pandas.jieba(分词工具) file=open(r"review.txt",'r',encoding='utf-8') rev ...
- 从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(上)
一.爬取豆瓣影评 基本思路:先获取每个电影的评论区链接,然后依次进入其评论区爬取评论.选取10部电影,每部200条评论. 用到的包为:BeautifulSoup,urllib 这里选取的链接为:豆瓣电 ...
- 【Python自然语言处理】使用逻辑回归(logistic)对电影评论情感分析实战(超详细 附源码)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.舆情分析 舆情分析很多情况下涉及到用户的情感分析,或者亦称为观点挖掘,是指用自然语言处理技术.文本挖掘以及计算机语言学等方法来正确识别和提取文 ...
- Pytorch+Text-CNN+Word2vec+电影评论情感分析实战
文章目录 0.前言 1.电影评论数据集 2.数据读取 3.数据预处理 4.准备训练和测试集 5.加载词向量模型Word2vec 6.定义网络 7.训练网络 8.测试网络和可视化 9.总结 0.前言 很 ...
- 实例:爬取豆瓣评论、绘制词云图以及情感分析——以《长津湖》为例
一.爬取豆瓣<长津湖>网页评论 (由于存在一定的反爬机制,以下代码最多只能爬取210条评论) # 导入工具包 import requests from bs4 import Beautif ...
- 普通话测试第四题评分标准_2017年普通话水平测试评分细则「详细版」
2017年普通话水平测试评分细则「详细版」 普通话是现代汉语的标准语.由国家语言文字工作委员会和国家教育委员会.广播电影电视部颁布的,<普通话水平测试等级标准(试行)>.以下是小编整理的2 ...
最新文章
- 少侠请重新来过 - Vue学习笔记(八) - Vuex
- ArcEngine的鼠标事件中按键判断~
- 【Demo】采购订单收货Bapi
- 一个虐你千百遍的问题:“RPC好,还是RESTful好?”
- shell中的各种括号的使用方法
- 伸展树(Splay tree)浅谈
- 我和女实习生那些不想说的故事
- Spark精华问答 | RDD的核心概念是什么?
- 后台向前台js传递参数
- java多线程之wait和notify协作,生产者和消费者
- 酷客多小程序携手Richly network Pte Led正式进军新加坡市场
- 泰山JDK8升级u302,找到了更好的整合mips办法
- 《Java核心技术》基于Java 17全面升级
- 话单数据仓库搭建(1)- 数仓概念及数据采集
- NB50/60 TJ1/TK1 模具 黑苹果保姆级教程整理
- 企业邮箱提升企业效率
- 阿里巴巴29个屌炸天的开源项目,你用过几个?
- 户外广告牌新标准将规定字体、颜色
- 云养猫云养狗,一个可以救助流浪猫猫和狗狗的平台
- 生产制造企业用的ERP系统——流程管理
热门文章
- java math tan_Java Math tan() 使用方法及示例
- android 记录血糖的折线图_画画血糖曲线图,你还可稳血糖!快试试
- E Enigmatic Partition 2020牛客暑期多校训练营(第八场)
- 极智嘉拟科创板上市后再创发展里程:全球AMR销售突破2万台
- 挫败感的来源自哪里?
- ios怎么引入masonry_详解 iOS 自动布局框架 Masonry
- r语言lm函数找不到对象_R语言错误的提示(中英文翻译)
- 干线协议(802.1q/ISL)
- mysql百万数据建索引时间_mysql百万的数据快速创建索引
- 汽车电子MCU开发之路