我在Postgres数据库中存储了大约300k个文档,并为它们打上了主题类别标签(总共大约有150个类别)。我还有另外150k个文档没有分类。我正在尝试寻找最佳的编程方法来对它们进行分类。
我一直在探索NLTK及其朴素贝叶斯分类器。这似乎是一个很好的起点(如果您可以为此任务提出更好的分类算法,我会认真听取建议)。
我的问题是,我没有足够的RAM可以一次性训练所有150个类别/ 300k个文档的NaiveBayesClassifier(使用5个类别进行训练需要8GB内存)。此外,随着我训练的类别数量增加,分类器的准确度似乎会下降(2个类别的精度为90%,5个为81%,10个为61%)。
我应该只针对每次使用5个类别训练分类器,并将所有150k个文档通过分类器运行以查看是否有匹配项吗?这似乎可以工作,但是会有很多误报,因为那些不真正匹配任何类别的文档被分类器强行分配到最佳匹配项中。是否有一种方法可以为分类器提供“无匹配”选项,以防文档不适合任何类别?
这是我的测试类:http://gist.github.com/451880