我的任务是将给定的新闻文本数据分类为以下5个类别之一 - 商业,体育,娱乐,科技和政治
关于我正在使用的数据:
由标记为5种类型的新闻声明(Bcc新闻数据)之一的文本数据组成。
我目前正在使用带有nltk模块的NLP来计算训练数据中每个单词相对于每个类别的频率分布(停用词除外)。
然后,我通过计算所有单词相对于这5个类别中每一个的权重之和来对新数据进行分类。输出最重的类作为输出。
这是实际的code
该算法确实准确地预测了新数据,但我有兴趣了解一些其他简单的算法,我可以实现这些算法以获得更好的结果。我使用Naive Bayes算法将数据分为两类(垃圾邮件或非垃圾邮件等),如果是可行的解决方案,我想知道如何将其用于多类分类。
谢谢。
答案 0 :(得分:0)
由于你处理单词我会建议使用单词嵌入,这样可以更深入地了解单词W.R.T数据集的关系/含义,从而获得更好的分类。
如果您正在寻找其他分类实现,请查看我的示例代码here,scikit-learn中的这些模型可以轻松处理多类,在scikit-learn的文档中查看here。 / p>
如果您想要一个易于使用的框架,您可以查看rasa-nlu,它使用spacy_sklearn模型,示例实现代码为here。您所要做的就是以给定的格式准备数据集,然后训练模型。
如果您想获得更多智能,那么您可以查看keras实现here,它使用CNN进行文本分类。
希望这有帮助。
答案 1 :(得分:0)
在分类中,特别是在文本分类中,选择正确的功能后,通常会选择正确的机器学习算法。功能取决于域,需要有关数据的知识,但良好的质量可以比调整或选择算法和参数更快地实现更好的系统。
在您的情况下,您可以按照已经说过的方式进行单词嵌入,但您也可以设计自己的自定义功能,您认为这些功能有助于区分类(无论类的数量是多少)。例如,您如何看待垃圾邮件经常出现?很多错误,语法反转,糟糕的变形,标点符号,俚语......很多可能性!尝试用体育,商业,新闻等来考虑你的案例。
您应该尝试一些创建/组合功能的新方法,然后选择最佳算法。另外,请查看除术语频率之外的其他加权方法,例如tf-idf。