Добавить новый документ в матрицу документов терминов в R

У меня был term document matrix раньше, и я хочу добавить new document к that term document matrix, иначе можно сказать, чтобы соединить матрицу двух документов.

Моя матрица терминологического документа:

     Docs
Term   1
eat    7
food   2
run    2
sick   3

Тогда другой документ watch football match and eat food

После процесса я хочу, чтобы моя матрица терминологического документа была:

         Docs
Term     1   2
eat      7   1
food     2   1
run      2   0
sick     3   0
watch    0   1
football 0   1
match    0   1
and      0   1

Я пробовал это:

library("SnowballC")
library("NLP")
library("tm")
library("lsa")

                   #mytermdm (term document matrix i have before)

text2 <- "watch fottball match and eat food"
myCorpus <- Corpus(VectorSource(text2))

tdm2 <- TermDocumentMatrix(myCorpus, control = list
                         (removeNumbers = TRUE, 
                         removePunctuation = TRUE, 
                         stopwords=stopwords_en, 
                         stemming=TRUE)
)
mytdm3 <- c(mytermdm,tdm2)
inspect(mytdm3)

Я получаю это:

TermDocumentMatrix (terms: 7, document:2)

Error in `[.simple_triplet_matrix`(x,terms,doc)`
    Repeated indices currently no allowed.

person Hilfit19    schedule 17.04.2018    source источник
comment
Возможный дубликат stackoverflow.com/questions/47410866/   -  person akrun    schedule 17.04.2018
comment
все еще запутался, в этом вопросе мы знаем текстовый файл, а затем делаем tdm на основе текста, в моем вопросе я просто знаю текст второго файла, который вы хотите поместить в tdm. Проще говоря, я загрузил tdm, затем сделал tdm, который представляет собой комбинацию предыдущего tdm со вторым текстом   -  person Hilfit19    schedule 17.04.2018
comment
Я решил это, прежде чем объединить две матрицы документов, я заменяю имена документов в tdm2, используя: colnames(tdm2) <- as.numeric(max(colnames(mytermdm)))+1, а затем объединяю их   -  person Hilfit19    schedule 17.04.2018
comment
@ Hilfit19, это одно из решений. вы также можете настроить dimnames в mytdm3 или даже вначале с помощью функций corpus и meta. Если хотите, я могу написать большой ответ, касающийся всех вариантов.   -  person phiver    schedule 17.04.2018
comment
Нет @phiver, спасибо за вашу доброту   -  person Hilfit19    schedule 17.04.2018
comment
Вы можете опубликовать это как решение   -  person akrun    schedule 17.04.2018


Ответы (1)


Я решил это, прежде чем объединить две матрицы документов терминов, я заменяю имена документов в tdm2. Итак, полный алгоритм:

library("SnowballC")
library("NLP")
library("tm")
library("lsa")

#mytermdm (term document matrix i have before)

text2 <- "watch fottball match and eat food"
myCorpus <- Corpus(VectorSource(text2))

tdm2 <- TermDocumentMatrix(myCorpus, control = list
                     (removeNumbers = TRUE, 
                     removePunctuation = TRUE, 
                     stopwords=stopwords_en, 
                     stemming=TRUE)
)

colnames(tdm2) <- as.numeric(max(colnames(mytermdm)))+1     #my add solution 


mytdm3 <- c(mytermdm,tdm2)
inspect(mytdm3)
person Hilfit19    schedule 17.04.2018