python - 如何在百万文档的文档分类中找到异常值?
问题描述
我有一百万个属于不同类别(100 个类别)的文档。我想找到每个类中的异常文档(不属于该类但被错误分类)并过滤它们。我可以通过比较每个文档的标记来使用余弦相似度来做文档相似度。我无法应用它来过滤给定类的错误分类文档。示例:为简单起见,考虑 3 个类及其下的文档。
ClassA ClassB ClassC ...
doc1 doc2 doc3
doc4 doc5 doc6
doc7 doc8 doc9
我怎样才能有效地找出 doc4(和其他类似的文档)在 ClassA 中被错误地分类,以便我的训练数据不包含异常值?
解决方案
这是无监督学习中的一个难题。它通常被称为主题建模。您可以从运行 LDA(潜在狄利克雷分配)算法开始。我建议为此使用gensim
包。不要在所有数据上运行它,一开始需要 20-5 万个文档。在您拥有初始分类器之后,在数百万个文档中,您只选择那些被分类为属于某个类别且概率高于某个阈值的文档。再次训练LDA。这应该为您提供更好分离的类。重新分类您的数据。
LDA 算法以“软”方式对文档进行分类,因此每个文档都有一定的概率属于您的 100 个类别中的每一个。但通常情况下,那些同时属于多个类别的概率很高的类别被分类错误。
您可以在不涉及人工贴标机的情况下完成所有这些工作。
推荐阅读
- javascript - jQuery pligin 中的 Javascript mousehweel 函数
- node.js - 如何在弹性搜索中插入多个 JSON 文档
- android - 如何在 kotlin 的 android 共享首选项中存储 2D 数组?
- django - 如何使用 PUT 使用 Django REST 框架更新 Vue 中的某些内容
- symfony - --global 选项在做作曲家时不存在 --global 要求
- ios - SplitViewController 只显示白屏
- java - 当有多个参数时,方法引用如何在后台工作
- javascript - 无法使用 fetch 发送多部分,但 axios 工作正常
- tensorflow - 在估算器中同时使用 batch_norm 和 dropout 是否相关?
- php - “client_reference_id”参数未通过