Я боролся с пакетом RWeka, особенно с функцией NGramTokenizer для создания биграмм. Изучая Интернет, я видел одного или двух других пользователей с той же проблемой, но без решения (это работает для меня).
Ниже приведен пример: 2-gram и 3 -грамм вместо 1-грамма при использовании RWeka
Итак, бег:
library(RWeka)
library(tm)
as.matrix(TermDocumentMatrix(Corpus(VectorSource(c(txt1 = "This is my house",
txt2 = "My house is green"))),
list(tokenize = function(x) NGramTokenizer(x,
Weka_control(min=2,
max=2)),
tolower = TRUE)))
Я получил:
Docs
Terms txt1 txt2
house 1 1
this 1 0
green 0 1
- Обратите внимание, что нет биграмм, только униграммы (дом, это, зеленый).
Я попробовал это на изменчивом корпусе с разделенной функцией токенизатора, а также на том, как я узнал из курса DataCamp, но вместо этого получил следующую проблему.
Error in .jcall("RWekaInterfaces", "[S", "tokenize", .jcast(tokenizer,
: java.lang.NullPointerException Called from: .jcheck()
Были и другие обходные решения, которые я видел в Интернете, которые работали нормально, но все же приводили к униграммам, как показано выше.
Запуск Java 1.8 и R 3.4.3 в 64-разрядной версии ОС Windows.
Я попытался установить более старые версии RWeka, но при попытке старой установки tm возникли ошибки, поэтому я не мог заставить это работать для меня (используемые версии, на которые ссылается LukeA в потоке SO, связанном в начале этого вопроса ).