2011-10-28 8 views
14

Sto usando il pacchetto R tm e voglio fare del text mining. Questo è un documento ed è trattato come un sacchetto di parole.R file di testo e text mining ... come caricare i dati

Non capisco la documentazione su come caricare un file di testo e per creare gli oggetti necessari per iniziare ad utilizzare funzioni quali ....

stemDocument(x, language = map_IETF(Language(x))) 

Quindi supporre che questo è il mio doc "questo è un test per il carico R "

Come caricare i dati per l'elaborazione del testo e per creare l'oggetto x?

risposta

6

Non è possibile utilizzare semplicemente la funzione readPlain dalla stessa libreria? O potresti semplicemente usare la più comune funzione scan.

mydoc.txt <-scan("./mydoc.txt", what = "character") 
5

In realtà ho trovato questo piuttosto complicato per cominciare, quindi ecco una spiegazione più completa.

In primo luogo, è necessario impostare una fonte per i documenti di testo. Ho trovato che il modo più semplice (soprattutto se avete intenzione di aggiungere più documenti, è quello di creare una fonte di directory che leggerà tutti i file in.

source <- DirSource("yourdirectoryname/") #input path for documents 
YourCorpus <- Corpus(source, readerControl=list(reader=readPlain)) #load in documents 

si può quindi applicare la funzione StemDocument al Corpus. HTH ..

20

come @richiemorrisroe ho trovato questo scarsamente documentata Ecco come ho il mio testo da utilizzare con il pacchetto tm e rendere la matrice termine documento:

library(tm) #load text mining library 
setwd('F:/My Documents/My texts') #sets R's working directory to near where my files are 
a <-Corpus(DirSource("/My Documents/My texts"), readerControl = list(language="lat")) #specifies the exact folder where my text file(s) is for analysis with tm. 
summary(a) #check what went in 
a <- tm_map(a, removeNumbers) 
a <- tm_map(a, removePunctuation) 
a <- tm_map(a , stripWhitespace) 
a <- tm_map(a, tolower) 
a <- tm_map(a, removeWords, stopwords("english")) # this stopword file is at C:\Users\[username]\Documents\R\win-library\2.13\tm\stopwords 
a <- tm_map(a, stemDocument, language = "english") 
adtm <-DocumentTermMatrix(a) 
adtm <- removeSparseTerms(adtm, 0.75) 

in questo caso non è necessario specificare il nome esatto del file. Fintanto che è l'unico in t La directory di cui alla riga 3, verrà utilizzata dalle funzioni tm. Lo faccio in questo modo perché non ho avuto alcun successo nello specificare il nome del file nella riga 3.

Se qualcuno può suggerire come ottenere il testo nel pacchetto lda sarei molto grato. Non sono stato in grado di farlo.

+1

Ho appena scoperto che la funzione stemDocument non sembra funzionare a meno che non venga specificata la lingua, quindi ho modificato il mio codice sopra per includerlo. – Ben

2

Credo che quello che volevi fare fosse leggere il singolo file in un corpus e quindi farlo trattare le diverse righe nel file di testo come osservazioni diverse.

vedere se questo ti dà ciò che si vuole:

text <- read.delim("this is a test for R load.txt", sep = "/t") 
text_corpus <- Corpus(VectorSource(text), readerControl = list(language = "en")) 

Ciò presuppone che il file "Questo è un test per la R load.txt" ha solo una colonna che ha i dati di testo.

Qui "text_corpus" è l'oggetto che stai cercando.

Spero che questo aiuti.

0

Ecco la mia soluzione per un file di testo con una linea per osservazione. l'ultima vignetta su TM (febbraio 2017) fornisce maggiori dettagli.

Problemi correlati