如何查看情感分类神经网络识别错误的文本?代码运行报错求助
找出情感分类模型误判的文本
嘿,我来帮你搞定找出模型误判文本的事儿!其实步骤很清晰,咱们一步步来:
第一步:先让模型完成预测
首先你得确保模型已经训练好了(比如你的模型变量叫model),然后用它对目标文本做预测。这里要注意,预测前的文本预处理必须和你训练模型时完全一致(比如分词、转成词向量/TF-IDF特征这些),不然会报错哦。示例代码如下:
# 替换成你自己的预处理函数,比如你训练时用的分词、特征提取逻辑 x_processed = your_preprocess_function(x) # 获取模型预测结果 y_pred = model.predict(x_processed) # 如果模型输出的是概率(比如二分类输出0-1之间的数值),要转成和真实标签一致的类别格式 # 二分类场景示例:把概率转成0/1标签 y_pred = (y_pred > 0.5).astype(int) # 多分类场景示例:取概率最大的类别索引 # y_pred = np.argmax(y_pred, axis=1)
第二步:对比标签,筛选误判样本
把原始文本、真实情感标签、模型预测的标签合并到一个DataFrame里,然后直接筛选出真实标签和预测标签不一致的行就行啦:
import pandas as pd import numpy as np # 把数据整合到一起 result_df = pd.DataFrame({ '评论文本': x, '真实情感': y, '模型预测情感': y_pred }) # 筛选出误判的样本 misclassified_samples = result_df[result_df['真实情感'] != result_df['模型预测情感']] # 直接打印查看,或者保存成CSV方便后续分析 print(misclassified_samples) misclassified_samples.to_csv('误判样本.csv', index=False)
针对你给出的代码补充说明
你之前合并了训练和测试数据并做了拆分,如果你只想看测试集的误判样本,那就只处理x_test和y_test就行:
# 处理测试集文本 x_test_processed = your_preprocess_function(x_test) # 测试集预测 y_test_pred = model.predict(x_test_processed) # 转成和y_test一致的标签格式 y_test_pred = (y_test_pred > 0.5).astype(int) # 生成测试集误判样本 test_misclassified = pd.DataFrame({ '评论文本': x_test, '真实情感': y_test, '模型预测情感': y_test_pred })[lambda df: df['真实情感'] != df['模型预测情感']] print(test_misclassified)
你之前自定义函数报错的常见原因
- 预处理不一致:训练时用了特定的分词器、停用词表或者特征维度,预测时没同步,导致输入模型的特征和训练时不匹配
- 标签格式不统一:真实标签是字符串(比如'positive'/'negative'),但模型输出是数字(0/1),类型不匹配导致对比失败,记得转成同一格式
- 索引混乱:合并数据后索引没对齐,记得用
reset_index(drop=True)确保所有数据的索引是连续一致的
这样你就能轻松定位到那些被模型误判的文本,还能分析这些样本的共性(比如是不是有大量 slang、拼写错误,或者情感表达很隐晦),帮你优化模型性能~
内容的提问来源于stack exchange,提问作者Midnight
相关产品推荐
相关产品推荐

