python 和 nltk 的多类文本分类

Multiclass text classification with python and nltk

我的任务是 class将给定的新闻文本数据归入以下 5 个类别之一 - 商业、体育、娱乐、科技和政治

关于我使用的数据:
由标记为 5 种新闻声明(Bcc 新闻数据)之一的文本数据组成

我目前正在使用带有 nltk 模块的 NLP 来计算训练数据中每个单词相对于每个类别(停用词除外)的频率分布。

然后,我 class 通过计算所有单词关于这 5 个类别的每个类别的权重总和来确定新数据。权重最大的 class 作为输出返回。

这是实际的 code.

该算法确实可以准确预测新数据,但我有兴趣了解其他一些我可以实施以获得更好结果的简单算法。我已经使用朴素贝叶斯算法将数据 class 化为两个 classes(垃圾邮件或非垃圾邮件等)并且想知道如何为 multiclass class 实现它如果它是一个可行的解决方案。

谢谢。

由于你处理的是单词,我建议使用单词嵌入,这可以让你更深入地了解 relationship/meaning 单词 W.R.T 你的数据集,从而更好地分类。

如果您正在寻找分类的其他实现,请查看我在 scikit-learn 文档中的示例代码 here , these models from scikit-learn can easily handle multiclasses, take a look here

如果你想要一个易于使用的围绕这些分类的框架,你可以查看我的rasa-nlu,它使用spacy_sklearn模型,示例实现代码是here。您所要做的就是准备好给定格式的数据集,然后训练模型。

如果你想要更多的智能,那么你可以查看我的 keras 实现 here,它使用 CNN 进行文本分类。

希望对您有所帮助。

在分类中,尤其是在文本分类中,选择正确的机器学习算法往往是在选择正确的特征之后。功能依赖于领域,需要有关数据的知识,但良好的质量可以比调整或选择算法和参数更快地带来更好的系统。

在你的情况下,你可以像已经说过的那样使用词嵌入,但你也可以设计你自己认为有助于区分 类 的自定义特征(无论 类 的数量是多少是)。例如,您认为垃圾邮件通常是如何呈现的?很多错误,语法倒置,错误的翻译,标点符号,俚语......很多可能性!试着考虑一下你在体育、商业、新闻等方面的情况

您应该尝试一些 creating/combining 特征的新方法,然后选择最佳算法。另外,看看词频以外的其他加权方法,比如 tf-idf.