जहां तक मुझे पता है कि आपको बस कई विषयों और कॉर्पस की आपूर्ति करने की आवश्यकता है। एक उम्मीदवार विषय सेट को निर्दिष्ट करने की आवश्यकता नहीं है, हालांकि एक का उपयोग किया जा सकता है, जैसा कि आप ग्रुन और हॉर्निक (2011) के पृष्ठ 15 के नीचे शुरू होने वाले उदाहरण में देख सकते हैं ।
अपडेट किया गया 28 जनवरी 14. अब मैं नीचे दी गई विधि से चीजों को थोड़ा अलग करता हूं। मेरे वर्तमान दृष्टिकोण के लिए यहां देखें: /programming//a/21394092/1036500
प्रशिक्षण डेटा के बिना विषयों की इष्टतम संख्या को खोजने के लिए एक अपेक्षाकृत सरल तरीका है, डेटा को देखते हुए अधिकतम लॉग संभावना वाले विषयों की संख्या खोजने के लिए विभिन्न विषयों के साथ मॉडल के माध्यम से लूपिंग। इस उदाहरण के साथ विचार करेंR
# download and install one of the two R packages for LDA, see a discussion
# of them here: http://stats.stackexchange.com/questions/24441
#
install.packages("topicmodels")
library(topicmodels)
#
# get some of the example data that's bundled with the package
#
data("AssociatedPress", package = "topicmodels")
विषय मॉडल को बनाने और आउटपुट का विश्लेषण करने में सही होने से पहले, हमें उन विषयों की संख्या पर निर्णय लेने की आवश्यकता है जो मॉडल का उपयोग करना चाहिए। यहां विभिन्न विषय संख्याओं पर लूप करने के लिए एक फ़ंक्शन है, प्रत्येक विषय संख्या के लिए मॉडल की लॉग लाइबिलिटी प्राप्त करें और इसे प्लॉट करें ताकि हम सबसे अच्छा चुन सकें। पैकेज में निर्मित उदाहरण डेटा प्राप्त करने के लिए सबसे अधिक विषयों की सबसे अधिक संभावना है। यहाँ मैंने 2 विषयों से शुरू होने वाले प्रत्येक मॉडल का मूल्यांकन करना चुना है, हालांकि 100 विषयों के लिए (इसमें कुछ समय लगेगा!)।
best.model <- lapply(seq(2,100, by=1), function(k){LDA(AssociatedPress[21:30,], k)})
अब हम प्रत्येक मॉडल के लिए लॉग लाइबिलिटी वैल्यूज निकाल सकते हैं जो उत्पन्न हुई थी और इसे प्लॉट करने के लिए तैयार करें:
best.model.logLik <- as.data.frame(as.matrix(lapply(best.model, logLik)))
best.model.logLik.df <- data.frame(topics=c(2:100), LL=as.numeric(as.matrix(best.model.logLik)))
और अब यह देखने के लिए कि सबसे अधिक लॉग संभावना वाले विषयों की संख्या कितनी है:
library(ggplot2)
ggplot(best.model.logLik.df, aes(x=topics, y=LL)) +
xlab("Number of topics") + ylab("Log likelihood of the model") +
geom_line() +
theme_bw() +
opts(axis.title.x = theme_text(vjust = -0.25, size = 14)) +
opts(axis.title.y = theme_text(size = 14, angle=90))
ऐसा लगता है कि यह 10 और 20 विषयों के बीच कहीं है। हम इस तरह के उच्चतम लॉग संभावना के साथ विषयों की सटीक संख्या खोजने के लिए डेटा का निरीक्षण कर सकते हैं:
best.model.logLik.df[which.max(best.model.logLik.df$LL),]
# which returns
topics LL
12 13 -8525.234
तो परिणाम यह है कि 13 विषय इन आंकड़ों के लिए सबसे उपयुक्त हैं। अब हम 13 विषयों के साथ एलडीए मॉडल बनाने और मॉडल की जांच के साथ आगे बढ़ सकते हैं:
lda_AP <- LDA(AssociatedPress[21:30,], 13) # generate the model with 13 topics
get_terms(lda_AP, 5) # gets 5 keywords for each topic, just for a quick look
get_topics(lda_AP, 5) # gets 5 topic numbers per document
और इसलिए मॉडल की विशेषताओं को निर्धारित करने के लिए।
यह दृष्टिकोण इस पर आधारित है:
ग्रिफ़िथ, टीएल और एम। स्टीवर्स 2004. वैज्ञानिक विषयों की खोज। संयुक्त राज्य अमेरिका के नेशनल एकेडमी ऑफ साइंसेज की कार्यवाही 101 (सप्ल 1): 5228-5235।
devtools::source_url("https://gist.githubusercontent.com/trinker/9aba07ddb07ad5a0c411/raw/c44f31042fc0bae2551452ce1f191d70796a75f9/optimal_k")
+1 अच्छा जवाब।