যতদূর আমি জানি আপনার কেবল কয়েকটি বিষয় এবং কর্পাস সরবরাহ করতে হবে। প্রার্থী টপিক সেটটি নির্দিষ্ট করার দরকার নেই, যদিও এটি ব্যবহার করা যেতে পারে, যেমন আপনি গ্রুন অ্যান্ড হর্নিক (২০১১) এর 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")
টপিক মডেল তৈরি করতে এবং আউটপুট বিশ্লেষণ করার আগে, মডেলটি কতগুলি বিষয় ব্যবহার করা উচিত সে সম্পর্কে আমাদের সিদ্ধান্ত নেওয়া উচিত। বিভিন্ন বিষয়ের সংখ্যা লুপ করার জন্য এখানে একটি ফাংশন রয়েছে, প্রতিটি বিষয় সংখ্যার জন্য মডেলের লগ লাইকিনিটি পেতে এবং এটি প্লট করে যাতে আমরা সেরাটি চয়ন করতে পারি। প্যাকেজটিতে উদাহরণস্বরূপ ডেটা তৈরির জন্য সর্বাধিক লগের সম্ভাবনার মান সহ শীর্ষস্থানীয় শীর্ষস্থানীয় বিষয়গুলি। এখানে আমি 100 টি বিষয়ের সাথে 2 টি বিষয়ের সাথে শুরু হওয়া প্রতিটি মডেলকে মূল্যায়ন করতে বেছে নিয়েছি (এতে কিছুটা সময় লাগবে!)।
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 টি বিষয় এই ডেটার জন্য সেরা ফিট করে। এখন আমরা ১৩ টি বিষয় নিয়ে এলডিএ মডেল তৈরি এবং মডেলটি তদন্ত করে এগিয়ে যেতে পারি:
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 সুন্দর উত্তর।