2016-08-03 22 views
2

Ich bin neu in der tm Paket und wäre dankbar für Hilfe. Ich habe eine Reihe von Posts, denen ich unnötige Symbole und Stoppwörter entnommen habe, die ich mit den verschiedenen Funktionen des tm Pakets (siehe unten) gemacht habe. Am Ende bleiben mir 201 Dokumente, die die sauberen Zeichenfolgen enthalten, die ich brauche, aber es ist kein R-Objekt, sondern ein VCorpus Objekt. Wie sollte ich diese verarbeiteten Dokumente in eine einzige Textdatei steppen, so dass sie zu einer langen Zeichenfolge wird?Text zurück zu R-Objekt in tm-Paket

Mit anderen Worten, wie kann man ein VCorpus-Objekt in einen Datenrahmen oder eine Liste oder ein anderes R-Objekt konvertieren?

corpus <-iconv(posts$message, "latin1", "ASCII", sub="") 

corpus <- Corpus(VectorSource(docs)) 
corpus <- tm_map(corpus, PlainTextDocument) 
corpus <- tm_map(corpus, removePunctuation) 

corpus <- tm_map(corpus, removeNumbers) 
corpus <- tm_map(corpus, tolower) 

#remove speical characters for emails 

for(j in seq(corpus)) 
{ 
    corpus[[j]] <- gsub("/", " ", corpus[[j]]) 
    corpus[[j]] <- gsub("@", " ", corpus[[j]]) 
    corpus[[j]] <- gsub("\\|", " ", corpus[[j]]) 
} 


library(SnowballC) 

corpus <- tm_map(corpus, stemDocument) 

#remove common English stopwords 
docs <- tm_map(docs, removeWords, stopwords("english")) 

#remove words that will be common in our given context 
docs <- tm_map(docs, removeWords, c("department", "email", "job", "fresher", "internship")) 

#removeUrls 
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x) 

corpus <- tm_map(corpus, removeURL) 

> corpus 
<<VCorpus>> 
Metadata: corpus specific: 0, document level (indexed): 0 
Content: documents: 201 
+0

Bearbeiten Sie Ihre Frage nicht zu einer völlig anderen Frage. Öffnen Sie stattdessen eine neue Frage. – MrFlick

Antwort

1

Der Corpus ist eine Liste von Nur-Text-Dokumenten. Wenn Sie den gesamten Inhalt als Zeichenfeld extrahieren möchten, können Sie sapply und content Schleife über die Liste verwenden alle Inhalte

Geprüft zu extrahieren mit

# library(tm) 
data("crude") 
x <- tm_map(crude, stemDocument, lazy = TRUE) 
x <- tm_map(x, content_transformer(tolower)) 

xx <- sapply(x, content) 
str(xx) 

Verwenden lapply statt sapply wenn Sie wollen eine Liste.

+0

Ich erhalte den folgenden Fehler, wenn ich Ihre Daten durch meine eigenen ersetze: 'Fehler in UseMethod (" meta ", x): keine anwendbare Methode für 'Meta' angewendet auf ein Objekt der Klasse" Zeichen "' –

+2

Dann sollten Sie bereitstellen ein reproduzierbares Beispiel in Ihrer Frage, damit ich sehen kann, wie sich Ihr Korpus von der von mir erstellten Probe unterscheidet. Es sieht so aus, als ob deine 'removeURL' in einen' content_transformer' gehüllt sein sollte. Ich schlage vor, Sie lesen die Dokumentation für die letztere Funktion. – MrFlick