2017-11-02 58 views
0

축소 된 Gibbs 샘플링을 사용하여 LDA 주제 모델을 최적화하려고합니다. 나는 케이 주제의 수를 최적화하기 위해 R의 ldatuning 패키지를 사용하고 있습니다 :Gibbs 샘플링 및 burnin + thin 옵션을 사용하여 LDA 주제 모델의 Python 구현?

controls_tm <- list(
    burnin = 1000, 
    iter = 4000, 
    thin = 500, 
    nstart = 5, 
    seed = 0:4, 
    best = TRUE 
) 

    num_cores <- max(parallel::detectCores() - 1, 1) 

    result <- FindTopicsNumber(my_dfm, topics = seq(40, 100, by = 5), metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"), mc.cores = num_cores, control = controls_tm, verbose = TRUE) 

이 모두 괜찮습니다. 이제 같은 컨트롤을 사용하여 주어진 k에 대해 R에서 topicmodels을 실행할 수 있지만 27 코어가있는 HPC 클러스터에서도 모델 당 8 시간이 걸립니다. LDA 토픽 모델의 Python 구현을 찾고 있습니다. 동일한 컨트롤을 사용하여 실행할 수 있으므로 ldatuning을 최적화하는 데 일관성을 갖지만 복잡성을 비교하기 위해 여러 모델을 실행해야하기 때문에 더 빠릅니다.

나는 깁스를 사용하는 Python에서 lda 라이브러리를보고 모델 당 1 시간은 < 걸린다. 그러나 내가 말할 수있는 한, 나는 그것을 타거나 얇은 매개 변수로 전달할 수 없다.

나는 또한 sklearn.decomposition.LatentDirichletAllocation을 보았지만 Gibbs 대신 변이성 Bayes를 사용하고 있으며 어쨌든 burnin 또는 thin을 허용하지 않습니다. 동일은 gensim (나는 생각한다 - 나는 그것에 익숙하지 않다)에 간다.

이것은 파이썬에 존재하지 않습니까? 또는 파이썬에서 Gibbs 샘플링과 원하는 매개 변수로 모델을 실행할 수있는 임시 해결책이 있습니까? 감사!

+0

파이썬에는'method = "Gibss"와 같은 매개 변수가 없습니까? –

+0

@HenryNavarro 나는 그렇게 생각하지 않지만, 파이썬에서 메서드를 선택할 수 없다는 것이 이상하다는 것을 알았다. 내가 뭔가를 놓친 것 같아서. http://scikit-learn.org/dev/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html – leslieh

답변

0

온라인 교육을 사용하지 않는다고 가정하면 gensim의 Latent Dirichlet Allocation via Mallet을 확인 했습니까?

이 모듈은 망치로 깁스 샘플링 축소 (최적화 된 버전)을 사용하여, 트레이닝 코퍼스 새로운 보이지 않는 문서에 대한 토픽 분포 추론 모두에서 LDA 모델을 추정 할 수있다.