基于词级ngram的词袋模型对twitter数据进行情感分析

按照阿光的项目做出了学习笔记,pytorch深度学习实战项目100例

基于词级ngram的词袋模型对twitter数据进行情感分析

什么是 N 符?

N 格是指给定文本或语音样本中 n 个项目的连续序列。这些项目可以是音素、音节、字母、单词或碱基对,具体取决于应用。N-grams 广泛应用于计算语言学和文本分析中的各种任务,如文本预测、拼写校正、语言建模和文本分类。它们为文本挖掘和自然语言处理(NLP)提供了一种简单而有效的方法。

###了解 N 符

n-gram 的概念很简单:它是由 ‘n’ 个连续项组成的序列。下面是一个细分:

  • Unigram (n=1): 单个项目或单词。
  • Bigram (n=2): 一对连续的项目或单词。
  • Trigram(n=3): 连续的三联项或词。
    在这里插入图片描述
示例

考虑一下这个句子: “敏捷的棕狐狸跳过懒惰的狗"。

  • Unigram: “The“、”quick“、”brown“、”fox“、”jumps“、”over“、”the“、”l lazy“、”dog”
  • Bigram: “快“、”棕色快“、”棕色狐狸“、”狐狸跳“、”跳过“、”过“、”懒“、”懒狗”
  • Trigram: “棕色的快“、”棕色的狐狸快“、”棕色的狐狸跳“、”狐狸跳过“、”跳过“、”跳过懒惰“、”懒惰的狗”

上下文和用途

  • Unigram: 除单个词条外,这些词条不包含任何上下文。
  • Bigrams: 通过将连续的项目配对,提供最基本的语境。
  • Trigrams: 这些词组开始形成更加连贯和与上下文相关的短语。

随着’n’的增加,n-grams 可以捕捉到更多的上下文,但由于计算费用的增加和数据的稀疏性,其收益也会逐渐减少。

###实际应用

N-gram 在各种 NLP 任务中至关重要:

  1. 文本预测: 预测序列中的下一个词。
  2. 拼写纠正: 根据上下文识别并纠正拼写错误的单词。
  3. 语言建模:创建理解和生成人类语言的模型。4.文本分类: 根据内容将文本归入预定义的类别。

通过理解和利用 n-gram,可以提高 NLP 模型在这些任务中的性能和准确性。

Twitter 情感分析数据集包含 1,578,627 条分类推文,每一行的正面情感标记为 1,负面情感标记为 0。我建议使用语料库的 1/10 来测试你的算法,而其余的可以用来训练你用来进行情感分类的任何算法。我试着用一个非常简单的 Naive Bayesian 分类算法来使用这个数据集,结果是 75% 的准确率,考虑到长期的猜测工作方法会达到 50% 的准确率,一个简单的方法可以给你带来比猜测工作高 50% 的性能,这并不是很好,但考虑到一般情况下(尤其是在涉及到社交传播情感分类时),人类进行的 10% 的情感分类是有争议的,任何分析文本整体情感的算法所希望达到的最高相对准确率是 90%,这并不是一个坏的起点。

http://thinknook.com/twitter-sentiment-analysis-training-corpus-dataset-2012-09-22/

x_train, x_test, y_train, y_test = train_test_split(data['SentimentText'], data['Sentiment'], test_size=0.1,random_state=2022)print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)
#(682294,)             (75811,)     (682294,)      (75811,)

在这里插入图片描述

import pandas as pd
import csv
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_scoretry:data = pd.read_csv('/content/drive/MyDrive/Niek/Sentiment Analysis Dataset.csv', quoting=csv.QUOTE_NONE, on_bad_lines='skip', encoding='utf-8')
except pd.errors.ParserError as e:print(f"Error parsing CSV: {e}")data

在这里插入图片描述
TF-IDF 是 Term Frequency Inverse Document Frequency 的缩写。这是一种非常常见的算法,用于将文本转化为有意义的数字表示,并将其用于机器算法的预测。在深入解释之前,让我们先举例说明并探索两种不同的辣味稀疏矩阵。这可以让你对我下面要解释的内容有一个整体的了解。简单的基本示例数据 :

# 初始化TF-IDF向量化器
vectorizer_word = TfidfVectorizer(max_features=40000,  # 最多使用40000个特征词min_df=5,  # 至少在5个文档中出现的词才会被考虑max_df=0.5,  # 在50%以上的文档中出现的词会被忽略analyzer='word',  # 词级别的分析stop_words='english',  # 去除英语停用词ngram_range=(1, 2))  # 考虑1-2元组# 使用训练数据拟合向量化器
vectorizer_word.fit(x_train.astype("U").str.lower())# 将训练集和测试集文本转化为TF-IDF矩阵
tfidf_matrix_word_train = vectorizer_word.transform(x_train.astype("U").str.lower())
print("TF-IDF Matrix for Training Data (Dense Format):\n")
print(tfidf_matrix_word_train)
tfidf_matrix_word_test = vectorizer_word.transform(x_test.astype("U").str.lower())
print("TF-IDF Matrix for Test Data (Dense Format):\n")
print(tfidf_matrix_word_test)

该代码段首先初始化并训练一个逻辑回归模型,然后使用训练好的模型对训练集和测试集进行预测,最后计算并打印模型在训练集和测试集上的准确性。

# 初始化并训练逻辑回归模型
model = LogisticRegression(solver='sag')
model.fit(tfidf_matrix_word_train, y_train)# 预测训练集和测试集的结果
y_pred_train = model.predict(tfidf_matrix_word_train)
y_pred_test = model.predict(tfidf_matrix_word_test)# 打印训练集和测试集的准确性
print(accuracy_score(y_train, y_pred_train))
#0.8014386845292767
print(accuracy_score(y_test, y_pred_test))
#0.7856396908790025

代码资源

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

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

相关文章

php 存储复杂的json格式查询(如:经纬度)

在开发中,有时我们可能存了一些复杂json格式不知道怎么查。我这里提供给大家参考下: 一、先上表数据格式(location字段的possiton经纬度以逗号分开的) {"title":"澳海文澜府","position":"11…

redis高可用之主从复制、哨兵以及Cluster集群

目录 一、Redis主从复制 1)主从复制的作用 2)主从复制流程 3)搭建Redis主从复制 1、部署redis服务器 2、修改Redis配置文件(所有节点操作) 3、验证主从复制结果 二、哨兵模式 1)哨兵的作用 2&…

北醒单点激光雷达更改id和波特率以及Ubuntu20.04下CAN驱动

序言: 需要的硬件以及软件 1、USB-CAN分析仪使用顶配pro版本,带有支持ubuntu下的驱动包的,可以读取数据。 2、电源自备24V电源 3、单点激光雷达接线使用can线可以组网。 一、更改北醒单点激光雷达的id号和波特率 安装并运行USB-CAN分析仪自带…

elasticsearch8.14.1集群安装部署

elasticsearch安装部署,首先需要准备至少三台服务器,本例再windows11下安装三台vmware虚拟机,利用centOS7系统模拟服务器环境。 本例假设你已经安装了三台vmware和centOS7,且centOS7运行正常。接下来我们直接讲解elasticsearch下载…

SQL实战宝典:快速上手数据库查询与优化

文章目录 SQL 速成手册SQL 的主要功能1、基本查询语句2、表操作语句3、数据操作语句4、函数与聚合操作5、子查询与联接6、高级操作7、性能优化与安全性 基本查询语句表操作语句数据操作语句函数与聚合操作子查询与联接高级操作性能优化与安全性 SQL 速成手册 SQL(S…

BUUCTF [WUSTCTF2020]朴实无华

首先进来不知道要干啥,上dirsearch扫出个机器人协议,一看有点东西 直接访问很明显这不是flag 主页面看他说什么不能修改头部,看一下数据包 发现了好东西 看到源码,又得绕过了。不过这编码有点问题导致乱码了 找个在线网站稍微恢复…

git代码备份

终端备份常用指令 git reflog //查看更新 git add filename //提交修改 git commit -m "20240825修改" //备注修改 git reset --hard 1094a //回退版本 exit …

【深入理解SpringCloud微服务】深入理解Eureka核心原理

深入理解Eureka核心原理 Eureka整体设计Eureka服务端启动Eureka三级缓存Eureka客户端启动 Eureka整体设计 Eureka是一个经典的注册中心,通过http接收客户端的服务发现和服务注册请求,使用内存注册表保存客户端注册上来的实例信息。 Eureka服务端接收的…

FPGA-ROM IP核的使用

1.理论 ROM全称:Read-Only Memory,也就是只读型固态半导体存储器,即一旦存储信息,无法再改变,信息也不会因为电源关闭消失。但在FPGA中,实际使用的ROM IP核并不是真正的ROM,其实都是内部的RAM资…

spring security如何适配盐存在数据库中的密码

19.token认证过滤器代码实现_哔哩哔哩_bilibili19.token认证过滤器代码实现是SpringSecurity框架教程-Spring SecurityJWT实现项目级前端分离认证授权-挑战黑马&尚硅谷的第20集视频,该合集共计41集,视频收藏或关注UP主,及时了解更多相关视…

24年支付行业概况与未来

​ 一、行业背景介绍 支付行业作为现代金融体系的基石,正经历着前所未有的变革。随着科技的发展和人们对便捷支付方式的需求不断提高,支付行业在近年来得到了迅猛发展。在我国,支付行业经过多年的发展和市场竞争,已经形成了多元化…

Navicat 17 新特性 | Navicat BI 功能革新升级,助力企业深度挖掘数据潜能

随着 Navicat 17 的发布,在业界引起了广泛的共鸣与热议。我们曾深入剖析其众多革新特性,包括模型设计创新与优化、高效的查询与配置、用户界面交互体验再升级,原生适配国产平台和操作系统和数据字典提升数据结构清晰度,这些新特性…

【第12章】Spring Cloud之集成 Spring Cloud Gateway

文章目录 前言一、新建项目1. 项目结构2. 引入依赖3. 启动类4. 基本配置 二、新建配置三、新建服务1. 提供者2. 消费者 四、单元测试1. 启动网关服务2. 提供者3. 消费者 总结 前言 Spring Cloud Gateway是一个基于Spring Framework 5、Spring Boot 2和Project Reactor等技术构…

python的csv库常用操作

csv 模块是 Python 标准库中的一个模块,用于处理 CSV(逗号分隔值)文件。它提供了简单易用的功能来读取和写入 CSV 文件。以下是一些常用的操作: 一、读取 CSV 文件 新建文件data.csv,内容如下: 使用 csv.…

浪潮自研交换机系列常见问题处理

CN61108PC-V-H 不能PING通任何地址,也不能被PING 输入ip traceroute enable既可。注意视图 交换机通过console口远程登录至其他交换机,掉线后console口无法使用 例如有2台交换机A和B,在A交换机上插上console线登录后,在A通过SSH…

nodejs安装及环境配置建材商城管理系统App

✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围:Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容:免费功能设计、免费提供开题答辩P…

如何应对Android面试官 -> 常用数据结构如何进行优化

前言 本章我们开始讲解性能优化相关的话题,首先我们来看下数据结构如何优化: 性能优化 性能优化的本质:线上 APM 的性能监控,而性能监控通常是以下技术点 ByteCode、Hook(PLT Hook)、JS注入(采…

tslib 库-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

tslib 库 tslib 简介 tslib 库,这是 Linux 系统下,专门为触摸屏开发的应用层函数库,开源 功能与作用:作为触摸屏驱动和应用层之间的适配层,封装了读取和解析触摸屏数据的复杂过程,提供API接口 数据处理&…

c++ 高精度加法(只支持正整数)

再给大家带来一篇高精度,不过这次是高精度加法!话不多说,开整! 声明 与之前那篇文章一样,如果看起来费劲可以结合总代码来看 定义 由于加法进位最多进1位,所以我们的结果ans[]的长度定义为两个加数中最…

零基础学SpringBoot(一)--初识SpringBoot

1. SpringBoot简介 SpringBoot 是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说Spring Boot能简化我们之前采用SSM(SpringMVC Spring MyBatis)框架进行开发的过程。 以前我们采用SSM框架进行开发的时候&#xff0c…