2012-01-11 36 views
6

Tôi là người mới bắt đầu NTLK/Python và đã quản lý tải kho văn bản của riêng mình bằng CategorPlaintextCorpusReader nhưng làm cách nào để thực sự đào tạo và sử dụng dữ liệu để phân loại văn bản?Sử dụng kho văn bản riêng của tôi để phân loại danh mục bằng Python NLTK

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

thấy http://stackoverflow.com/questions/29275614/using-my-own-corpus-thay vì-phim-đánh giá-corpus-cho-phân loại-in-nltk – alvas

Trả lời

6

Giả sử bạn muốn có một phân loại Bayes ngây thơ với túi từ các tính năng:

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

classify Phương pháp này kết quả của clf có thể được sử dụng trên bất kỳ FreqDist các từ.

(Nhưng lưu ý: từ cap_pattern của bạn, có vẻ như bạn có mẫu một thể loại duy nhất cho mỗi tập tin trong corpus bạn hãy kiểm tra xem đó là thực sự những gì bạn muốn..)