library(tm)
library(SnowballC)
?mean
source <- DirSource("../../data/rejto_konyvek")
rejtoKonyvek <- VCorpus(x = source,
readerControl =
list(reader = readPDF(),
language = "hun"))
str(rejtoKonyvek) # nagyon nagy kimenet is lehet
str(rejtoKonyvek[[1]][["content"]])
str(rejtoKonyvek[[1]]$content)
rejtoKonyvek
length(rejtoKonyvek)
class(rejtoKonyvek)
typeof(rejtoKonyvek)
Bizonyos transzformációkra létezik fgv a tm package-ben (de újak is írhatóak)
Pl.: extra whitespace-k törlése, majd konvertálás kisbetűkre
rejtoKonyvek <- tm_map(rejtoKonyvek, stripWhitespace)
rejtoKonyvek <- tm_map(rejtoKonyvek,
content_transformer(tolower))
meta(rejtoKonyvek[[2]], "megjegyzes") <-
"Ujra kene olvasni"
meta(rejtoKonyvek[[2]])
## author : Rejtő Jenő
## datetimestamp: 2003-08-09 18:41:53
## description : character(0)
## heading : A szőke ciklon
## id : Rejto_Jeno_A_szoke_ciklon.pdf
## language : hun
## origin : character(0)
## megjegyzes : Ujra kene olvasni
dokKifMx <- DocumentTermMatrix(rejtoKonyvek)
inspect(dokKifMx[,1000:1001])
## <<DocumentTermMatrix (documents: 5, terms: 2)>>
## Non-/sparse entries: 2/8
## Sparsity : 80%
## Maximal term length: 18
## Weighting : term frequency (tf)
##
## Terms
## Docs <c3><a1>lmackenzie
## Rejto_Jeno_A_nema_revolverek_varosa.pdf 0
## Rejto_Jeno_A_szoke_ciklon.pdf 0
## Rejto_Jeno_Az_eloretolt_helyorseg.pdf 0
## Rejto_Jeno_Menni_vagy_meghalni.pdf 2
## Rejto_Jeno_Piszkos_Fred_a_kapitany.pdf 0
## Terms
## Docs <c3><a1>lmatagon
## Rejto_Jeno_A_nema_revolverek_varosa.pdf 0
## Rejto_Jeno_A_szoke_ciklon.pdf 0
## Rejto_Jeno_Az_eloretolt_helyorseg.pdf 1
## Rejto_Jeno_Menni_vagy_meghalni.pdf 0
## Rejto_Jeno_Piszkos_Fred_a_kapitany.pdf 0
findFreqTerms(dokKifMx, 50)
findAssocs(dokKifMx, "légió", 0.95)
dokKifMxReduced <- removeSparseTerms(dokKifMx, 0.4)
Szótár: szavak halmaza
Dokumentum-kifejezés mx létrehozása szótárral:
szotar <- c("igen", "nem")
dokKifMxSzotarral <- DocumentTermMatrix(rejtoKonyvek,
list(dictionary = szotar))
as.matrix(dokKifMxSzotarral)
## Terms
## Docs igen nem
## Rejto_Jeno_A_nema_revolverek_varosa.pdf 8 668
## Rejto_Jeno_A_szoke_ciklon.pdf 23 534
## Rejto_Jeno_Az_eloretolt_helyorseg.pdf 13 630
## Rejto_Jeno_Menni_vagy_meghalni.pdf 10 466
## Rejto_Jeno_Piszkos_Fred_a_kapitany.pdf 51 669
Data frame: leggyakoribb típus R-ben
Nem tartozik az alaptípusok közé, listaként tárolódik
Mx-szerű, azonban az oszlopok különböző típusúak lehetnek
A dok-kif mx-ot az alábbi módon konvertálhatjuk data frame-mé:
dokKifDf <- as.data.frame(as.matrix(dokKifMxReduced))
ncol(dokKifDf) # oszlopok száma
nrow(dokKifDf) # sorok száma
names(dokKifDf) # oszlopok nevei
head(dokKifDf) # oszlopok nevei és az első sorok
# melyik sor tartozik ehhez a könyvhöz?
rownames(dokKifDf)
## [1] "Rejto_Jeno_A_nema_revolverek_varosa.pdf"
## [2] "Rejto_Jeno_A_szoke_ciklon.pdf"
## [3] "Rejto_Jeno_Az_eloretolt_helyorseg.pdf"
## [4] "Rejto_Jeno_Menni_vagy_meghalni.pdf"
## [5] "Rejto_Jeno_Piszkos_Fred_a_kapitany.pdf"
# kiválasztjuk az 5. sort, és számmá konvertáljuk
tmp <- as.numeric(dokKifDf[5, ])
plot(density(tmp), xlab="Elofordulasok szama")
barplot(dokKifDf[,"piszkos"], col=rainbow(5))
legend("topright", rownames(dokKifDf), fill=rainbow(5))
Célszerű a végleges kódokat kigyűjteni egy szöveges fájlba.
Egy szöveges fájlban található utasításokat végrehajthatunk a source() függvénnyel. Pl.:
source("file_path/to_source_file/megoldasok.r")