Python Can';t在NLTK手册《文件分类》(第6章,第1.3节)中复制结果
从这里开始:(第1.3节) 作者引用了0.81的准确度 当然,由于random.shuffle的存在,会涉及到一些随机性,但是无论我运行多少次,我都无法超过 (另一个奇怪之处是,作者声称下面的单词功能包含了2000个最常见的单词,但事实并非如此(与列表(all_words.most_common(2000))相比)Python Can';t在NLTK手册《文件分类》(第6章,第1.3节)中复制结果,python,nltk,document-classification,Python,Nltk,Document Classification,从这里开始:(第1.3节) 作者引用了0.81的准确度 当然,由于random.shuffle的存在,会涉及到一些随机性,但是无论我运行多少次,我都无法超过 (另一个奇怪之处是,作者声称下面的单词功能包含了2000个最常见的单词,但事实并非如此(与列表(all_words.most_common(2000))相比) 与所有单词中的实际单词相比,列表(所有单词)[:2000]绝对不是前2000个最常见的单词。[逐字逐句,最常见(2000)] 不,准确度更差,因为2000个最常见的词(“the”,
列表(所有单词)[:2000]
绝对不是前2000个最常见的单词。[逐字逐句,最常见(2000)]
random.shuffle(文档)
来保证它们的顺序python——版本
python-c“import-nltk;print(nltk.\uuuu version\uuuuu)”
如果使用2000个最频繁的单词,你会获得更好的准确度吗?@lenz,不会,更差的准确度,因为2000个最频繁的单词(“the”、“a”、“he”…)中的大多数都很少包含关于类别的信息。
import nltk
import random
from nltk.corpus import movie_reviews
documents = [(list(movie_reviews.words(fileid)), category)\
for category in movie_reviews.categories()\
for fileid in movie_reviews.fileids(category)]
random.shuffle(documents)
all_words = nltk.FreqDist(w.lower() for w in movie_reviews.words())
word_features = list(all_words)[:2000]
def document_features(document, words_to_use = word_features):
document_words = set(document)
features = {}
for word in words_to_use:
features['contains({})'.format(word)] = (word in document_words)
return features
featuresets = [(document_features(d), c) for (d,c) in documents]
train_set, test_set = featuresets[100:], featuresets[:100]
classifier = nltk.NaiveBayesClassifier.train(train_set)
print(nltk.classify.accuracy(classifier, test_set))