多年来,我一直在使用我自己的贝叶斯方法,根据大量且不断更新的训练数据集对来自外部资源的新项目进行分类.
每个项目有三种类型的分类:
每个项目包含大约2,000个字符的英文文本.在我的训练数据集中,大约有265,000个项目,其中包含10,000,000个特征的粗略估计(独特的三个单词短语).
我的自制方法相当成功,但肯定还有改进的余地.我已经阅读了NLTK书中的"学习分类文本"这一章,这篇文章非常棒,并且给了我很好的NLP分类技术概述.我希望能够尝试不同的方法和参数,直到我获得可用于我的数据的最佳分类结果.
有哪些现成的NLP工具可以有效地对如此大的数据集进行分类?
那些我到目前为止尝试过的:
我尝试用一个数据集来训练他们,这个数据集包含不到1%的可用训练数据:1,700个项目,375,000个特征.对于NLTK,我使用稀疏二进制格式,以及TIMBL的类似紧凑格式.
两者似乎都依赖于在内存中做所有事情,并迅速消耗所有系统内存.我可以让他们使用微小的数据集,但没什么大的.我怀疑如果我尝试逐步添加训练数据,那么当时或者在进行实际分类时会出现同样的问题.
我看过谷歌的预测API,它似乎做了很多我正在寻找但不是一切的东西.如果可能的话,我也想避免依赖外部服务.
关于功能的选择:多年来用我的自制方法进行测试,产生的三个单词短语效果最好.虽然我可以通过使用单词或两个单词短语来减少功能的数量,但这很可能产生较差的结果,并且仍然会有大量的功能.