【发布时间】:2015-06-30 06:16:04
【问题描述】:
我正在尝试使用 NLTK for python 训练我自己的语料库进行情感分析。我有两个文本文件:一个有 25K 正面推文,每行分隔,另一个有 25K 负面推文。
I use this Stackoverflow article, method 2
当我运行这段代码来创建语料库时:
import string
from itertools import chain
from nltk.corpus import stopwords
from nltk.probability import FreqDist
from nltk.classify import NaiveBayesClassifier as nbc
from nltk.corpus import CategorizedPlaintextCorpusReader
import nltk
mydir = 'C:\Users\gerbuiker\Desktop\Sentiment Analyse\my_movie_reviews'
mr = CategorizedPlaintextCorpusReader(mydir, r'(?!\.).*\.txt', cat_pattern=r'(neg|pos)/.*', encoding='ascii')
stop = stopwords.words('english')
documents = [([w for w in mr.words(i) if w.lower() not in stop and w.lower() not in string.punctuation], i.split('/')[0]) for i in mr.fileids()]
word_features = FreqDist(chain(*[i for i,j in documents]))
word_features = word_features.keys()[:100]
numtrain = int(len(documents) * 90 / 100)
train_set = [({i:(i in tokens) for i in word_features}, tag) for tokens,tag in documents[:numtrain]]
test_set = [({i:(i in tokens) for i in word_features}, tag) for tokens,tag in documents[numtrain:]]
classifier = nbc.train(train_set)
print nltk.classify.accuracy(classifier, test_set)
classifier.show_most_informative_features(5)
我收到错误消息:
C:\Users\gerbuiker\Anaconda\python.exe "C:/Users/gerbuiker/Desktop/Sentiment Analyse/CORPUS_POS_NEG/CreateCorpus.py"
Traceback (most recent call last):
File "C:/Users/gerbuiker/Desktop/Sentiment Analyse/CORPUS_POS_NEG/CreateCorpus.py", line 23, in <module>
documents = [([w for w in mr.words(i) if w.lower() not in stop and w.lower() not in string.punctuation], i.split('/')[0]) for i in mr.fileids()]
File "C:\Users\gerbuiker\AppData\Roaming\Python\Python27\site-packages\nltk\corpus\reader\util.py", line 336, in iterate_from
assert self._len is not None
AssertionError
Process finished with exit code 1
有谁知道如何解决这个问题?
【问题讨论】:
-
您的目录/文件夹的结构是什么。可以发
dir C:/Users/gerbuiker/Desktop/Sentiment Analyse吗? dir 命令的输出是什么? -
C:\Users\gerbuiker\Desktop\Sentiment Analyse\my_movie_reviews 此文件夹包含一个文件 'README.txt' + 两个子文件夹 -> 1 'pos',其中包含 pos.txt,包含 25K 行带有正面推文 1 'neg',其中包含 neg.txt,包含 25K 行带有负面推文因此与原始 movie_review 文件夹的设置相同,除了我的两个子文件夹每个包含 1 个大文本文件,而原始 movie_review 包含大量较小的文本文件带有评论的文本文件
标签: python twitter nlp nltk sentiment-analysis