首页 > 解决方案 > 如何在百万文档的文档分类中找到异常值?

问题描述

我有一百万个属于不同类别(100 个类别)的文档。我想找到每个类中的异常文档(不属于该类但被错误分类)并过滤它们。我可以通过比较每个文档的标记来使用余弦相似度来做文档相似度。我无法应用它来过滤给定类的错误分类文档。示例:为简单起见,考虑 3 个类及其下的文档。

ClassA  ClassB  ClassC ... 
doc1    doc2    doc3 
doc4    doc5    doc6 
doc7    doc8    doc9 

我怎样才能有效地找出 doc4(和其他类似的文档)在 ClassA 中被错误地分类,以便我的训练数据不包含异常值?

标签: pythonmachine-learningtext-classificationoutlierscosine-similarity

解决方案


这是无监督学习中的一个难题。它通常被称为主题建模。您可以从运行 LDA(潜在狄利克雷分配)算法开始。我建议为此使用gensim包。不要在所有数据上运行它,一开始需要 20-5 万个文档。在您拥有初始分类器之后,在数百万个文档中,您只选择那些被分类为属于某个类别且概率高于某个阈值的文档。再次训练LDA。这应该为您提供更好分离的类。重新分类您的数据。

LDA 算法以“软”方式对文档进行分类,因此每个文档都有一定的概率属于您的 100 个类别中的每一个。但通常情况下,那些同时属于多个类别的概率很高的类别被分类错误。

您可以在不涉及人工贴标机的情况下完成所有这些工作。


推荐阅读