使用python和nltk进行多类文本分类

时间:2017-11-29 18:49:48

标签: nlp nltk text-classification naivebayes multiclass-classification

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

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

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

然后,我通过计算所有单词相对于这5个类别中每一个的权重之和来对新数据进行分类。输出最重的类作为输出。

这是实际的code 该算法确实准确地预测了新数据,但我有兴趣了解一些其他简单的算法,我可以实现这些算法以获得更好的结果。我使用Naive Bayes算法将数据分为两类(垃圾邮件或非垃圾邮件等),如果是可行的解决方案,我想知道如何将其用于多类分类。

谢谢。

2 个答案:

答案 0 :(得分:0)

由于你处理单词我会建议使用单词嵌入,这样可以更深入地了解单词W.R.T数据集的关系/含义,从而获得更好的分类。

如果您正在寻找其他分类实现,请查看我的示例代码here,scikit-learn中的这些模型可以轻松处理多类,在scikit-learn的文档中查看here。 / p>

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

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

希望这有帮助。

答案 1 :(得分:0)

在分类中,特别是在文本分类中,选择正确的功能后,通常会选择正确的机器学习算法。功能取决于域,需要有关数据的知识,但良好的质量可以比调整或选择算法和参数更快地实现更好的系统。

在您的情况下,您可以按照已经说过的方式进行单词嵌入,但您也可以设计自己的自定义功能,您认为这些功能有助于区分类(无论类的数量是多少)。例如,您如何看待垃圾邮件经常出现?很多错误,语法反转,糟糕的变形,标点符号,俚语......很多可能性!尝试用体育,商业,新闻等来考虑你的案例。

您应该尝试一些创建/组合功能的新方法,然后选择最佳算法。另外,请查看除术语频率之外的其他加权方法,例如tf-idf