Я выполняю скрытый семантический анализ (LSA) с использованием textmineR в R. То, что я надеюсь получить, это документ по матрице тем с оценками тем по документам, что я могу сделать, вызвав theta из моего объекта lsa (ниже),Тем не менее, я сталкиваюсь с трудностями, когда беру свой созданный объект lsa и использую его для оценки нового набора данных (т. Е. Матрицы терминов документа, dtm), чтобы я мог применить свои ранее существующие тематические структуры к новым данным.В приведенном ниже примере я создаю две темы, а затем, когда я пытаюсь использовать один и тот же точный DTM (делая вид, что это новый файл ради этого примера), я получаю следующую ошибку:
"Error in predict.lsa_topic_model(model, dtm_m) : newdata must be a matrix of class dgCMatrix or a numeric vector"
Мне нужно использовать объект lsa для оценки нового текста.Есть ли простое исправление, которое я пропускаю?Мне не повезло, что матрица была приведена к dgCMatrix.Я на самом деле не знаю, как это сделать с другими пакетами, такими как lsa либо.Любая помощь в этом подходе будет принята с благодарностью.
file = as.data.frame(matrix( c('case1', 'this is some SAMPLE TEXT!',
'case2', 'and this is the 2nd version of that text...',
'case3', 'more stuff to talk about'),
nrow=3,
ncol=2,
byrow = TRUE))
names(file) [1] <- 'doc_id'
names(file) [2] <- 'text'
library(tm)
wordCorpus <- Corpus(DataframeSource(file))
cleaner <- function (wordCorpus) {
wordCorpus <- tm_map(wordCorpus, removeNumbers)
wordCorpus <- tm_map(wordCorpus, content_transformer(tolower))
wordCorpus <- tm_map(wordCorpus, removePunctuation)
return (wordCorpus)
}
wordCorpus <- cleaner (wordCorpus)
tokenizer <- function(x)
NGramTokenizer(x, Weka_control(min = 1, max = 2))
dtm <- DocumentTermMatrix (wordCorpus, control = list (tokenize=tokenizer, weighting = weightTfIdf))
dtm_m <- as.matrix(dtm)
library(textmineR)
model <- FitLsaModel(dtm = dtm_m, k = 2)
#this is what I want to get, but ideally also
#be able to save the "model" object and use to create this in a new sample`
values <- as.data.frame (model$theta)
values
#pretending my original dataset is a new sample and using predict
values_other <- predict (model, dtm_m)