多分tm::DocumentTermMatrix
の仕組みを誤解しているかもしれません。TM DocumentTermMatrixは、与えられたコーパスに予期しない結果を与える
inspect(Description.text.features[1,])
<<DocumentTermMatrix (documents: 1, terms: 887)>>
Non-/sparse entries: 0/887
Sparsity : 100%
Maximal term length: 15
Weighting : term frequency (tf)
Sample :
Terms
Docs banc camill mar martin ospedal presid san sanitar torin vittor
1 0 0 0 0 0 0 0 0 0 0
:私はこれを取得DTMの最初の行を検査する際
Description.text.features <- DocumentTermMatrix(Corpus(VectorSource(Description.text)), list(
bounds = list(local = c(3, Inf)),
tokenize = 'scan'
))
:私は介してプロセス
head(Description.text, 3)
[1] "azi sanitar local to1 presid osp martin presid ospedalier martin tofan torin tel possibil raggiung ospedal segu bus tram"
[2] "torin croll controsoffitt repart pediatr martin mag cartell compars sest pian ospedal martin torin ospedal tofan sol due anno riapertur"
[3] "ospedal martin croll controsoffitt repart pediatr mag ospedal martin croll controsoffitt repart pediatr distacc intonac avven nott mattin"
:私は、前処理した後、このようになりますコーパスを持っていますこれらの用語は、コーパスDescription.text
の最初の文書に対応しません(たとえば、banc
またはcamill
は最初の文書にはなく、たとえばの場合はゼロです)。またはpresid
)。さらに
私は実行する場合:
Description.text.features[1,] %>% as.matrix() %>% sum
は、私が最初の文書で周波数>ゼロとは用語が存在しないことを示し、ゼロを入手!
ここでは何が起こっていますか?
おかげ
UPDATE
は、私は自分の「DTMまでのコーパス」関数を作成し、実際にそれは非常に異なる結果を与えます。 tm::DocumentTermMatrix
のものとはまったく異なる文書用語の重みとは別に(私はあなたがコーパスを与えられたと思います)、私の関数ではtm関数(〜3000対800のtm)よりも多くの用語が得られます。
corpus.to.DTM <- function(corpus, min.doc.freq = 3, minlength = 3, weight.fun = weightTfIdf) {
library(dplyr)
library(magrittr)
library(tm)
library(parallel)
lvls <- mclapply(corpus, function(doc) words(doc) %>% unique, mc.cores = 8) %>%
unlist %>%
table %>%
data.frame %>%
set_colnames(c('term', 'freq')) %>%
mutate(lengths = str_length(term)) %>%
filter(freq >= min.doc.freq & lengths >= minlength) %>%
use_series(term)
dtm <- mclapply(corpus, function(doc) factor(words(doc), levels = lvls) %>% table %>% as.vector, mc.cores = 8) %>%
do.call(what = 'rbind') %>%
set_colnames(lvls)
as.DocumentTermMatrix(dtm, weighting = weightTfIdf) %>%
as.matrix() %>%
as.data.frame()
}
感謝:それは、quantedaにも簡単です!私はパッケージを見てみましょう!しかし、私の質問は、具体的には何が問題になっていたのかについてでした! – Bakaburg