我是一个NLTK/Python的新手,我已经成功使用CategorizedPlaintextCorpusReader加载了自己的语料库,但是我该如何实际训练和使用这些数据来对文本进行分类呢?
>>> from nltk.corpus.reader import CategorizedPlaintextCorpusReader>>> reader = CategorizedPlaintextCorpusReader('/ebs/category', r'.*\.txt', cat_pattern=r'(.*)\.txt')>>> len(reader.categories())234
回答:
假设你想要一个使用词袋模型特征的朴素贝叶斯分类器:
from nltk import FreqDistfrom nltk.classify.naivebayes import NaiveBayesClassifierdef make_training_data(rdr): for c in rdr.categories(): for f in rdr.fileids(c): yield FreqDist(rdr.words(fileids=[f])), cclf = NaiveBayesClassifier.train(list(make_training_data(reader)))
得到的clf
的classify
方法可以用于任何单词的FreqDist
上。
(但是请注意:从你的cap_pattern
来看,似乎你的语料库中每个文件既有样本又只有一个类别。请确认这是否是你真正想要的。)