使用我自己的语料库在Python NLTK中进行类别分类

jon*_*asl 7 python nlp machine-learning corpus nltk

我是一个NTLK/Python初学者,并设法使用CategorizedPlaintextCorpusReader加载我自己的语料库,但我如何实际训练和使用数据进行文本分类?

>>> from nltk.corpus.reader import CategorizedPlaintextCorpusReader
>>> reader = CategorizedPlaintextCorpusReader('/ebs/category', r'.*\.txt', cat_pattern=r'(.*)\.txt')
>>> len(reader.categories())
234
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 6

假设您想要一个朴素的贝叶斯分类器,其中包含单词功能:

from nltk import FreqDist
from nltk.classify.naivebayes import NaiveBayesClassifier

def make_training_data(rdr):
    for c in rdr.categories():
        for f in rdr.fileids(c):
            yield FreqDist(rdr.words(fileids=[f])), c

clf = NaiveBayesClassifier.train(list(make_training_data(reader)))
Run Code Online (Sandbox Code Playgroud)

结果clfclassify方法可用于任何FreqDist单词.

(但请注意:从您的角度cap_pattern来看,您的语料库中的每个文件似乎都有样本单个类别.请检查这是否真的是您想要的.)