因为我们需要在庞大的数据集上训练分类器,所以我们如何才能为情感分析制作工作分类器。使用机器学习的情感分析分类器
我有庞大的数据集来训练,但分类器对象(这里使用Python),使用3000个单词时出现内存错误。我需要训练超过100K字。
我认为是将大数据集分成较小的部分,并为每个部分分别创建一个分类器对象,并将其存储在一个pickle文件中并使用它们。但似乎使用所有的分类器对象进行测试是不可能的,因为它在测试过程中只需要其中一个对象。
我想到的解决方案是将保存在pickle文件中的所有已保存的分类器对象(这不会发生)组合起来,或者用新的训练集继续添加同一对象(但同样,它是被覆盖并且未被附加)。
我不知道为什么,但即使是机器学习的基础,我也找不到解决方案。每个机器学习项目都需要接受大量数据集的训练,并且用于训练这些数据集的对象大小总是会导致内存错误。
那么,如何解决这个问题呢?我愿意接受任何解决方案,但希望听到做实时机器学习项目的人员后续工作。
代码段:
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
all_words = []
for w in movie_reviews.words():
all_words.append(w.lower())
all_words = nltk.FreqDist(all_words)
word_features = list(all_words.keys())[:3000]
def find_features(document):
words = set(document)
features = {}
for w in word_features:
features[w] = (w in words)
return features
featuresets = [(find_features(rev), category) for (rev, category) in documents]
numtrain = int(len(documents) * 90/100)
training_set = featuresets[:numtrain]
testing_set = featuresets[numtrain:]
classifier = nltk.NaiveBayesClassifier.train(training_set)
PS:我使用使用NaiveBayes的NLTK工具包。我的训练数据集正在打开并存储在documents
中。
我有我的文本数据形式的文件。每个文件都有几句话。像这样我有成千上万的文件。解析所有这些文档并不会给我带来任何问题。但是我选择培训的词汇数量确实如此。如果我选择超过3000个单词,那么它会开始提供词典错误。 – Arkham
它不像“字典错误”这样的事情 - 这看起来像是一些特定的实现问题,因此没有确切的代码就不可能跟踪这个特定的问题。正如答案中所示 - 现代ML技术没有这样的限制,因此问题出在你的代码上,而不是ML中使用的方法。 – lejlot
我发布了代码片段,我使用的是3000个单词。 – Arkham