Sto cercando di eseguire la modellazione degli argomenti LDA con Mallet 2.0.7. Posso addestrare un modello LDA e ottenere buoni risultati, a giudicare dal risultato della sessione di allenamento. Inoltre, posso usare l'inferenza costruita in quel processo e ottenere risultati simili durante la rielaborazione del mio file di allenamento. Tuttavia, se prendo un singolo file dal set di training più grande e lo elaboro con l'inferison, ottengo risultati molto diversi, che non sono buoni.Perché ottenere risultati diversi con l'inferenza argomento MALLET per singoli e batch di documenti?
La mia comprensione è che l'inferenza deve utilizzare un modello fisso e solo le funzionalità locali di quel documento, quindi non capisco perché otterrei risultati diversi durante l'elaborazione di 1 file o del 1k dal mio set di allenamento. Non sto facendo tagli di frequenza che sembrerebbero essere un'operazione globale che avrebbe questo tipo di effetto. Puoi vedere altri parametri che sto usando nei comandi sottostanti, ma sono per lo più di default. Cambiare # di iterazioni su 0 o 100 non ha aiutato.
Importare i dati:
bin/mallet import-dir \
--input trainingDataDir \
--output train.data \
--remove-stopwords TRUE \
--keep-sequence TRUE \
--gram-sizes 1,2 \
--keep-sequence-bigrams TRUE
Treno:
time ../bin/mallet train-topics
--input ../train.data \
--inferencer-filename lda-inferencer-model.mallet \
--num-top-words 50 \
--num-topics 100 \
--num-threads 3 \
--num-iterations 100 \
--doc-topics-threshold 0.1 \
--output-topic-keys topic-keys.txt \
--output-doc-topics doc-topics.txt
argomenti assegnati durante l'allenamento per un file in particolare, # 14 è di circa il vino che è corretto:
998 file:/.../29708933509685249 14 0.31684981684981683
> grep "^14\t" topic-keys.txt
14 0.5 wine spray cooking car climate top wines place live honey sticking ice prevent collection market hole climate_change winery tasting california moldova vegas horses converted paper key weather farmers_market farmers displayed wd freezing winter trouble mexico morning spring earth round mici torrey_pines barbara kinda nonstick grass slide tree exciting lots
Run inferenza su tutto il lotto del treno:
../bin/mallet infer-topics \
--input ../train.data \
--inferencer lda-inferencer-model.mallet \
--output-doc-topics inf-train.1 \
--num-iterations 100
punteggio Inference sul treno - molto simile:
998 /.../29708933509685249 14 0.37505087505087503
Run inferenza su un altro file di dati formazione composta da solo quel file txt 1:
../bin/mallet infer-topics \
--input ../one.data \
--inferencer lda-inferencer-model.mallet \
--output-doc-topics inf-one.2 \
--num-iterations 100
inferenza su un documento produce argomento 80 e 36, che sono molto diversi (14 è dato vicino al punteggio 0):
0 /.../29708933509685249 80 0.3184778184778185 36 0.19067969067969068
> grep "^80\t" topic-keys.txt
80 0.5 tips dog care pet safety items read policy safe offer pay avoid stay important privacy services ebay selling terms person meeting warning poster message agree sellers animals public agree_terms follow pets payment fraud made privacy_policy send description puppy emailed clicking safety_tips read_safety safe_read stay_safe services_stay payment_services transaction_payment offer_transaction classifieds_offer