[英]How to enable multicore processing with sklearn LDA?
我有一個使用sklearn LDA
的主題模型。 我的語料庫已經〜75K的文件和矩陣形狀從胼生成是X.shape = (74645, 91542)
當我將此矩陣傳遞給sklearn LDA
時,在我的本地服務器上花費3個小時,而在服務器上則花費11個小時 。
所以我的問題是:
任何幫助都感激不盡。
請看一下代碼:
生成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
您可能需要重新考慮詞匯word_list
,它似乎比文檔數量大。 如果可以解決您的問題,請嘗試從文檔本身構建詞匯表。
還指定min_df
以刪除頻率非常低的字。 可能是殘詞化/詞干可用於減少詞匯量,這也有助於LDA學習更好的主題。
我建議不要對LDA建模使用bigrams / trigram,因為它可能會導致無法解釋的模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.