如何使用 reuters-21578 数据集和 svm.net 进行文本分类?

Posted

技术标签:

【中文标题】如何使用 reuters-21578 数据集和 svm.net 进行文本分类?【英文标题】:How to use reuters-21578 dataset with svm.net for text classification? 【发布时间】:2011-08-31 03:18:29 【问题描述】:

我刚刚开始了一个文本分类的应用程序,我已经阅读了很多关于这个主题的论文,但是直到现在我都不知道如何开始,我觉得我没有得到完整的图像。我已经获得了训练数据集并阅读了它的描述,并获得了 SVM 算法 (SVM.Net) 的出色实现,但我不知道如何在该实现中使用该数据集。我知道我应该从数据集的文本中提取特征并将这些特征用作 SVM 的输入,所以任何人都可以告诉我有关如何提取文本特征并将它们用作 SVM 算法的输入的详细教程,然后使用这个算法对新文本进行分类? 如果有一个关于使用 SVM 进行文本分类的完整示例,那就太好了。

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

【参考方案1】:

为文本分类创建特征可以像您希望的那样复杂。

一种简单的方法是将每个不同的术语映射到一个特征索引。然后,您将每个文档表示为每个术语频率的向量。 (您可以删除停用词、重量词等)。对于文本分类,您还可以为每个向量分配标签。

例如,如果文档是句子

John loves Mary

带有“垃圾邮件”标签。

那么你可能有以下映射:

John : 1
loves: 2
Mary: 3

然后你的向量变成:

1 1 2 1 3 1

(我假设每个特征的权重为 1)

我不了解 SVM.NET,但大多数有监督的机器学习方法都会接受基于向量的输入。

【讨论】:

谢谢你的回答,但我已经读过了,正如我提到的,我有一个不小的路透社数据集,所以我确实需要找到最合适的方式来表示每篇文章在里面。诸如建立信息检索索引之类的事情 这远非从文本中提取特征的最佳方式。更好的方法是使用正交特征:John : 100, loves : 010, Mary 001. 真正做到这一点是一个不同的问题(注意我说“简单”)。实际上,您会使用稀疏表示、创建倒排索引等。从单词到术语的底层映射是相同的。

以上是关于如何使用 reuters-21578 数据集和 svm.net 进行文本分类?的主要内容,如果未能解决你的问题,请参考以下文章

如何把数据集划分成训练集和测试集

如何将数据集划分为训练集和测试集?

如何区分 HDF5 数据集和使用 h5py 的组?

Alink漫谈 : 如何划分训练数据集和测试数据集

R:如何将数据框拆分为训练集、验证集和测试集?

如何使用`matplotlib`可视化5-D功能集和回归结果?