У меня есть модель тем, использующая sklearn LDA
.В моем корпусе есть ~ 75K документов и матрица, генерируемая из корпуса: X.shape = (74645, 91542)
Когда я передаю эту матрицу в sklearn LDA
, это занимает 3 часа на моем локальном компьютере и на сервере, который он использует 11 часов .
Итак, мой вопрос:
Есть ли способ использовать многоядерную обработку в LL sklearn?или есть способ значительно сократить время обработки?
Любая помощь будет высоко оценена.
Пожалуйста, взгляните на код:
строка, которая генерирует lda_output, принимаетчасов работы
vectorizer = CountVectorizer(stop_words='english', ngram_range= (1,2), vocabulary = word_list)
X = vectorizer.fit_transform(documents)
lda_model = LatentDirichletAllocation(n_components=50, # Number of topics
learning_decay=0.7,
max_iter=10, # Max learning iterations
learning_method='online',
random_state=100, # Random state
batch_size=128, # n docs in each learning iter
evaluate_every = -1, # compute perplexity every n iters, default: Don't
n_jobs = -1, # Use all available CPUs
)
#--Because before this line system was running out of memory
%env JOBLIB_TEMP_FOLDER=/tmp
start_time = datetime.datetime.now()
lda_output = lda_model.fit_transform(X)
end_time = datetime.datetime.now()
run_time_lda = end_time - start_time
#output:
#datetime.timedelta(0, 38157, 730304) ~ 11hrs