NLTK - 多标记分类

red*_*bia 7 python nlp nltk document-classification

我正在使用NLTK来对文档进行分类 - 每个文档有1个标签,有10种类型的文档.

对于文本提取,我正在清理文本(标点删除,html标记删除,小写),删除nltk.corpus.stopwords,以及我自己的停用词集合.

对于我的文档功能,我查看所有50k文档,并按频率(frequency_words)收集前2k个单词,然后为每个文档识别文档中哪些单词也在全局frequency_words中.

然后我将每个文档作为hashmap传递{word: boolean}到nltk.NaiveBayesClassifier(...)中,我对文档总数的测试训练比率为20:80.

我遇到的问题:

  1. 这是NLTK的分类器,适用于多标记数据吗?- 我所看到的所有例子都更多地是关于2级分类,例如某些事物被宣告为正面还是负面.
  2. 这些文件应该具备一套关键技能 - 不幸的是,我没有这些技能所在的语料库.所以我采取了理解的方法,每个文件的字数不是一个好的文件提取器 - 这是正确的吗?每份文件都是由个人撰写的,因此我需要为文件中的个别变化留出让路.我知道SkLearn MBNaiveBayes处理字数.
  3. 是否有我应该使用的替代库,或者此算法的变体?

谢谢!

小智 3

术语:文档将被分为 10 个不同的类,这使其成为多类分类问题。除此之外,如果您想对具有多个标签的文档进行分类,那么您可以将其称为多类多标签分类。

对于您面临的问题,

  1. nltk.NaiveBayesClassifier() 是一个开箱即用的多类分类器。所以是的,你可以用它来解决这个问题。根据多标签数据,如果您的标签是 a、b、c、d、e、f、g、h、i、j,那么您必须将特定文档的标签“b”定义为“0,1” 0,0,0,0,0,0,0,0'。

  2. 特征提取是分类(机器学习)中最难的部分。我建议您研究不同的算法,以了解并选择最适合您的数据的算法(如果不查看您的数据,就很难推荐使用哪种算法/实现)

  3. 有许多不同的库可供分类。我个人使用过 scikit-learn,我可以说它是很好的开箱即用分类器。

注意:使用 scikit-learn,考虑到数据集巨大和其他挫折,我能够在一周内取得结果。