为什么sklearn LDA变换很慢?



我使用sickit-learn Latent Dirichlet Allocation进行主题建模。lda_object适用于文本语料库。现在,我们将其拟合到一个文本中,以了解它的主题权重。

def append_lda_features(df, lda_vectorizer, tfidf+vector):
from time import time
st = time()
lda_vector = lda_vectorizer.transform(tfidf_vector)
print(time() - st)
lda_vector = pd.DataFrame(lda_vector)
lda_vector.columns = ['lda_word_'+str(i)
for i in range(lda_vectorizer.n_components)]
return pd.concat([df, lda_vector], axis=1)

这是0.67秒左右的打印值,非常高。考虑到我的lda只包含15个组件,而vectorizer有100000个令牌:

LatentDirichletAllocation(n_components=15, n_jobs=30, verbose=1)

我该怎么做才能使LDA工作得更快?

当你要在单个文本向量上变换lda时,你最好不要设置n_jobs = 1

通过这种方式,它不需要花费太多时间,因为它不需要首先并行化工作。这显然需要明显的开销。

def append_lda_features(df, lda_vectorizer, tfidf+vector):
from time import time
st = time()
lda_vectorizer.n_jobs = 1
lda_vector = lda_vectorizer.transform(tfidf_vector)
print(time() - st)
lda_vector = pd.DataFrame(lda_vector)
lda_vector.columns = ['lda_word_'+str(i)
for i in range(lda_vectorizer.n_components)]
return pd.concat([df, lda_vector], axis=1)

这个给了我大约0.01秒,而不是0.6

相关内容

  • 没有找到相关文章

最新更新