簡體   English   中英

如何使用sklearn LDA啟用多核處理?

[英]How to enable multicore processing with sklearn LDA?

我有一個使用sklearn LDA的主題模型。 我的語料庫已經〜75K的文件和矩陣形狀從胼生成是X.shape = (74645, 91542)

當我將此矩陣傳遞給sklearn LDA時,在我的本地服務器上花費3個小時,而在服務器上則花費11個小時

所以我的問題是:

有沒有辦法在sklearn LDA中使用多核處理? 還是有辦法大大減少我的處理時間?

任何幫助都感激不盡。

請看一下代碼:

生成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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM