2015-07-19 3 views
0

Я создаю модель триграмм и квадрантов, используя RWeka. Существует странное поведение я заметил Для триграммыRWeka удалить Редкие условия

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

> dim(tdm) 
[1] 1540099  3 

> tdm 
<<TermDocumentMatrix (terms: 1540099, documents: 3)>> 
Non-/sparse entries: 1548629/3071668 
Sparsity   : 66% 
Maximal term length: 180 
Weighting   : term frequency (tf) 

Когда я удалить редкие термины он сужает выше ~ 1 миллион строк в 8307

> b <- removeSparseTerms(tdm, 0.66) 
> dim(b) 
[1] 8307 3 

Для удаления Quadgram не влияет на его на все

quadgramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 4, max = 4)) 
    tdm <- TermDocumentMatrix(docs, control = list(tokenize = QuadgramTokenizer)) 

<<TermDocumentMatrix (terms: 1427403, documents: 3)>> 
Non-/sparse entries: 1427936/2854273 
Sparsity   : 67% 
Maximal term length: 185 
Weighting   : term frequency (tf) 
> dim(tdm) 
[1] 1427403  3 
> tdm <- removeSparseTerms(tdm, 0.67) 
> dim(tdm) 
[1] 1427403  3 

Имеет 1 миллион предметов после удаления разреженных условий.

Это не выглядит правильным.

Пожалуйста, дайте мне знать, если я делаю что-то неправильно

С уважением Ganesh

ответ

0

Это странно. Логическое поведение заключается в том, что удаление разреженных терминов в обоих случаях значительно удалит, поскольку триграммы и квадранты являются менее распространенными однократными случаями графа. У вас есть другой объект QuadgramTokenizer в вашей сессии? ваша оригинальная функция вызывается с небольшим квадратом q. Но я задаюсь вопросом, почему это не показало ошибки, возможно, это было пустым? Я думаю, что это должно быть что-то простое. Проверьте это, и если нет, я запустил его с образцом данных и посмотрю, что здесь может быть неправильным.

Смежные вопросы