Использование моего собственного корпуса для классификации категорий в Python NLTK - PullRequest
7 голосов
/ 11 января 2012

Я новичок в NTLK / Python, и мне удалось загрузить свой собственный корпус с помощью CategoryorizedPlaintextCorpusReader, но как мне на самом деле обучать и использовать данные для классификации текста?

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

1 Ответ

6 голосов
/ 11 января 2012

Предположим, вам нужен наивный байесовский классификатор с набором слов:

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)))

Полученный метод clf classify может использоваться для любых FreqDist слов.

(Но обратите внимание: из вашего cap_pattern кажется, что у вас есть образцы и одной категории на файл в вашем корпусе. Проверьте, действительно ли вы этого хотите.)

...