【问题标题】:How to have multioutput in text classification?如何在文本分类中进行多输出?
【发布时间】:2019-10-08 22:00:43
【问题描述】:

我正在做方言文本分类。问题是一些推文,可以分为方言A和B,我该怎么做?我想做然后自动计算精度,我不想手动做。当我不将它们同时归类为 A 和 B 时,它给了我许多错误分类的文本。

但在训练中,它们并没有被归类为方言 A 和 B。而是分开进行。

【问题讨论】:

  • 你需要尝试不同的东西。一个是你可以在 A 和 B 都可能的情况下创建一个新类。所以现在你的数据将是一个 3 类问题。或者你可以尝试多标签分类。看到这个:scikit-learn.org/stable/modules/multiclass.html

标签: python scikit-learn nlp text-classification


【解决方案1】:

利用OneHotEncoding

from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder

# Your target will look similar to
target = ['A', 'A', 'B']

# After OneHotEncoding
[[1, 0],
 [1, 0],
 [0, 1]]

在此目标上进行训练后,您的模型将预测该类别的概率。您可以设置一个阈值来将预测分类到这两个类

# Sample output
[[1., 0.],
 [0.5, 0.5],
 [0.1, 0.9]]

predictions = ['A', 'A and B', 'B']

Example

【讨论】:

  • 我有一些问题:1)谁来输出'A和B'?是我,还是朴素贝叶斯分类器(我正在使用朴素贝叶斯)? 2)是否可以自动使用 scikit learn 中的 accuracy_score ?因为在我的训练集中没有“A 和 B”标签。那么您认为我可以自动计算准确性吗? 3)我是否必须访问每个标签并检查它是 A 还是 B,然后计算它们的概率之间的差异并以此为基础进行输出?没有更自动化的方法吗?
  • 1) 输出'A and B' 将在计算阈值后手动完成。当您在scikit-learn 中使用Naive Bayes 分类器时,请查看predict_prob() 方法,它很有可能返回类,因此您不必使用OneHotEncoder
  • 2) accuracy_score 不能直接使用,因为数据集中没有组合类。 3) 是的! - 如果“手动”是指运行一个循环来计算阈值保持后的输出
猜你喜欢
  • 2017-02-01
  • 2015-08-21
  • 2018-12-15
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2021-04-28
相关资源
最近更新 更多