【NLTK系列02】NLTK库应用:使用 NLTK 进行情绪分析

news2024/9/30 22:29:47

使用 NLTK 进行情绪分析

上篇:【NLTK系列】:nltk库介绍(01)_无水先生的博客-CSDN博客

一、说明

        上篇《NLTK库介绍》介绍了NLTK的基本用法,本篇介绍NLTK的一个具体应用:“使用 NLTK 进行情绪分析”,本文示范如何应用NLTK完成一个独立小项目。

二、什么是情绪分析?

        情绪分析(也称为观点挖掘)是一种自然语言处理 (NLP) 方法,用于确定数据是正面、负面还是中立。对文本数据的情感分析经常用于帮助组织监控消费者反馈中的品牌和产品情绪并了解客户需求。

        NLTK的意思是自然语言处理工具包是python中的一个软件包,专门用于基于文本的分析。这些是所需的步骤:

1.导入必要的模块
2.导入数据集
3.数据预处理与可视化
4.模型构建
5.预测

三. 导入必要的模块:

在这里,我们将根据您的数据导入所需的所有基本导入模块。

import nltk
import random
import pandas as pd
import time
from bs4 import BeautifulSoup
import re

from nltk.corpus import stopwords
from nltk.sentiment import SentimentIntensityAnalyzer

from nltk.tokenize import word_tokenize
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

四. 导入数据集:

        现在,您可以使用熊猫导入数据集

df = pd.read_csv('your_data_here.csv')
or
dataset = pd.read_csv('your_data_here.csv')

五. 数据预处理和可视化:

        数据预处理将数据更改为可以在数据挖掘、机器学习和其他数据科学任务中更轻松、更高效地处理的格式。

        访问数据后,我们对其进行了清理。我们可以通过使用“isnull().sum()”技术快速确定数据集中缺失值的总数。

dataset.isnull().sum()

        然后我们可以替换 null 值或删除包含 null 值的相应行,以删除我们使用

dataset = data.dropna()

        有关数据可视化的更多信息,请点击此处

六. 模型构建:

        在开始开发模型之前,我们需要先做一个快速任务。我们知道,为了让我们正确理解然后对评论进行分类,人类需要冠词、行列式、连词、标点符号等。但对于机器来说,情况并非如此。因此,他们并不真正需要这些来对情绪进行分类;相反,如果他们在场,他们就会变得困惑。因此,需要“nltk”库才能完成此任务,就像任何其他情绪分析一样。

        “自然语言处理工具包”是首字母缩略词NLTK所代表的。这是执行情绪分析或任何基于文本的 ML 项目的基本库之一。因此,借助此库,您可以从删除标点符号开始,然后删除不会为文本添加任何有意义的单词。首先使用名为“punc_clean”的函数从每个审阅中删除所有标点符号。以下代码将实现相同的内容:

import nltk
def punc_clean(text):
    import string as st
    a=[w for w in text if w not in st.punctuation]
    return ''.join(a)
dataset['review'] = dataset['review'].apply(punc_clean)
dataset.head(2)

因此,标点符号被上面的代码删除。接下来,我们必须删除任何不会为语句添加含义的术语。这些术语被称为“停用词”,但我们希望保留“not”一词,因此我们使用此代码。

def remove_stopword(text):
    stopword=nltk.corpus.stopwords.words('english')
    stopword.remove('not')
    a=[w for w in nltk.word_tokenize(text) if w not in stopword]
    return ' '.join(a)
data['review'] = data['review'].apply(remove_stopword)

因此,我们目前只落后模型构建一步。下一个目标是为每个评论中的每个单词分配一个情绪分数。为了实现它,我们必须使用“sklearn”模块中的“TfidVectorizer”库,该库包含在“feature_extraction.text”中。应仔细阅读“TfidVectorizer”文档,以彻底掌握该库。

from sklearn.feature_extraction.text import TfidfVectorizer
vectr = TfidfVectorizer(ngram_range=(1,2),min_df=1)
vectr.fit(data['review'])
vect_X = vectr.transform(data['review'])

现在是构建模型的时候了。由于情绪分析是二元分类,因此“1”表示正面评价,“0”表示负面评价。

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
clf=model.fit(vect_X,data['sentiment'])
clf.score(vect_X,data['sentiment'])*100

七. 预测:

        因此,为了澄清模型的性能,我使用了两个简单的句子“我爱面包”和“我讨厌面包”,它们清楚地指的是积极和消极的情绪。

参考资料更多在这里: https://www.analyticsvidhya.com/blog/2021/06/sentiment-analysis-using-nltk-a-practical-approach/

玛丽亚姆·阿布巴卡尔

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++QT-day2

#include <bits/stdc.h>/*自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c;定义公有成员函数:初始化函数:void init(int w, int h)更改宽度的函数:set_w(int w)更改高度的函数:set_h(int h)输出该矩形的周长和面积函数:void sho…

安卓端App页面狂刷问题记录

一、场景 App基于webview混合开发&#xff0c;业务主要为前端h5实现&#xff0c;其中有一个功能为消息中心&#xff0c;当从通知栏点击消息跳转到指定页面时&#xff0c;前端会不停地刷新页面&#xff0c;一遍又一遍地重复同一批请求。 二、问题分析 1、刚开始怀疑是否前端里…

Mac电脑专业的任务管理软件 Omnifocus Pro 3中文 for mac

OmniFocus Pro是一款针对Mac平台的高效任务管理软件&#xff0c;它可以帮助用户处理日常事务、安排计划任务&#xff0c;同时提高用户的工作效率。该软件具有简单、直观、易于使用的特点&#xff0c;与其他电子任务清单工具相比&#xff0c;OmniFocus Pro更加专注于细节和定制化…

【postgresql】

看到group by 1&#xff0c;2 和 order by 1&#xff0c; 2。看不懂&#xff0c;google&#xff0c;搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” mean? 大概意思就是&#xff0c;group by&#xff0c; order by 后面跟数字&#xff0c;指的是 selec…

漏刻有时数据可视化大屏(16)数据指标KPI和柱图折线图混排

CSS样式表 /*面板*/ .pannel {width: 100%;margin-top: 30px;clear: both; }.item_l {float: left;width: 20%; /*3格60%*/margin: 0; }.item_r {float: left;width: 10%; /*4格40%*/margin: 0; }.item_child {float: left;width: 50%; }.item_child_b {float: left;width: 10…

OLED透明拼接屏,在包头市的市场表现与应用领域

包头&#xff0c;作为内蒙古自治区的重要城市之一&#xff0c;以其丰富的煤炭资源和快速发展的经济而闻名于世。 包头拥有着独特的地理位置和良好的交通条件&#xff0c;吸引了大量的投资和企业进驻&#xff0c;推动了城市的不断发展和现代化建设。 随着科技的不断进步&#…

深度学习基础知识 使用torchsummary、netron、tensorboardX查看模参数结构

深度学习基础知识 使用torchsummary、netron、tensorboardX查看模参数结构 1、直接打印网络参数结构2、采用torchsummary检测、查看模型参数结构3、采用netron检测、查看模型参数结构3、使用tensorboardX 1、直接打印网络参数结构 import torch.nn as nn from torchsummary im…

Linux入门攻坚——2、基础命令学习

Linux就是命令集的操作系统&#xff0c;精通Linux&#xff0c;就要先精通各种命令。 date &#xff1a; date [OPTION] ... [FORMAT] &#xff1a; 显示日期时间&#xff08;系统时钟&#xff09; FORMAT&#xff1a;格式符号 %D&#xff1a;月/日/年…

优思学院|零库存:丰田精益管理的成功之道(CLMP)

在如今竞争激烈的商业世界中&#xff0c;企业需要不断寻求新的方法来提高效率、降低成本&#xff0c;并确保产品的高质量。其中一种成功的策略是实施零库存管理&#xff0c;而日本汽车制造巨头丰田公司就以其独特的零库存策略而闻名全球。优思学院在本文中将会深入探讨什么是零…

Android Studio: unrecognized Attribute name MODULE

错误完整代码&#xff1a; &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd; (1.8.0_291) &#xfffd;г&#xfffd;&#xfffd;&#xfffd;&#xfffd;쳣&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xff…

C++对象模型(3)-- 类对象所占用的空间

类对象所占用的空间可以用sizeof()函数获取&#xff0c;在C对象模型中&#xff0c;类对象所占用的空间规则如下&#xff1a; (1) 空类占1字节&#xff0c;以使该类对象在内存得以配置一个地址。 (2) 对象所占用的空间由3个因素决定&#xff1a;非静态成员变量、虚函数、字节填…

图形学 -- Rasterization栅格化

参考视频&#xff1a;Lecture 05 Rasterization 1 (Triangles)_哔哩哔哩_bilibili 视锥&#xff1a; 定义一个垂直角度&#xff0c;定义宽高比 投到[-1,1]^3之后要呈现到屏幕上 屏幕 屏幕&#xff08;一个二位数组&#xff09; 屏幕是个典型的光栅成像设备 定义屏幕空间 映…

【每日一练】勾股定理困难版

目录 题目官方给的解题思路源代码附最大公因数辗转相除法更相减损术 所有因数参考文献 题目 给定斜边z的值&#xff0c;求所有直角边x和y的组合数&#xff08;x、y和z都是正整数&#xff09;。 仅有一行输入&#xff0c;即斜边z的值&#xff08;z是正整数&#xff0c;且z<1…

23种经典设计模式:单例模式篇(C++)

前言&#xff1a; 博主将从此篇单例模式开始逐一分享23种经典设计模式&#xff0c;并结合C为大家展示实际应用。内容将持续更新&#xff0c;希望大家持续关注与支持。 什么是单例模式&#xff1f; 单例模式是设计模式的一种&#xff08;属于创建型模式 (Creational Pa…

将本地代码提交到git新仓库

建仓 首先需要新建一个仓库&#xff0c;注意一定要是空仓库&#xff0c;不要选任何初始化 在代码所在目录右击&#xff0c;进入Git Bash Here 初始化git仓库 git init将文件添加进库 git add .进行提交&#xff0c;-m 后面引号中的内容是本次提交内容&#xff0c;自行填写…

STM32F103 最小系统 PCB 设计与原理

这篇文章是来自我学习&#xff1a; ​​​​​​带着你从手册开始画板 STM最小系统板教程系列(一)_哔哩哔哩_bilibili​​​​​​ 这套教程的笔记&#xff0c;同时本文中也参考了其他教程以及我遇到的困惑与自答&#xff0c;最终汇总。 一、单片机最小系统 单片机最小系统是由…

Centos7中安装Jenkins教程

1.必须先配置jdk环境&#xff0c;安装jdk参考 Linux配置jdk 2.先卸载Jenkins # rpm卸载 rpm -e jenkins # 检查是否卸载成功 rpm -ql jenkins # 彻底删除残留文件 find / -iname jenkins | xargs -n 1000 rm -rf 3.安装Jenkins 在 /usr/ 目录下创建 jenkins文件夹 mkdir -p je…

Fastadmin 子级菜单展开合并,分类父级归纳

这里踩过一个坑&#xff0c;fastadmin默认的展开合并预定义处理的变量是pid。 所以建表时父级id需要是pid&#xff1b; 当然不是pid也没关系&#xff0c;这里以cat_id为例&#xff0c;多加一步处理一样能实现。 废话少说上代码&#xff1a; 首先在控制器&#xff0c; 引用…

使用HbuilderX运行uniapp中小程序项目

下载HbuilderX&#xff0c;下载链接&#xff1a; HBuilderX-高效极客技巧 导入相关项目。下载微信开发者工具。使用微信开发者工具打开&#xff1a;注意&#xff1a;如果是第一次使用&#xff0c;需要先配置小程序ide的相关路径&#xff0c;才能运行成功。如下图&#xff0c;需…