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

代码资源

相关推荐
吴佳浩 Alben5 小时前
Agent 怎么做自动化评测?构建端到端的 Agent Evaluation 体系
人工智能·语言模型·架构·自动化·ai编程
Dawson Zhu6 小时前
从单体到联邦:多Agent架构的必要性与设计哲学
人工智能·语言模型·架构·aigc·agi
Dawson Zhu18 小时前
Agent Skill 自进化架构深度解析:从发现到落地的完整闭环
人工智能·语言模型·架构·aigc·agi
初恋叫萱萱19 小时前
企业微信智能化办公机器人部署与大语言模型集成实操深度指南
语言模型·机器人·企业微信
B站计算机毕业设计超人19 小时前
计算机毕业设计知识图谱(Neo4j)+大语言模型LLM+GraphRAG图检索增强技术的考研院校推荐、分数线预测与智能问答系统(源码+文档+PPT+讲解)
大数据·人工智能·语言模型·毕业设计·知识图谱·课程设计·推荐算法
Zzj_tju20 小时前
蒸馏:从教师软概率到 response 监督的最小复现
人工智能·语言模型·自然语言处理
木圭的AI时代指南20 小时前
为了跑星火Spark-X2.5,我把 llama.cpp 重新编译了一遍
大数据·人工智能·ai·语言模型
土星云SaturnCloud20 小时前
VILA 视觉语言模型边缘部署实战
服务器·人工智能·语言模型·自然语言处理·边缘计算
一枚爱吃大蒜的程序员1 天前
CSDN文章-注意力约束QLoRA教育大模型微调
人工智能·机器学习·语言模型·qlora·大模型微调·注意力约束
海上小飞龙2 天前
大模型推理的两阶段:一次 Prefill,加上多次 Decode
人工智能·深度学习·语言模型