(11-3)基于大模型的情感分析系统(Tensorflow+BERT+RoBERTa+Sklearn):准备工作

11.5  准备工作

首先通过os.walk函数递归遍历指定目录及其子目录,收集文件的完整路径并输出。其次,导入多个Python库,涵盖数据处理、机器学习、文本处理和可视化,以及深度学习方面的模型建立。最后,定义了一个函数用于生成混淆矩阵热力图,以评估模型在文本分类任务中的性能。

11.5.1  遍历数据集目录

使用os.walk函数递归遍历指定目录及其子目录,获取每个文件的完整路径,并将这些路径打印出来。具体实现代码如下所示。

import os
# 遍历指定目录及其子目录中的所有文件
for dirname, _, filenames in os.walk('input'):
    for filename in filenames:
        # 打印文件的完整路径
        print(os.path.join(dirname, filename))

执行后会输出:

input/covid-19-nlp-text-classification/Corona_NLP_test.csv
input/covid-19-nlp-text-classification/Corona_NLP_train.csv

11.5.2  准备环境

下面代码导入了多个Python库,用于进行数据处理、机器学习、文本处理和可视化工作。主要包括NumPy、Pandas、TensorFlow、Matplotlib、Seaborn等。其中,对数据进行处理使用了正则表达式、NLTK(Natural Language Toolkit)和emoji库。在机器学习方面,使用了Scikit-learn中的文本特征提取和朴素贝叶斯模型。此外,还引入了Hugging Face的transformers库,用于使用BERT和roBERTa模型进行文本处理。在深度学习方面,使用了TensorFlow和Keras。最后,为了结果的可重现性,设置了一个种子(seed),并对绘图样式进行了一些配置。

import numpy as np
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
import seaborn as sns

# 数据处理
import re, string
import emoji
import nltk

from sklearn import preprocessing
from imblearn.over_sampling import RandomOverSampler
from sklearn.model_selection import train_test_split

# 朴素贝叶斯
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import MultinomialNB

# Transformers
from transformers import BertTokenizerFast
from transformers import TFBertModel
from transformers import RobertaTokenizerFast
from transformers import TFRobertaModel

# Keras
import tensorflow as tf
from tensorflow import keras

# 指标
from sklearn.metrics import accuracy_score, f1_score
from sklearn.metrics import classification_report, confusion_matrix

# 为了可重复性设定种子
seed = 42

# 设定绘图风格
sns.set_style("whitegrid")
sns.despine()
plt.style.use("seaborn-whitegrid")
plt.rc("figure", autolayout=True)
plt.rc("axes", labelweight="bold", labelsize="large", titleweight="bold", titlepad=10)

11.5.3  绘制混淆矩阵热力图函数

定义函数conf_matrix(y, y_pred, title),用于绘制混淆矩阵热力图。通过传入真实标签 y、预测标签 y_pred 和图表标题 title,生成一个热力图,以可视化模型在分类任务中的性能。混淆矩阵的每个元素表示模型对应类别的预测情况,颜色深浅反映了预测的准确程度。

def conf_matrix(y, y_pred, title):
    # 绘制混淆矩阵的热力图,用于评估模型性能
    # y: 真实标签, y_pred: 预测标签, title: 图表标题
    fig, ax = plt.subplots(figsize=(5, 5))
    labels = ['Negative', 'Neutral', 'Positive']
    ax = sns.heatmap(confusion_matrix(y, y_pred), annot=True, cmap="Blues", fmt='g', cbar=False, annot_kws={"size": 25})
    plt.title(title, fontsize=20)
    ax.xaxis.set_ticklabels(labels, fontsize=17)
    ax.yaxis.set_ticklabels(labels, fontsize=17)
    ax.set_ylabel('Test', fontsize=20)
    ax.set_xlabel('Predicted', fontsize=20)
    plt.show()

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值