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