Machine learning 多类文本分类不平衡,处理“类”;其他";

Machine learning 多类文本分类不平衡,处理“类”;其他";,machine-learning,random-forest,text-mining,text-classification,multiclass-classification,Machine Learning,Random Forest,Text Mining,Text Classification,Multiclass Classification,我正在寻找一种使用机器学习的方法来正确分类那些不适合预定义类的常见问题,并且应该被归为“其他”类 问题:在培训数据集中包含大约1500个常见问题,其中“其他”是最大的类(约250个问题集中在本类中)。这些都是典型的“古怪”问题,很少被问到。然而,当我训练一个模型时,“其他”类成为模型的最爱,这仅仅是因为与其他类相比,它的大小和差异。如果我现在使用这个模型来分类没有分类的常见问题,那么相当数量的问题将被归为“其他”问题,而它们不应该归为“其他”问题 我想要的:一个模型,它首先将问题按特定类别进行分

我正在寻找一种使用机器学习的方法来正确分类那些不适合预定义类的常见问题,并且应该被归为“其他”类

问题:在培训数据集中包含大约1500个常见问题,其中“其他”是最大的类(约250个问题集中在本类中)。这些都是典型的“古怪”问题,很少被问到。然而,当我训练一个模型时,“其他”类成为模型的最爱,这仅仅是因为与其他类相比,它的大小和差异。如果我现在使用这个模型来分类没有分类的常见问题,那么相当数量的问题将被归为“其他”问题,而它们不应该归为“其他”问题

我想要的:一个模型,它首先将问题按特定类别进行分类,只有在找不到特定类别的好答案时才将其归入“其他”类别

我所尝试的:对“其他”类的样本不足。这是可行的,但我认为应该有更好的解决方案


我将尝试使用FAQ被问到的次数作为第二个预测指标(还不确定如何),但我正在寻找任何现成的解决方案或指针。谢谢

我可以建议两种分类策略(不过,最好说clusstering,因为它是一种无监督的学习):

<强>第一种方法:使用NLP(<代码> NLTK < /代码>),发现问题中的N个最常见词,并将它们视为类标签。为此,您需要通过集成所有问题来创建语料库,通过删除标点符号、停止词、数字、提及、哈希标记等来清理文本,然后对文本进行标记化和柠檬化,并找到最常见的标记。我认为最好只保留名词,并使用最常用的名词。除此之外,你可以计算,并据此做出决定

第二种方法:使用模糊技术计算文本之间的相似性。为此,您可以使用
fuzzyfuzzy
库,该库包含多个用于计算相似度的函数。对于您的情况,
fuzzyfuzzy.token\u set\u ratio()
将是正确的选择,因为您正在比较两个句子。然而,由于您有1500个问题,您有
(n*(n-1))/2=1124250
组合来计算相似性,这是非常多的。为了提高效率,我建议使用
itertools

希望这些帮助