Как мы можем создать рабочий классификатор для анализа настроений, поскольку для этого нам нужно подготовить наш классификатор на огромных наборах данных.Классификатор анализа настроений с использованием машинного обучения
У меня есть огромный набор данных для обучения, но объект-классификатор (здесь используется Python) дает ошибку памяти при использовании 3000 слов. И мне нужно тренироваться более чем на 100 тыс. Слов.
То, что я думал, делит огромный набор данных на более мелкие части и делает объект классификатора для каждого и сохраняет его в файле 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: Я использую инструментарий NLTK с помощью NaiveBayes. Мой учебный набор данных открывается и хранится в documents
.
У меня есть текстовые данные в виде документов. В каждом документе есть несколько предложений. У меня есть тысячи документов. Анализ всех этих документов не дает мне проблемы. Но количество слов, которые я выбираю для обучения, есть. Если я выберу более 3000 слов, тогда он начнет давать ошибку словаря. – Arkham
ther e не такая вещь, как «ошибка словаря» - это похоже на какую-то конкретную проблему реализации, поэтому без точного кода невозможно отследить эту конкретную проблему. Как показано в ответе - таких ограничений для современных методов ML нет, поэтому проблема заключается в вашем коде, а не в методах ML. – lejlot
Я разместил фрагмент кода, где я использую 3000 слов. – Arkham