基于词级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/

bash 复制代码
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,)
bash 复制代码
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_score

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

python 复制代码
# 初始化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)

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

bash 复制代码
# 初始化并训练逻辑回归模型
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

代码资源

相关推荐
AI 研究所2 小时前
1024开发者节:开源发布,引领生态繁荣
人工智能·语言模型·开源·大模型·交互·agent
leafff1232 小时前
AI数据库研究:RAG 架构运行算力需求?
数据库·人工智能·语言模型·自然语言处理·架构
闲看云起11 小时前
一文了解RoPE(旋转位置编码)
人工智能·语言模型·自然语言处理
鲸鱼在dn20 小时前
大型语言模型推理能力评估——李宏毅2025大模型课程第9讲内容
人工智能·语言模型·自然语言处理
PKNLP20 小时前
14.大语言模型微调语料构建
人工智能·语言模型·模型微调
Wu Liuqi20 小时前
【大模型学习4】大语言模型(LLM)详解
人工智能·学习·语言模型·大模型
学历真的很重要21 小时前
LangChain V1.0 Messages 详细指南
开发语言·后端·语言模型·面试·langchain·职场发展·langgraph
柳安忆1 天前
【论文阅读与项目复现】Hypothesis Generation with Large Language Models
论文阅读·人工智能·语言模型
汉克老师1 天前
CCF--LMCC大语言模型能力认证官方样题(第一赛(青少年组)第二部分 程序题 (26--30))
人工智能·语言模型·自然语言处理·lmcc
悟乙己1 天前
超越文本:利用大型语言模型进行时间序列预测(第1部分)
人工智能·语言模型·自然语言处理