我在 Postgres 数据库中存储了大约 30 万个文档,这些文档带有主题类别(总共大约 150 个类别)的标签。我还有另外 150k 个文档还没有类别。我试图找到以编程方式对它们进行分类的最佳方法。
我一直在探索NLTK及其朴素贝叶斯分类器。似乎是一个很好的起点(如果您可以为此任务提出更好的分类算法,我会全力以赴)。
我的问题是我没有足够的 RAM 来一次在所有 150 个类别/300k 文档上训练 NaiveBayesClassifier(5 个类别的训练使用 8GB)。此外,当我在更多类别上训练时,分类器的准确率似乎会下降(2 个类别的准确率为 90%,5 个类别为 81%,10 个类别为 61%)。
我是否应该一次只训练 5 个类别的分类器,然后通过分类器运行所有 150k 文档以查看是否有匹配项?似乎这会起作用,除了会有很多误报,其中与任何类别都不真正匹配的文档会被分类器硬塞进去,只是因为它是可用的最佳匹配......有吗?一种为分类器提供“以上都不是”选项的方法,以防文档不适合任何类别?