当前位置: 首页 > news >正文

基于词级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.lryc.cn/news/406201.html

相关文章:

  • Linux-Centos-改密码(单用户登陆)
  • java实现OCR图片识别,RapidOcr开源免费
  • PCB工艺边设计准则
  • CTF-NSSCTF题单[GKCTF2020]
  • redis的分片集群(仅供自己参考)
  • 自动驾驶-机器人-slam-定位面经和面试知识系列01之常考公式推导(01)
  • netty入门-5 ServerBootstrap与Bootstarp
  • JavaEE - Spring Boot 简介
  • SwiftUI革新:Xcode UI开发的新纪元
  • 22、基于共享内存的数据结构——用十个块来提高并发性
  • 【ffmpeg命令入门】实现画中画
  • 基于 LangChain+LangGraph 来实现一个翻译项目
  • javascript 如何将 json 格式数组转为 excel 表格| sheetJS
  • 网页制作技术在未来会如何影响人们的生活?
  • 【计算机网络】网络层——IPv4地址(个人笔记)
  • c++ 学习笔记之多线程:线程锁,条件变量,唤醒指定线程
  • 《0基础》学习Python——第二十三讲__网络爬虫/<6>爬取哔哩哔哩视频
  • 第13周 简历职位功能开发与Zookeeper实战
  • 什么是大型语言模型 (LLM)
  • 【人工智能】AI时代:探索个人潜能的新视角
  • pyaudio VAD通过声音音频值分贝大小检测没人说话自动停止录制
  • 《后端程序猿 · @Value 注释说明》
  • 【LeetCode】71.简化路径
  • DockerCompose 安装环境
  • 学习笔记之JAVA篇(0724)
  • 【Android】广播机制
  • 【.NET全栈】ASP.NET开发Web应用——ASP.NET数据绑定技术
  • MySQL的账户管理
  • FastGPT 源码调试配置
  • SQL Server数据迁移新纪元:数据库数据泵(Data Pump)使用指南