Ошибка в simple_triplet_matrix, невозможность использовать RWeka для подсчета фраз

Используя TM, я сравниваю DocumentTermMatrix со списком словаря, чтобы подсчитать итоги:

totals <- inspect(DocumentTermMatrix(x, list(dictionary = d)))

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

Я попробовал RWeka:

TrigramTokenizer <- function(x) NGramTokenizer(x, 
                                               Weka_control(min = 3, max = 3))
tdm <- TermDocumentMatrix(v.corpus, 
                          control = list(tokenize = TrigramTokenizer))

НО получите следующее сообщение об ошибке:

Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms),  : 
  'i, j, v' different lengths
In addition: Warning messages:
1: In parallel::mclapply(x, termFreq, control) :
  all scheduled cores encountered errors in user code
2: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
3: In simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms),  :
  NAs introduced by coercion.

Можете ли вы помочь с сообщением об ошибке?

Спасибо!!


r tm
person anjarp    schedule 13.12.2013    source источник
comment
Вы пробовали некоторые из ответов здесь?   -  person Ben    schedule 14.12.2013
comment
Я проголосовал за закрытие, так как нет минимального рабочего примера.   -  person Tyler Rinker    schedule 06.03.2014


Ответы (1)


См. мой ответ здесь

Кажется, есть проблемы с использованием RWeka с пакетом parallel. Я нашел обходное решение здесь.

1: http://r.789695.n4.nabble.com/RWeka-and-multicore-package-td4678473.html#a4678948

Самый важный момент — не загружать пакет RWeka, а использовать пространство имен в инкапсулированной функции.

Итак, ваш токенизатор должен выглядеть так

BigramTokenizer <- function(x) {RWeka::NGramTokenizer(x, RWeka::Weka_control(min = 2, max = 2))}
person Dmitriy Selivanov    schedule 26.03.2014