使用SVM对文本数据进行多标签分类

时间:2018-04-22 05:15:30

标签: machine-learning svm weka libsvm multilabel-classification

我有一个excel文件中的数据,我需要使用它来使用SVM执行多标签分类。它有两列,如下所示。 '推文' - A,B,C,D,E,F,G和'类别'= X,Y,Z

推文类别

A X

B Y

C Z

D X,Y

E Y,Z

F X,Y,Z

G X,Z

鉴于推文,我想训练我的模型来预测它所属的类别。推文和类别都是文本。我正在尝试使用Weka的LibSVM分类器来进行分类,因为我读到它会进行多标签分类。我将csv文件转换为arff文件并将其加载到Weka中。然后我运行了“LibSVM”分类器。但是,我的结果非常差,如下所示。知道我做错了什么吗?是否可以使用“LibSVM”进行多标签文本分类?

正确分类的实例82 25.9494%

错误分类的实例234 74.0506%

Kappa统计0

平均绝对误差0.0423

均方根误差0.2057

相对绝对误差89.9823%

根相对平方误差134.3377%

实例总数316

1 个答案:

答案 0 :(得分:0)

SVM绝对可以用于多类分类。 我之前没有使用过Weka LibSV,但是如果您在输入任何类别的分类文本之前都需要进行一些数据清理,那么您就已经没有了。 清洁类型还取决于您的分类任务,但您可以查看以下用于文本分析的技术:

1)从文本中删除推文句柄

2)删除你知道肯定不会影响你的分类的停用词或单词。也许你只能保留代词并删除任何其他单词。您可以使用POS标记来执行此任务。更多信息here

3)删除标点符号

4)使用n-gram从文本中获取上下文含义。 This网站对其运作方式有一些很好的解释。从本质上讲,这意味着您将一系列单词视为一个特征,而不是将一个单词用作模型中的数据点。请注意,这可能会影响模型在训练时占用的内存量。

5)删除过于频繁或在数据集中不会过于频繁出现的单词。

6)在您的案例中平衡您的班级或类别。这意味着在训练模型之前,请确保训练数据具有相似数量的X,Y和Z类别。您的数据可能有很多分类为X和Y的推文,但在您的测试集中,您的推文主要映射到Z类别。