Chcę stemplować dokumenty w Corpus of plain text documents przy użyciu pakietu TM w R. Kiedy stosuję funkcję SnowballStemmer do wszystkich dokumentów korpusu, tylko ostatnie słowo każdego dokumentu jest wynikało.Snowball Stemmer wywodzi tylko ostatnie słowo
library(tm)
library(Snowball)
library(RWeka)
library(rJava)
path <- c("C:/path/to/diretory")
corp <- Corpus(DirSource(path),
readerControl = list(reader = readPlain, language = "en_US",
load = TRUE))
tm_map(corp,SnowballStemmer) #stemDocument has the same problem
Myślę, że jest to związane ze sposobem wczytywania dokumentów do korpusu. Aby zilustrować to z kilku prostych przykładach:
> vec<-c("running runner runs","happyness happies")
> stemDocument(vec)
[1] "running runner run" "happyness happi"
> vec2<-c("running","runner","runs","happyness","happies")
> stemDocument(vec2)
[1] "run" "runner" "run" "happy" "happi" <-
> corp<-Corpus(VectorSource(vec))
> corp<-tm_map(corp, stemDocument)
> inspect(corp)
A corpus with 2 text documents
The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
create_date creator
Available variables in the data frame are:
MetaID
[[1]]
run runner run
[[2]]
happy happi
> corp2<-Corpus(DirSource(path),readerControl=list(reader=readPlain,language="en_US" , load=T))
> corp2<-tm_map(corp2, stemDocument)
> inspect(corp2)
A corpus with 2 text documents
The metadata consists of 2 tag-value pairs and a data frame
Available tags are:
create_date creator
Available variables in the data frame are:
MetaID
$`1.txt`
running runner runs
$`2.txt`
happyness happies
Czy Rstem nie jest interfejsem R do Snowballa? Dlatego powinieneś bibliotekować (Rstem) i wypróbować tm_map (corp, wordStem). –
Dzięki za komentarz. Próbowałem, a wyniki były takie same. Podam lepszy przykład powyżej, aby zilustrować problem nieco więcej. – Christian