使用机器学习对大文本进行分类

时间:2018-03-07 12:20:15

标签: python text machine-learning classification text-classification

我有一个大的xls文档,其中每行包含一个问题ID,其描述及其类别,用于探索:类别1- A​​-a1

我正在尝试构建一个机器学习模型,帮助我根据类别对该文档进行分类。目标是针对每个新条目(也称为新问题描述),我们将能够定义其各自类别的模型。

约束: 我有超过10个类别也是分层的(类别1有不同的子类别,每个子类别有不同的子类别)。我正在考虑分层分类或多类分类但不能说。

描述功能是一个长文本。我在考虑多项逻辑回归,但我读到它需要数值数据。我是否必须为文档中使用的所有单词创建字典以赋予其数值?这是一个正确的选择吗?

我还希望每个新条目都有分数来分类最近的类(对于新的描述X,类别2-B-b1给出80%的分数)

2 个答案:

答案 0 :(得分:1)

一种好方法是将.xls文件转换为pandas数据帧并使用fasttext https://fasttext.cc/创建文本分类模型,任何新文本都将分类为各自的类别。 有关正确的文档,请参阅https://github.com/facebookresearch/fastText

答案 1 :(得分:1)

你可以使用的策略之一是伯努利朴素贝叶斯(https://en.wikipedia.org/wiki/Naive_Bayes_classifier)。

这是一个简单的数学方程式,允许您将问题简化为每个类别的简单单词频率列表。

一旦为已知属于适当类别的文本建立了有意义的词频基线,该公式就能够为新文本返回每个类别中匹配的概率。

这可以给出非常大的单词x类别矩阵,但每个元素的处理非常简单。根据您的音量和性能要求,可以对公式进行优化,以便将计算限制为文本中实际存在的单词以进行分类,并跳过与已经看到的其他单词相关联的因子之前但未出现在文本中(如果伯努利分类器与您的解决方案相关,我可以详细说明)。请注意,Python中可能存在分类器的现有实现(我还没有检查过)。