大模型系列:OpenAI使用技巧_使用文本向量化Embeding进行分类

发布时间:2023年12月30日

有许多方法可以对文本进行分类。本笔记本分享了使用嵌入进行文本分类的示例。对于许多文本分类任务,我们已经看到微调模型比嵌入效果更好。请参见微调分类.ipynb中分类的微调模型示例。我们还建议拥有比嵌入维度更多的示例,但我们在这里并没有完全实现。

在这个文本分类任务中,我们基于评论文本的嵌入预测食品评论的评分(1到5)。我们将数据集分为训练集和测试集,以便在未见数据上实际评估性能。数据集是在从数据集获取嵌入笔记本中创建的。

# 导入必要的库
import pandas as pd
import numpy as np
from ast import literal_eval
from sklearn.ensemble import RandomForestClassifier  # 随机森林分类器
from sklearn.model_selection import train_test_split  # 数据集划分函数
from sklearn.metrics import classification_report, accuracy_score  # 分类报告和准确率评估

# 加载数据
datafile_path = "data/fine_food_reviews_with_embeddings_1k.csv"  # 数据文件路径
df = pd.read_csv(datafile_path)  # 读取csv文件
df["embedding"] = df.embedding.apply(literal_eval).apply(np.array)  # 将嵌入向量从字符串转换为数组

# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
    list(df.embedding.values), df.Score, test_size=0.2, random_state=42
)

# 训练随机森林分类器
clf = RandomForestClassifier(n_estimators=100)  # 创建随机森林分类器对象
clf.fit(X_train, y_train)  # 在训练集上拟合分类器
preds = clf.predict(X_test)  # 在测试集上进行预测
probas = clf.predict_proba(X_test)  # 预测每个类别的概率

# 生成分类报告并输出准确率评估
report = classification_report(y_test, preds)  # 生成分类报告
print(report)  # 输出分类报告
              precision    recall  f1-score   support

           1       0.89      0.40      0.55        20
           2       1.00      0.38      0.55         8
           3       1.00      0.18      0.31        11
           4       1.00      0.26      0.41        27
           5       0.75      1.00      0.86       134

    accuracy                           0.77       200
   macro avg       0.93      0.44      0.53       200
weighted avg       0.82      0.77      0.72       200

我们可以看到模型已经学会了很好地区分不同的类别。五星级评论总体上表现最好,这并不太令人惊讶,因为它们在数据集中最为常见。

# 从utils.embeddings_utils模块中导入plot_multiclass_precision_recall函数
from utils.embeddings_utils import plot_multiclass_precision_recall

# 调用plot_multiclass_precision_recall函数,传入probas、y_test、[1, 2, 3, 4, 5]和clf四个参数
# probas:预测结果的概率值
# y_test:测试集的真实标签
# [1, 2, 3, 4, 5]:标签的取值范围
# clf:分类器
plot_multiclass_precision_recall(probas, y_test, [1, 2, 3, 4, 5], clf)
RandomForestClassifier() - Average precision score over all classes: 0.87

毫不意外,5星和1星的评论似乎更容易预测。也许有更多的数据,2-4星之间的细微差别可以更好地预测,但人们如何使用中间分数也可能更加主观。

文章来源:https://blog.csdn.net/wjjc1017/article/details/135301739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。