使用 SVM 对文本数据进行多标签分类
Posted
技术标签:
【中文标题】使用 SVM 对文本数据进行多标签分类【英文标题】:Multi-label classification using SVM for text data 【发布时间】:2018-10-02 09:58:20 【问题描述】:我有一个 Excel 文件中的数据,我需要使用它来使用 SVM 执行多标签分类。它有两列,如下所示。 'tweet' - A,B,C,D,E,F,G 和 'category' = X,Y,Z
推文类别
A×
乙是
CZ
D X,Y
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】:SVM 绝对可以用于多类分类。 我以前没有使用过 Weka LibSV,但如果你还没有使用过,则需要在输入文本进行任何分类之前进行一些数据清理。 清理的类型还取决于您的分类任务,但您可以查看以下在实践中用于文本分析的技术:
1) 从文本中删除 twitter 句柄
2) 删除停用词或您确定不会影响分类的词。也许您只能保留代词并删除任何其他词。您可以使用 POS 标记来执行此任务。更多信息here
3) 删除标点符号
4) 使用 n-gram 从文本中获取上下文含义。 This 网站对它的工作原理有一些很好的解释。从本质上讲,这意味着您会将一系列单词视为一个特征,而不是将单个单词用作模型中的数据点。请注意,这可能会影响模型在训练时占用的内存量。
5) 删除数据集中出现太频繁或不太频繁出现的词。
6) 在您的案例中平衡您的课程或类别。这意味着在训练模型之前,请确保训练数据具有相似数量的 X、Y 和 Z 类别。您的数据可能有很多分类为 X 和 Y 的推文,但在您的测试集中,您有大部分映射到 Z 类别的推文。
【讨论】:
以上是关于使用 SVM 对文本数据进行多标签分类的主要内容,如果未能解决你的问题,请参考以下文章
Python:如何在多标签类的 SVM 文本分类器算法中找到准确度结果