2013-12-13 1 views
4

Использование TM, я сравнивая DocumentTermMatrix против словаря списка для подсчета суммы:Ошибка в simple_triplet_matrix - не в состоянии использовать RWeka считать фразы

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. 

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

Спасибо!

+0

вы пробовали некоторые из ответов [здесь] У (http://stackoverflow.com/q/18504559/1036500)? – Ben

+0

Я проголосовал за закрытие, поскольку нет [Минимальный рабочий пример] (http://stackoverflow.com/help/mcve) –

ответ

2

Смотрите мой ответ here

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

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))} 
Смежные вопросы