电影评论情感分析

主题介绍

当商家发布一款产品后,通过分析消费者的评论,我们能大致了解消费者对此产品的评价,如正面的,或负面的。我们更进一步可以归类正面评论和负面评论,从中找到产品的主要优点和主要缺陷,进而提出改进产品的意见,提高产品的接受度和好评度。

处理工具及方法

  1. 收集测试评论(爬虫:scrapy等)
  2. 数据清洗及数据标记,需要标记出评论是正面或负面(numpy、pandas、scipy)
  3. 数据建模及测试(sklearn)
  4. 模型应用及评估

主要步骤:

1.文件导入

import numpy as np
import pandas as pd#导入结构化评论数据
data=pd.read_csv(r"movie.csv")
data.sample(5)

2.空值统计及处理 

#统计空值
data.isnull().sum()

3.重复值统计及处理 

#统计重复数据并删除重复数据
print(data.duplicated().sum())data.drop_duplicates(inplace=True)print(data.duplicated().sum())

4.标签映射 

#将标签pos和neg映射成1和0
data["label"]=data["label"].map({"pos":1,"neg":0})

5.语料清洗及分词 

# 用于进行中文分词的库。安装:
# pip install jiebaimport jieba
import re# 获取停用词列表
def get_stopword():# 默认情况下,在读取文件时,双引号会被解析为特殊的引用符号。双引号中的内容会正确解析,但是双引号不会解析为文本内容。# 在这种情况下,如果文本中仅含有一个双引号,会产生解析错误。如果需要将双引号作为普通的字符解析,将quoting参数设置为3。stopword = pd.read_csv(r"stopword.txt", header=None, quoting=3, sep="a")# 转换为set,这样可以比list具有更快的查询速度。return set(stopword[0].tolist())# 清洗文本数据
def clear(text):return re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+", "", text)# 进行分词的函数。
def cut_word(text):return jieba.cut(text)# 去掉停用词函数。
def remove_stopword(words):# 获取停用词列表。stopword = get_stopword()return [word for word in words if word not in stopword]def preprocess(text):# 文本清洗。text = clear(text)# 分词。word_iter = cut_word(text)# 去除停用词。word_list = remove_stopword(word_iter)return " ".join(word_list)# 对文本数据(评论数据)的处理。步骤:
# 1 文本清洗。去掉一些特殊无用的符号,例如@,#。
# 2 分词,将文本分解为若干单词。
# 3 去除停用词。# 以上步骤通过调用preprocess方法来实现。
data["comment"] = data["comment"].apply(lambda text: preprocess(text))

6.建立模型 

逻辑回归模型:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import classification_reportX_train, X_test, y_train, y_test = train_test_split(data["comment"], data["label"], test_size=0.25, random_state=0)
# TfidfVectorizer可以看做是CountVectorizer与TfidfTransformer两个类型的合体。
tfidf = TfidfVectorizer()
lr = LogisticRegression(class_weight="balanced")
# lr = LogisticRegression()
steps = [("tfidf", tfidf), ("model", lr)]
pipe = Pipeline(steps=steps)
pipe.fit(X_train, y_train)
y_hat = pipe.predict(X_test)
print(pipe.score(X_train, y_train))
print(pipe.score(X_test, y_test))
print(classification_report(y_test, y_hat))

随机森林模型: 

from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier(n_estimators=100, n_jobs=-1, class_weight="balanced")
# rf = RandomForestClassifier(n_estimators=100, n_jobs=-1)
pipe.set_params(model=rf)
pipe.fit(X_train, y_train)
y_hat = pipe.predict(X_test)
print(pipe.score(X_train, y_train))
print(pipe.score(X_test, y_test))
print(classification_report(y_test, y_hat))

 

 bagging集合模型:

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifierb = BaggingClassifier(base_estimator=DecisionTreeClassifier(), n_estimators=10, n_jobs=-1)
pipe.set_params(model=b)
pipe.fit(X_train, y_train)
y_hat = pipe.predict(X_test)
print(pipe.score(X_train, y_train))
print(pipe.score(X_test, y_test))
print(classification_report(y_test, y_hat))

adaboost模型:

 

from sklearn.ensemble import AdaBoostClassifierada = AdaBoostClassifier(base_estimator=DecisionTreeClassifier(max_depth=1), n_estimators=100)
pipe.set_params(model=ada)
pipe.fit(X_train, y_train)
y_hat = pipe.predict(X_test)
print(pipe.score(X_train, y_train))
print(pipe.score(X_test, y_test))
print(classification_report(y_test, y_hat))

知识梳理 

列的数据映射

Series对象调用map()函数,向其中传入字典参数,可将原数据映射到新的数据集上

d2=pd.Series(["男","女","男","男","女"])
display(d2)d2=d2.map({"男":1,"女":0})
display(d2)

注:映射并没有在原对象上对数据进行改变,需要将其赋值给新的对象

 

正则表达式的文本数据清洗

str="@@ hello world *"
re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+", "", str)

re.sub()会检索文本中每个元素,并替换所有匹配到的元素,匹配模式与re.findall()相同

+:匹配大于等于一个的元素

|:或,取并集

 

jieba分词

str="我不喜欢看电影"
jieba.lcut(str)
 

jieba.lcut()返回列表

jieba.cut()返回生成器

 

从文本中提取特征

其实质是将每个不同的词汇作为一个特征,并根据词汇在每个字符串中的词频分配权重。

使用TfidfVectorizer来进行文本向量化,具有一个局限(不足):就是语料库中存在多少个单词,就会具有多少个特征,
这样会造成特征矩阵非常庞大,矩阵非常稀疏。我们可以通过pca或词频分析进行降维。

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import TfidfVectorizerdocs = np.array(["Where there is a will, there is a way.","There is no royal road to learning.","喜欢 电影"
])#将字符串迭代器中的单词映射成数字,并统计各特征数量
count=CountVectorizer()#将字符串中的特征转换成特征矩阵
tft = TfidfTransformer()#将字符串迭代器中的字符串直接转换成特征矩阵
tfv = TfidfVectorizer()bag=count.fit(docs)print(bag.vocabulary_)
print()print(bag.transform(docs).toarray())
print()print(tft.fit_transform(bag.transform(docs)).toarray())
print()print(tfv.fit_transform(docs).toarray())
print()

​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大量影视博主被腾讯起诉

我是卢松松,点点上面的头像,欢迎关注我哦! 最近,大概有50-60位影视类博主都被腾讯起诉,目前已知的粉丝从几万到上千万都有,黄V到金V都包含,赔偿金额50w到100w不等。 涉及到电视剧《安家》、《…

对谈开心麻花 | 沉浸式互动剧《疯狂理发店》有多好笑

点击文末“阅读原文”即可参与评论互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 星星 封面授权 / 开心麻花 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 2023年1月19日疯狂理发店华北首店于天津万象城开业。内测场反响热烈、口碑爆棚!首…

曝光!电影售票员教你半价看电影~别再当冤大头了!

今天推荐大家一个买电影票优惠的平台 每张电影票比某团/某眼便宜5-30元 相当于5到8折的价格 看一次立省一杯奶茶钱 ↓↓↓ 全国影院,所有场次 在线选座,优惠购票 每张便宜5-30元 (点击上方卡片,关注优惠公众号) 下图是…

chatgpt赋能python:Python的关键词总结

Python的关键词总结 Python是一种高级、面向对象的编程语言,由荷兰人Guido van Rossum于1990年开发。Python的设计哲学强调代码的可读性、简洁和清晰。Python语言具有易于学习和高生产力的特点,被广泛应用于Web开发、人工智能、数据分析、自动化测试等领…

知识图谱-实体抽取

命名实体识别(Named Entity Recognition,简称NER)是信息抽取、问答系统、句法分析、机器翻译等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要地位。一般来说,命名实体识别的任务就是识别出待处…

kapitalbank----支付

文章目录 1、前置2、准备工作3、Kapitalbank 绑卡4、Kapitalbank 创建交易5、Kapitalbank 交易付款6、Kapitalbank 查询付款状态7:杂谈 1、前置 1、乌兹别克斯坦的一个支付, 这也是一个非常简单的支付, 很赞! Kapitalbank这是一家银行. 官网地址:https://developer…

图神经网络在智能诊断与预测中应用的指南和测试基准

论文:The emerging graph neural networks for intelligent fault diagnostics and prognostics: A guideline and a benchmark study 链接:The emerging graph neural networks for intelligent fault diagnostics and prognostics: A guideline and a…

视网膜电图特征可以检测成人的抑郁状态和治疗反应:一种机器学习方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 视网膜电图特征可以检测成人的抑郁状态和治疗反应:一种机器学习方法 摘要1. 引言2. 方法和材料2.1 人口与伦理声明2.2 入选标准、临床和生物学评估2.3 实验方案2.…

基于深度学习的脑电情绪识别所有模型以及各部分处理安装包

先放图: 1.读取edf文件,得到脑电信号文件: 2.将数据处理为相应模型所需要的相应的数据形式部分: 3.重点来了:所有脑电领域会用到的模型文件!!!!: 4.最后运行…

【基于深度学习的脑电图识别】TUH EEG 脑电图数据下载方法

TUH EEG 数据下载方法 数据集简介:数据集地址:申请数据:查看数据:下载数据:关注我的公众号:数据集简介: 这个数据集包括超过 25000 个脑电图研究,包括一个神经学家对测试的解释,一个简短的病人病史和关于病人的人口统计信息,如性别和年龄; 数据集详细介绍请移步我的…

014基于深度学习的脑电癫痫自动检测系统-2018(300引用)

An automated system for epilepsy detection using EEG brain signals based on deep learning approach a b s t r a c t 癫痫是一种威胁生命和具有挑战性的神经系统疾病,影响着世界各地的大量人群。对于其检测,脑电图(EEG)是一种常用的临床方法&…

(论文加源码)基于deap数据集的transformer结合注意力机制脑电情绪识别

本篇论文是2021年新发表的一篇论文。也是目前有源码的论文中唯一一篇使用transformer模型和注意力机制的论文源码(pytorch和tensorflow版本均有) 论文及源码见个人主页: https://download.csdn.net/download/qq_45874683/87658878 &#xf…

【基于深度学习的脑电图识别】脑电图信号处理:应用深度学习方法对癫痫发作进行识别和分类

EEG Signal Processing: Applying Deep Learning Methods to Identify and Classify Epilepsy Episodes 1. 背景:1.1 癫痫:1.2 脑电图诊断:2. 数据库:3. 系统结构:3.1 分割数据:3.2 LSTM 单元:4. 实验结果:5. 结论:关注我的公众号:1. 背景: 1.1 癫痫:

脑电图分类任务中深度神经网络模型的数据增强:综述2021

Data Augmentation for Deep Neural Networks Model in EEG Classification Task: A Review 脑电图(EEG)的分类是测量神经活动节奏振荡的关键方法,是脑机接口系统(BCI)的核心技术之一。然而,从非线性和非平…

信号处理--基于EEG脑电信号的抑郁症识别分类

本实验为生物信息课程专题实验的一个小项目。数据集为私有的EEG脑电信号。实现基于机器学习的脑电信号抑郁症病人的识别分类。 目录 1 加载需要的库函数 2 加载需要的数据 3 数据特征预处理和文本特征转换 4 数据编码 5 数据集分割 6 使用KNN进行数据分类 7 对训练模型…

019基于脑电图信号和CNN的癫痫发作检测2018

根据世界卫生组织的数据,癫痫是一种神经系统疾病,影响着大约5000万人。虽然脑电图(EEG)在癫痫患者的大脑活动监测和癫痫诊断中发挥着重要作用,但需要专家对所有脑电图记录进行分析,以检测癫痫活动。这种方法显然是耗时和繁琐的&am…

脑电情绪识别资源整理

每篇文章都在主页可以看到 脑电方向的资源比较少,整理了自己用过的所有资源。都已经成功运行过了,保证可以成功运行。 都是基于DEAP和SEED数据集的脑电情绪识别源码 几乎每份代码都在csdn上简单介绍过。 目前一共52份(会一直更新) 尽可能的找到了一些论文的源码(一共…

007利用癫痫脑电图数据检测癫痫发作和特征频率的深度卷积神经网络方法-2021

A Deep Convolutional Neural Network Method to Detect Seizures and Characteristic Frequencies Using Epileptic Electroencephalogram (EEG) Data Abstract 背景:脑电(EEG)结合深度学习计算方法诊断癫痫发作近年来备受关注。然而,到目前为止&…

轩辕:首个千亿级中文金融对话模型

背景 目前开源的大语言模型或多或少存在以下痛点: 缺少专门针对中文进行优化过的的大语言模型。 支持中文的开源模型的参数规模偏小,没有超过千亿。比如清华和智谱AI的ChatGLM-6B目前只开源了6B参数模型,盘古alpha也只开源了13B的模型。 支…

量化择时——SVM机器学习量化择时(第1部分—因子测算)

文章目录 机器学习在量化模型上的应用机器学习量化应用场景量化模型有效性的思考 机器学习模型在量化择时中的应用训练与预测流程训练数据特征构造 SVM模型与测算SVM训练与预测效果测算效果分析 最近ChatGPT比较火,NLP的同学们感触肯定会更深。NLP的应用为人所知并积…