私はこれに非常に新しいので、証明書プログラムのコースのプロジェクトに取り組んでいます。LDA用語のリストではなく数字のリストを作成するトピックモデル
PubmedデータベースとEmbaseデータベースから参考文献レコードを取得して取得した.csvデータセットがあります。 1034行あります。しかし、いくつかの列がありますが、私はただ1つの列から抽象的な列を作成し、いくつかのレコードに要約を持たないトピックモデルを作成しようとしています。私はいくつかの処理(ストップワードや句読点の削除など)を行っており、200回以上発生している単語をバープロットしたり、ランク別に頻出用語リストを作成したり、選択した単語との関連付けを実行することもできました。だから、rは抽象的な分野で言葉自体を見ているようです。 topicmodelsパッケージを使用してトピックモデルを作成しようとすると、私の問題が発生します。ここで私が使用しているコードのビットです。
#including 1st 3 lines for reference
options(header = FALSE, stringsAsFactors = FALSE, FileEncoding =
"latin1")
records <- read.csv("Combined.csv")
AbstractCorpus <- Corpus(VectorSource(records$Abstract))
AbstractTDM <- TermDocumentMatrix(AbstractCorpus)
library(topicmodels)
library(lda)
lda <- LDA(AbstractTDM, k = 8)
(term <- terms(lda, 6))
term <- (apply(term, MARGIN = 2, paste, collapse = ","))
しかし、私が得るトピックの出力は次のとおりです。
Topic 1 Topic 2 Topic 3 Topic 4 Topic 5 Topic 6 Topic 7 Topic 8
[1,] "499" "733" "390" "833" "17" "413" "719" "392"
[2,] "484" "655" "808" "412" "550" "881" "721" "61"
[3,] "857" "299" "878" "909" "15" "258" "47" "164"
[4,] "491" "672" "313" "1028" "126" "55" "375" "987"
[5,] "734" "430" "405" "102" "13" "193" "83" "588"
[6,] "403" "52" "489" "10" "598" "52" "933" "980"
なぜ数値ではなく数字が表示されますか?
さらに、topicmodelsのr PDFから基本的に取った次のコードは、私のために値を生成しますが、トピックは単語ではなく数字であり、これは私には意味がありません。
#using information from topicmodels paper
library(tm)
library(topicmodels)
library(lda)
AbstractTM <- list(VEM = LDA(AbstractTDM, k = 10, control = list(seed =
505)), VEM_fixed = LDA(AbstractTDM, k = 10, control = list(estimate.alpha
= FALSE, seed = 505)), Gibbs = LDA(AbstractTDM, k = 10, method = "Gibbs",
Control = list(seed = 505, burnin = 100, thin = 10, iter = 100)), CTM =
CTM(AbstractTDM, k = 10, control = list(seed = 505, var = list(tol =
10^-4), em = list(tol = 10^-3))))
#To compare the fitted models we first investigate the α values of the
models fitted with VEM and α estimated and with VEM and α fixed
sapply(AbstractTM[1:2], slot, "alpha")
#Find entropy
sapply(AbstractTM, function(x)mean(apply(posterior(x)$topics, 1,
function(z) - sum(z * log(z)))))
#Find estimated topics and terms
Topic <- topics(AbstractTM[["VEM"]], 1)
Topic
#find 5 most frequent terms for each topic
Terms <- terms(AbstractTM[["VEM"]], 5)
Terms[,1:5]
問題の原因は何ですか?
質問をするときは、[再現可能な例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を入力してください。 –
再現可能な例がないとわかりにくいですが、その用語の代わりに文書を入手していると思われます。 'TermDocumentMatrix()'の代わりに 'DocumentTermMatrix()'を使ってみましたか? –
はい、私はそれを試みました。何らかの理由で、用語がゼロの行列を生成するので、何もできません。 TDMを使って単語の頻度をプロットしようとすると、用語の代わりに数字のバープロットが表示されます。これを再現可能にするためには何が必要でしょうか?繰り返しますが、私はこれを初めて知っているので、私は完全に理解していません。あなたはすべてのコードかそれ以上のものを意味しますか? – SciLibby