Попытка заставить взвешивание tf-idf работать в R

Я пытаюсь провести базовый анализ текста с помощью пакета tm и получить несколько оценок tf-idf; Я использую OS X (хотя я пробовал это в Debian Squeeze с тем же результатом); У меня есть каталог (это мой рабочий каталог) с парой текстовых файлов в нем (первый содержит первые три эпизода Улисса, второй - вторые три эпизода, если вы должны знать ).

Версия R: 2.15.1 SessionInfo () Сообщает об этом о tm: [1] tm_0.5-8.3

Соответствующий фрагмент кода:

library('tm')
corpus <- Corpus(DirSource('.'))
dtm <- DocumentTermMatrix(corpus,control=list(weight=weightTfIdf))

str(dtm)
List of 6
 $ i       : int [1:12456] 1 1 1 1 1 1 1 1 1 1 ...
 $ j       : int [1:12456] 2 10 12 17 20 24 29 30 32 34 ...
 $ v       : num [1:12456] 1 1 1 1 1 1 1 1 1 1 ...
 $ nrow    : int 2
 $ ncol    : int 10646
 $ dimnames:List of 2
  ..$ Docs : chr [1:2] "bloom.txt" "telemachiad.txt"
  ..$ Terms: chr [1:10646] "_--c'est" "_--et" "_--for" "_--goodbye," ...
 - attr(*, "class")= chr [1:2] "DocumentTermMatrix" "simple_triplet_matrix"
 - attr(*, "Weighting")= chr [1:2] "term frequency" "tf"

Вы заметите, что взвешивание, по-видимому, по-прежнему является частотой термина по умолчанию (tf), а не взвешенными оценками tf-idf, которые я хотел бы.

Приносим извинения, если мне не хватает чего-то очевидного, но, судя по документации, которую я прочитал, это должно работать. Вина, несомненно, не в звездах ...


person cforster    schedule 11.02.2013    source источник


Ответы (1)


Если вы посмотрите на DocumentTermMatrix страницу справки, на пример, вы увидите, что аргумент control задан следующим образом:

data(crude)
dtm <- DocumentTermMatrix(crude,
           control = list(weighting = function(x) weightTfIdf(x, normalize = FALSE),
                          stopwords = TRUE))

Таким образом, весовой коэффициент определяется элементом списка с именем weighting, а не weight. И вы можете указать этот вес, передав имя функции или пользовательскую функцию, как в примере. Но работает и следующее:

data(crude)
dtm <- DocumentTermMatrix(crude, control = list(weighting = weightTfIdf))
person juba    schedule 11.02.2013
comment
Ага. Это сделало это. вес, а не вес. Я мог ударить себя ногой. Спасибо большое! - person cforster; 12.02.2013
comment
Обратите внимание, что взвешивание по умолчанию нормализует его. - person zipp; 28.04.2015