2013-02-11 1 views
14

J'essaie d'effectuer une analyse de texte très basique avec le paquetage tm et d'obtenir des scores tf-idf; Je cours OS X (bien que j'ai essayé ceci sur Debian Squeeze avec le même résultat); J'ai un répertoire (qui est mon répertoire de travail) avec quelques fichiers texte (le premier contenant les trois premiers épisodes de Ulysses, le second contenant les trois derniers épisodes, si vous devez le savoir).Essayer de faire fonctionner la pondération de tf-idf dans R

R Version: 2.15.1 SessionInfo() Rapports ceci au sujet de tm: [1] tm_0.5-8.3

bit correspondant du code:

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" 

Vous remarquerez que la pondération semble être toujours la fréquence de terme par défaut (tf) plutôt que les scores tf-idf pondérés que je voudrais.

Excuses si je manque quelque chose d'évident, mais basé sur la documentation que j'ai lu, ce devrait fonctionner. La faute, sans doute, ne se trouve pas dans les étoiles ...

Répondre

21

Si vous regardez la page d'aide DocumentTermMatrix, un à l'exemple, vous verrez que l'argument control est spécifié ainsi:

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

Ainsi, la pondération est spécifiée avec l'élément de liste nommé weighting, et non weight. Et vous pouvez spécifier cette pondération en transmettant un nom de fonction ou une fonction personnalisée, comme dans l'exemple. Mais les travaux suivants aussi:

data(crude) 
dtm <- DocumentTermMatrix(crude, control = list(weighting = weightTfIdf)) 
+1

Yup. C'est ce qu'il a fait. * pondération * pas * poids *. Je pourrais me donner un coup de pied. Merci beaucoup! – cforster

+0

Veuillez noter que la pondération par défaut le normalise. – zipp

Questions connexes