赞
踩
在实现BERT大模型微调工作之前,将定义一个简单的朴素贝叶斯基准模型来对微博进行分类。
(1)首先,需要使用CountVectorizer对微博进行标记化。下面代码使用 CountVectorizer 对训练集和测试集的微博进行标记化。fit_transform 方法用于训练并转换训练集,而 transform 方法用于仅对测试集进行转换,保持与训练集相同的标记化方式。这将微博文本转化为词频矩阵,用于朴素贝叶斯分类器的训练和测试。
- clf = CountVectorizer()
- X_train_cv = clf.fit_transform(X_train)
- X_test_cv = clf.transform(X_test)
(2)然后,创建标记化微博的 TF-IDF(词频-逆文档频率)版本,例如下面代码使用 TfidfTransformer 对标记化后的微博进行 TF-IDF 转换。首先,通过 fit 方法对训练集进行拟合,然后使用 transform 方法分别对训练集和测试集进行转换。TF-IDF转换将词频矩阵转化为重要性加权的矩阵,用于训练和测试朴素贝叶斯分类器。
- tf_transformer = TfidfTransformer(use_idf=True).fit(X_train_cv)
- X_train_tf = tf_transformer.transform(X_train_cv)
- X_test_tf = tf_transformer.transform(X_test_cv)
(3)现在可以定义朴素贝叶斯分类器模型,下面代码创建了一个朴素贝叶斯分类器模型,并使用训练集的 TF-IDF 转换后的特征 X_train_tf 和标签 y_train_le 进行训练。模型学习了训练集中的模式和特征,以便对微博进行情感分类。
- nb_clf = MultinomialNB()
- nb_clf.fit(X_train_tf, y_train_le)
(4)下面代码使用训练好的朴素贝叶斯分类器模型对测试集进行预测,并打印输出了朴素贝叶斯分类器的分类报告。该报告包括了模型在每个类别(Negative、Neutral、Positive)上的准确率、召回率和 F1 值等评估指标。
- nb_pred = nb_clf.predict(X_test_tf)
-
- print('\tClassification Report for Naive Bayes:\n\n',classification_report(y_test_le,nb_pred, target_names=['Negative', 'Neutral', 'Positive']))
执行后打印输出了朴素贝叶斯分类器的分类报告,这有助于了解模型在测试集上的性能。
- Classification Report for Naive Bayes:
-
- precision recall f1-score support
-
- Negative 0.70 0.78 0.74 1629
- Neutral 0.60 0.47 0.53 614
- Positive 0.73 0.72 0.73 1544
-
- accuracy 0.70 3787
- macro avg 0.68 0.66 0.66 3787
- weighted avg 0.70 0.70 0.70 3787
由此可见,算法的性能还不错。F1 分数在人口更多的类别(Negative 和 Positive 情感)中大约为 70%,而在 Neutral 类别中较低(F1=0.53)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。