2013-04-27 3 views
7

Devo applicare LDA (Latent Dirichlet Allocation) per ottenere gli argomenti possibili da un database di 20.000 documenti che ho raccolto.Possiamo usare un corpus autodidatta per l'addestramento per LDA usando gensim?

Come posso utilizzare questi documenti piuttosto che l'altro corpus disponibile come il Corpus Brown o Wikipedia inglese come corpus di addestramento?

È possibile consultare la pagina this.

+1

Questa domanda è un po 'aperta; potresti avere maggiori probabilità di ottenere risposte se puoi essere più specifico su ciò che hai provato finora e su quali problemi specifici stai riscontrando. – ASGM

+0

Ho modificato la domanda! –

+0

Se non ti piace, vota per chiuderlo. –

risposta

12

Dopo aver esaminato la documentazione del pacchetto Gensim, ho scoperto che ci sono 4 modi per trasformare un repository di testo in un corpus.

Ci sono un totale di 4 formati per il corpus:

  1. mercato Matrix (.mm)
  2. SVM Luce (.svmlight)
  3. Blie Format (.LAD-c)
  4. Low Format (.low)

In questo problema, come accennato in precedenza, ci sono in totale 19.188 documenti nel database. Uno deve leggere ogni documento e rimuovere le parole d'arresto e punteggiatura dalle frasi, che può essere fatto utilizzando nltk.

import gensim 
from gensim import corpora, similarities, models 

## 
##Text Preprocessing is done here using nltk 
## 

##Saving of the dictionary and corpus is done here 
##final_text contains the tokens of all the documents 

dictionary = corpora.Dictionary(final_text) 
dictionary.save('questions.dict'); 
corpus = [dictionary.doc2bow(text) for text in final_text] 
corpora.MmCorpus.serialize('questions.mm', corpus) 
corpora.SvmLightCorpus.serialize('questions.svmlight', corpus) 
corpora.BleiCorpus.serialize('questions.lda-c', corpus) 
corpora.LowCorpus.serialize('questions.low', corpus) 

##Then the dictionary and corpus can be used to train using LDA 

mm = corpora.MmCorpus('questions.mm') 
lda = gensim.models.ldamodel.LdaModel(corpus=mm, id2word=dictionary, num_topics=100, update_every=0, chunksize=19188, passes=20) 

In questo modo si può trasformare il suo set di dati ad un corpus che può essere addestrato per argomento la modellazione utilizzando LDA utilizzando il pacchetto gensim.

+0

Hai collegamenti ad esempi di questi formati? –

+0

@PiotrMigdal Ciao, puoi dare un'occhiata a [qui] (https://radimrehurek.com/gensim/tut1.html#corpus-formats). –

+0

Ho già guardato lì, ma non ci sono esempi (ad esempio alcune righe di file con un determinato formato). C'è solo un esempio di 'mallet' su http://cscorley.github.io/2014/05/06/using-gensim-for-lda/. –