使用NLTK for Python训练定制语料库

时间:2015-04-24 17:04:03

标签: python twitter nltk sentiment-analysis

我尝试使用自己的文档训练语料库。我的文档结构与原始movie_reviews语料库数据的结构相同,因此文件夹'pos'中的1K正文本文件和'neg'文件夹中的1K负文本文件。每个文本文件包含25行推文,这些推文被清理,如:url,用户名,大写字母,删除标点符号。

如何调整此代码以使用我自己的文本数据而不是movie_reviews?

import nltk.classify.util
from nltk.classify import NaiveBayesClassifier
from nltk.corpus import movie_reviews
from collections import defaultdict
import numpy as np

# define the split of % training / % test
SPLIT = 0.8

def word_feats(words):
    return dict([(word, True) for word in words])


posids = movie_reviews.fileids('pos')
negids = movie_reviews.fileids('neg')

negfeats = [(word_feats(movie_reviews.words(fileids=[f])), 'neg') for f in negids]
posfeats = [(word_feats(movie_reviews.words(fileids=[f])), 'pos') for f in posids]

cutoff = int(len(posfeats) * SPLIT)

trainfeats = negfeats[:cutoff] + posfeats[:cutoff]
testfeats = negfeats[cutoff:] + posfeats[cutoff:]

print 'Train on %d instances\nTest on %d instances' % (len(trainfeats),len(testfeats))

classifier = NaiveBayesClassifier.train(trainfeats)
print 'Accuracy:', nltk.classify.util.accuracy(classifier, testfeats)

classifier.show_most_informative_features()

1 个答案:

答案 0 :(得分:0)

您可以以root用户身份登录,并将目录路径更改为:

console.log('Now you\'ve travelled to: ' + stateData.MA.fullName + "/n" + stateData.MA.motto);

在本文档中,您可以找到使用/usr/local/lib/python2.7/dist-packages/nltk/corpus/__init__.py 加载的已存在的movie_reviews语料库:

LazyCorpusLoader

然后尝试添加类似于此的东西:

movie_reviews = LazyCorpusLoader(
    'movie_reviews', CategorizedPlaintextCorpusReader,
    r'(?!\.).*\.txt', cat_pattern=r'(neg|pos)/.*')

My_Movie = LazyCorpusLoader( 'My_Movie', CategorizedPlaintextCorpusReader, r'(?!\.).*\.txt', cat_pattern=r'(neg|pos)/.*') 是您为电影评论创建的名称。 一切都完成后保存并退出。

最后将您的语料库放在My_Movie目录中,您可以在其中找到nltk语料库。

尝试执行此操作:

movie_review

希望这会奏效。