wake-up-neo.com

R Textdatei und Text-Mining ... wie Daten geladen werden

Ich verwende das R-Paket tm und möchte Text Mining durchführen. Dies ist ein Dokument und wird als Wortbeutel behandelt.

Ich verstehe die Dokumentation zum Laden einer Textdatei und zum Erstellen der erforderlichen Objekte nicht, um mit Funktionen wie ... zu beginnen.

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

Nehmen Sie also an, dass dies mein Dokument ist "dies ist ein Test für R load". 

Wie lade ich die Daten für die Textverarbeitung und um das Objekt x zu erstellen?

15
user959129

Wie @richiemorrisroe fand ich das schlecht dokumentiert. So bekomme ich meinen Text zur Verwendung mit dem Paket tm und zur Erstellung der Dokumentmatrix:

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 diesem Fall müssen Sie nicht den genauen Dateinamen angeben. Solange dies die einzige in dem in Zeile 3 genannten Verzeichnis ist, wird es von den TM-Funktionen verwendet. Ich mache das so, weil ich in Zeile 3 keinen Dateinamen angegeben habe. 

Wenn jemand vorschlagen kann, wie Text in das lda-Paket aufgenommen werden kann, wäre ich sehr dankbar. Ich konnte das überhaupt nicht klären.

22
Ben

Ich fand das eigentlich ziemlich kompliziert, daher hier eine ausführlichere Erklärung.

Zunächst müssen Sie eine Quelle für Ihre Textdokumente einrichten. Ich habe festgestellt, dass der einfachste Weg (besonders wenn Sie mehr Dokumente hinzufügen möchten), eine Verzeichnisquelle erstellen soll, in der alle Ihre Dateien eingelesen werden.

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

Sie können dann die StemDocument-Funktion auf Ihren Corpus anwenden. HTH.

6
richiemorrisroe

Können Sie nicht einfach die Funktion readPlain aus derselben Bibliothek verwenden? Oder Sie können einfach die häufigere scan-Funktion verwenden.

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

Ich glaube, Sie wollten einzelne Dateien in einen Korpus einlesen und dann die verschiedenen Zeilen in der Textdatei als unterschiedliche Beobachtungen behandeln.

Sehen Sie, ob Sie das bekommen, was Sie wollen:

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

Dies setzt voraus, dass die Datei "Dies ist ein Test für R load.txt" nur eine Spalte enthält, die die Textdaten enthält.

Hier ist der "text_corpus" das Objekt, nach dem Sie suchen.

Hoffe das hilft.

2
Shreyes

Hier ist meine Lösung für eine Textdatei mit einer Zeile pro Beobachtung. die neueste vignette auf tm (februar 2017) enthält weitere details.

text <- read.delim(textFileName, header=F, sep = "\n",stringsAsFactors = F)
colnames(text) <- c("MyCol")
docs <- text$MyCol
a <- VCorpus(VectorSource(docs))
0
GM1313