R: ошибка при создании объекта termDocumentMatrix()

Вот мой код, который я использовал для создания объекта termdocumentmatrix для обучающих данных:

text_train = iconv(data_train$SentimentText, "UTF-8", "ASCII", sub = "")
corpus_train = Corpus(VectorSource(text_train))
tdm_train = TermDocumentMatrix(
  corpus_train,
  control = list(
    removePunctuation = TRUE,
    removestopWords   = TRUE,
    stemming = FALSE,
    removeNumbers = TRUE, 
    tolower = TRUE,
    weighting = weightTfIdf)
)

и это работает! к машинам претензий нет.

ОДНАКО, когда я использую ТАКОЙ ЖЕ метод для создания набора данных для проверки, машина жалуется!

вот мой код, который я использовал для создания объекта termdocumentmatrix для набора валидаторов. обратите внимание, что ЕДИНСТВЕННАЯ разница в том, что я добавил аргумент «словарь» в элемент управления:

text_val = iconv(data_val$SentimentText, "UTF-8", "ASCII", sub = "")
corpus_val = Corpus(VectorSource(text_val))
tdm_val = TermDocumentMatrix(
  corpus_val,
  control = list(
    removePunctuation = TRUE,
    removestopWords   = TRUE,
    stemming = FALSE,
    removeNumbers = TRUE, 
    tolower = TRUE,
    weighting = weightTfIdf,
    dictionary = tdm_train$dimnames$Terms
  )
)

однако я продолжаю получать следующее сообщение об ошибке:

Ошибка в simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), : 'i, j, v' разной длины

Я прочитал много сообщений, в том числе:

  1. DocumentTermMatrix завершается со странной ошибкой только тогда, когда # терминов › 3000
  2. Анализ данных Twitter — ошибка в матрице терминального документа
  3. данные Twitter ‹- ошибка в termdocumentmatrix
  4. Анализ данных Twitter — ошибка в матрице терминального документа

и я попробовал ВСЕ предложенные ими решения, но ни одно из них не работает.

одно примечание, которое я хотел бы добавить, заключается в том, что проблема возникает только тогда, когда я использую более 2000 твитов.

примечание о входных данных:

входные данные — это таблица данных с двумя столбцами, один из которых называется «SentimentText» (который вы видите в моем коде выше).

в этом столбце каждая строка представляет собой один твит, а каждый твит представляет собой текстовую строку, также известную как character().

пример твита, он же строка данных, выглядит так: «у меня сегодня был такой замечательный день! :>»

любая помощь очень ценится!


person alwaysaskingquestions    schedule 10.05.2016    source источник
comment
Вы бы посмотрели здесь: stackoverflow.com/questions/21790353/ Лучший   -  person adrian1121    schedule 10.05.2016
comment
Привет @adrian1121 спасибо за ссылку! но словарь, упомянутый в ответах, - это не тот словарь, о котором я говорю здесь...   -  person alwaysaskingquestions    schedule 10.05.2016
comment
Было бы полезно, если бы вы могли предоставить некоторые данные для воспроизведения ошибки.   -  person lukeA    schedule 10.05.2016
comment
@lukeA Я не думаю, что смогу предоставить вам образцы данных, если не предоставлю вам 3-5 тысяч твитов в формате csv. ты бы этого хотел? :) потому что, как я уже говорил, эта проблема не возникает с небольшим набором данных...   -  person alwaysaskingquestions    schedule 10.05.2016