根据豆瓣对《流浪地球》的短评数据进行文本分析和挖掘

在这里插入图片描述

1背景

2019年2月5日电影《流浪地球》正式在中国内地上映。该电影在举行首映的时候,口德好得出奇,所有去看片的业界大咖都发出了画样赞叹,文化学者能锦说:“中国科幻电影元年开启了。"导演徐峰则说,“里程碑式的电影,绝对是世界级别的”。可是公映之后,《流浪地球》的豆评分却从8.4一路跌到了7.9。影片页面排在第一位的,是一篇一星评《流浪地球,不及格》。文末有2.8万人点了“有用”,3.6万人点了“没用”。关于《流浪地球》的观影评价,已经变成了场逐渐失控的舆论混战,如"枪稿“作者灰狼所说,"关于它的舆论,已经演化成、政治正确、水军横行、自来水灭差评、道德绑架、战狼精神”。为了对《流浪地球》的观影评价有个全面的了解,对《流浪地球》的豆影评数据进行分析和挖掘

(1) 给制统计图分析评论数量及评分与时间的关系以及评论者的城市分布情况。
2) 通过词云图分析好评与差评的关键信息。
(3)构建文本分类模型识别每条评论的情感倾向,并对模型效果进行评估

2数据获取

读取数据

import pandas as pd
data=pd.read_csv()
data

查看数据形状

data.shape

读取前五行

data.head()

描述性统计

data.describe()

count:查看数据的数量、unique:有多少个不同的值相当于有多少种,top:出现最多的值,freq:出现的频次

data.describe(include='object')

3数据预处理

查看数据city列的第一个值

data['citys'][0]

借助正则表达式提取城市信息即需要去掉[‘’],保留北京

import re
re.findall("[^''\[\]]+",x)

发现当城市为空时会出现报错(超出范围),因此我们利用apply函数进行操作

data['citys']=data['citys'].apply[lambda x:re.findall("[^''\[\]]+",x)[0] if len(re.findall("[^''\[\]]+",x))!=0 else None]

对于scores也可以参照这个来处理
分词与去除停用词
分词是文本信息处理的基础环节,是将句子切分成一个个词的过程。准确的分词处理可以极大的提高计算机对文本信息的识别理解能力。相反,不准确的分词处理会产生大量的噪声,严重干扰计算机的识别理解能力,并对后续的处理工作产生较人的影响。营见停用词例如:的、了、都、你、我、么等等,这些词通常在文本中大量出现,会带来大量的噪音数据.因此需要将这些停用词进行过滤。

4分词与去除停用词

data['content']

把除了中文字符之外的字符过滤掉,把不是中文字符的用空代替

x=data['content'][0]
x
re.sub('[^\u4E00-\u9FD5]+','',x)
data['content']=data['content'].apply(lambda x:re.sub('[^\u4E00-\u9FD5]+','',x))

#分词

import jieba
data_cut=data['content'.apply(jieba.lcut)]
data_cut

#去除停用词

#载入和加入停用词
with open('../data/stoplist.txt','r',encoding='utf-8') as f:
	stop=f.read()
stop=stop.split()
stop=['','\n','这部']+stop
stop

判断是否在停用词内

'的' in stop
data_after=data_cut.apply(lambda x:[for i in x if i not in stop])
data_after

4划分数据集

评分小于30为差评,标记为0:反之则为好评,标记为1。将原始数据划分为训练集和测试集,划分比例为4;1.

data_after=pd.DataFrame(data_after)
data_after['score']=data['scores']
data_after.shape
data_after['score'].apply[lambda x:re.findall("[0-9]+",x)[0] if len(re.findall("[0-9]+",x))!=0 else None]
data_after

把列表转成字符串

data_after['content']=data_after['content'].apply(lambda x :' '.join(x))

新建一列label存储

data_after['label'].apply(lambda x:1 if x>=30 else 0)
data_new=data_after[['content','label']]

划分数据集

from sklearn.model_selection import train_test_split
src_training,src_testing=train_test_split(data_new,test_size=0.2,stratify=data_after[label],random_state=123)
src_training
connents_train,connents_test=src_training['content']
.values,src——testing['content'].values
y_train,y_test=src_training['label'],src_testing['label']
src_training['content'].values

5文本的向量化

for i in range(len(comments_train)):
	if len(comments_train[i])==0:
		print(i)
ind=[i for i in range(len(comments_train)) if i not in [89,205]]
comments_train=comments_train[ind]
y_train=y_train.values[ind]
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer

count_vectorizer=CountVectorizer()
tfidf_trainformer=TfidfTransformer()

word_count_train=count_vectorizer.fit_transform(comments_train)
tfodf_train=tfidf_transformer.transform(word_count_test)

print(tfidf_train.shape)
print(tfidf_test.shape)

6模型构建与评估

from sklearn.neighbors import KNeighborsClassifier

model=KNeighborsClassifier(n_neighbors=8,weights='distance')#模型构建
model.fit(tfidf_train,y_train)#模型训练
model

模型评估

pre=model.predict(tfidf_test)
pre

#计算正确率
from sklearn.metrics import accuracy_score
accuracy_score(y_test,pre)
y_test

有一说一这个不太行
这个看起来不错
加这个
完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214436.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实时流式计算 kafkaStream

文章目录 实时流式计算Kafka StreamKafka Streams 的关键概念KStreamKafka Stream入门案例编写SpringBoot 集成 Kafka Stream 实时流式计算 一般流式计算会与批量计算相比较 流式计算就相当于上图的右侧扶梯,是可以源源不断的产生数据,源源不断的接收数…

WEB服务器配置与HTTP分析

目录 实验目的: 实验要求: 实验原理: 实验步骤: 步骤1:创建拓扑 步骤2:为PC、Client和Server配置IPv4地址、子网掩码和域名服务器 步骤3:启动设备和服务器 步骤4:测试PC-1、C…

【Qt开发流程】之自定义语法高亮和使用HTML语法

描述 语法高亮(Syntax Highlighting)是一种在编辑器中突出显示代码语法元素的技术,使其更易于阅读和理解。 Qt提供了一个功能齐全的语法高亮框架,支持多种语言和格式,可以自定义颜色和样式。 对于使用Qt的开发人员来说…

HADOOP::Fsimage和Edits解析

NameNode被格式化之后,将在/opt/module hadoop-3.1.3/data/tmp/dfs/name/curent目录 中产生如下文件 fsimage_ 0000000000000000000 fsimage_ 0000000000000000000.md5 seen_txid VERSION (1) Fsimage文件: HDFS文件系统元数据的一个永久性的检查点&#xff0…

使用pytorch从零开始实现迷你GPT

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

机器学习决策树ID3算法

1、先去计算总的信息量 2、根据不同指标分别计算对应的信息增益 3、根据算出的信息增益来选择信息增益最大的作为根结点 4、天气中选择一个继续上述过程 5、决策树划分结束

solidity实现ERC20代币标准

文章目录 1、以太坊 - 维基百科2、IERC203、ERC204、Remix 编译部署 1、以太坊 - 维基百科 以太坊(Ethereum)是一个去中心化的开源的有智能合约功能的公共区块链平台。以太币(ETH 或 Ξ)是以太坊的原生加密货币。截至2021年12月&a…

克服.360勒索病毒:.360勒索病毒的解密和预防

导言: 在数字化的今天,数据安全问题变得愈发棘手。.360勒索病毒是当前网络空间的一场潜在灾难,对于这个威胁,了解应对之道和采取切实的预防措施至关重要。如果您正在经历勒索病毒的困境,欢迎联系我们的vx技术服务号(s…

华为手环配置技巧

前言 华为手环作为生活健康辅助设备发挥不可忽视的作用,但每次更换手环后需要重新配置。华为手环不仅有健康监测、消息通知、天气推送、离线支付、公交卡、运动锻炼、等功能,还有倒计时、计时器、手电筒、闹钟、等小工具。下文介绍如何进行配置。 配置…

C/C++学生选课/排课系统[2023-12-3]

问题描述:根据我校自动化专业的部分必修及选修课信 息,设计一个学生选课/排课系统。 基本要求: 1、从文件读入课程信息; 2、从键盘输入拟添加的选修课信息; 3、删除已选的选修课(1门或多门) ; 4、输出已…

【小沐学Python】网络爬虫之lxml

文章目录 1、简介2、安装3、基本功能3.1 lxml.etree3.2 解析HTML网页3.3 读取并解析HTML文件3.4 提取所有a标签内的文本信息3.5 树迭代3.6 序列化3.7 元素以字典的形式携带属性3.8 元素包含文本 4、代码测试4.1 lxml解析网页4.2 使用xpath获取所有的文本4.3 使用xpath获取 clas…

html动漫网页设计分享 紫罗兰永恒花园网页作业成品带视频,注册登录,表格,表单

html5静态网页设计要是用HTML DIVCSS JS等来完成页面的排版设计,一般的网页作业需要融入以下知识点:div布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,学生网页作业源码可以…

大数据-hive

简介 hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL…

一站式自动化:Ansible Playbook的全面学习之旅

1 Playbook介绍 1.1 Playbook介绍 playbook 是由一个或多个play组成的列表 Playbook 文件使用YAML来写的 1.2 YAML 1.2.1 介绍 是一种表达资料序列的格式,类似XML Yet Another Markup Language 2001年首次发表 www.yaml.org 1.2.2 特点 可读性好 和脚本语言交…

探究两个互联网时代的差异,Web 2.0 与 Web 3.0 区别

Web 2.0 的特征 首先我们来了解一下 Web 2.0 的特征都有哪些。 用户生成内容:Web 2.0 时代以用户生成内容为特征,用户可以轻松地在网络上分享、创建和编辑信息。社交媒体平台、博客等网站的兴起使得用户成为信息的创造者,网络逐渐从被动浏览…

华为手环关闭智能适时测量

问题 使用华为手环并使用华为创新研究APP后,会自动打开智能适时测量开关,此开关开启后,手环会在睡眠时间自动测量血氧,增加手环功耗从而影响续航,用户可根据自身需求决定是否开启,下文介绍如何找到此开关。…

Vue+ElementUI+C#前后端分离:监控长耗时任务的实践

想象一下,我们正在构建一个Web应用,需要实现一个数据报告的导出功能。这听起来很简单,不是吗?但是,随着深入开发,我们意识到导出过程比预期的要复杂和耗时得多。由于报告的数据量巨大,后端需要花…

qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解

qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解 code review! 文章目录 qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解1.示例运行2.event->pos();详解3.event->pos()的坐标系原点4.Qt中的坐标系详解5.QMainWindow::mousePressEvent(event);详解 1.示例…

ssm医药进出口交易系统源码和论文

ssm医药进出口交易系统源码和论文726 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构…

LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…