Tmパッケージを使用して非常に基本的なテキスト分析を行い、tf-idfスコアを取得しようとしています。私はOSXを実行しています(Debian Squeezeでこれを試しましたが、同じ結果になりました)。いくつかのテキストファイルを含むディレクトリ(私の作業ディレクトリ)があります(最初のディレクトリにはlyssesの最初の3つのエピソードが含まれ、2番目のエピソードには次の3つのエピソードが含まれています(知っておく必要がある場合) )。
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-idfスコアではなく、デフォルトの用語頻度(tf)であるように見えることに注意してください。
明らかな何かが欠けている場合はお詫びしますが、私が読んだドキュメントに基づくと、これははず動作します。間違いなく、欠点は星にありません...
例の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))