Próba poprawienia wagi TF-idf w R
Próbuję wykonać bardzo podstawową analizę tekstu z pakietem TM i uzyskać wyniki TF-idf; używam OS X (choć próbowałem tego na Debianie Squeeze z tym samym wynikiem); mam katalog (który jest moim katalogiem roboczym) z kilkoma plikami tekstowymi (pierwszy zawiera trzy pierwsze odcinki Ulysses , drugi zawiera trzy kolejne odcinki, jeśli musisz wiedzieć).
R Wersja: 2.15.1 SessionInfo() zgłasza to o tm: [1] tm_0. 5-8. 3
Odpowiedni bit kodu:
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"
Zauważysz, że waga wydaje się nadal być domyślnym terminem częstotliwość (TF), a nie ważone wyniki TF-idf, które chciałbym.
Przepraszam, jeśli brakuje mi czegoś oczywistego, ale na podstawie dokumentacji, którą przeczytałem, to powinno zadziałać. Bez wątpienia wina nie leży w gwiazdach...
1 answers
Jeśli spojrzysz na stronę pomocy DocumentTermMatrix
w przykładzie, zobaczysz, że argument control
jest podany w ten sposób:
data(crude)
dtm <- DocumentTermMatrix(crude,
control = list(weighting = function(x) weightTfIdf(x, normalize = FALSE),
stopwords = TRUE))
Tak więc waga jest określona z elementem listy o nazwie weighting
, a nie weight
. Możesz określić tę wagę, przekazując nazwę funkcji lub funkcję niestandardową, jak w przykładzie. Ale działa też:
data(crude)
dtm <- DocumentTermMatrix(crude, control = list(weighting = weightTfIdf))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-11 21:00:22