Я выполняю скрытый семантический анализ (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)
Matrix::sparseMatrix()
, либо сMatrix::Matrix(x, sparse= TRUE)
. Первая функция - рекомендуемый способ. - person phiver   schedule 08.02.2019