我正在使用NLTK对文件进行分类 - 每个文件有1个标签,有10种文件。
对于文本提取,我正在清理文本(标点删除,html标记删除,小写),删除nltk.corpus.stopwords,以及我自己的停用词集合。
对于我的文档功能,我查看所有50k文档,并按频率(frequency_words)收集前2k个单词,然后为每个文档识别文档中哪些单词也在全局frequency_words中。
然后我将每个文档作为{word: boolean}
的hashmap传递到nltk.NaiveBayesClassifier(...)中,我对文档总数的测试训练比率为20:80。
我遇到的问题:
谢谢!
答案 0 :(得分:2)
术语:文档将被分为10个不同的类,这使其成为一个多类别的分类问题。如果您想使用多个标签对文档进行分类,那么您可以将其称为多类多标签分类。
对于您所面临的问题,
nltk.NaiveBayesClassifier()是一个开箱即用的多类分类器。所以是的,你可以用它来解决这个问题。根据多标签数据,如果您的标签是a,b,c,d,e,f,g,h,i,j,那么您必须定义标签' b'特定文件中的' 0,1,0,0,0,0,0,0,0,0'。
特征提取是分类(机器学习)中最难的部分。我建议你研究不同的算法来理解和选择最适合你数据的算法(不看你的数据,很难推荐使用哪种算法/实现)
有许多不同的库可供分类。我个人使用了scikit-learn,我可以说这是一个很好的开箱即用分类器。
注意:使用scikit-learn,我能够在一周内获得结果,因为数据集是巨大的和其他挫折。