2017-08-08 1 views
0

Das Problem, dass die txt-Datei in einen Korpus lesen: ich eine Schleife habe, dass Downloads Sätze von einer Webseite - und für jede Iteration sie zu einem wachsenden Charakter fügen Vektor.Anfügen txt-Datei im gesamten Schleife in r - dann mit dem tm Paket

Konzeptionell sieht die Ausgabe wie folgt aus:

myVec 

[1] "bla"                                                   
[2] "blablabla"                       
[3] "blabla"                                                         
[4] " blablablablabla" 

Etc ...

Jede Zahl steht für einen Satz, den ich heruntergeladen haben. Für jede Iteration hängt die Schleife den Vektor mit mehr Sätzen an.

Aber anstatt die Ergebnisse in einen Vektor gehen zu lassen - würde ich es gerne in einer wachsenden TXT-Datei speichern. Der Grund dafür ist, dass die Menge der Daten, die ich herunterladen muss, groß ist. Damit ich die Schleife eine Weile laufen lassen muss (1000 Iterationen), mache dann eine Pause - und führe sie dann am nächsten Tag erneut aus.

Und ich möchte, dass die TXT-Datei eine Struktur hat - so dass es immer noch leicht durch Satz aufgeteilt werden kann. Dies liegt daran, dass ich später einen DTM mit jedem Satz als separates Dokument erstellen möchte.

Also, was ich brauche

1: eine Art und Weise in eine Datei zu schreiben, die mit neuen Sätze in der gesamten Schleife angehängt werden kann.

2: Eine Möglichkeit, diese Datei mit dem tm-Paket zu lesen, so dass ich später einen DTM basierend auf den Sätzen, die ich heruntergeladen habe, erstellen kann.

Was ich versucht habe:

Die nächstgelegene ich bekommen habe, was ich will wurde die write.table() Funktion.

write.table(MyVec, file = "output.txt",row.names=FALSE, col.names = FALSE, append= TRUE) 

Dies scheint mir einen Text zu geben, wo die Sätze von Anführungszeichen getrennt sind: „bla“ „blablabla“ „Blabla“ Etc.

Aber ich weiß nicht, wie zu nutzen dies beim Einlesen in ein Korpus mit tm - um später auf Basis der Sätze ein DTM zu erstellen. Vielleicht gibt es einen besseren Weg?

Ich habe auch versucht, die write() Funktion:

write(MyVec, file="output.txt",append=TRUE) 

Das gibt mir eine txt-Datei wächst, aber es scheint nicht, die Sätze zu trennen. Ich weiß nicht, wie man es in ein Korpus einliest und ein DTM basierend auf Sätzen erstellt.

Ich habe writeLines() betrachtet - aber es scheint nicht die Option zum Anhängen - und trotzdem: Ich möchte den Text nicht in Zeilen aufteilen. Ich möchte nur auf Sätze trennen.

+0

Set 'quote = FALSE' für' write.table' und Sie werden die Anführungszeichen loswerden. – Val

Antwort

0

Eine Möglichkeit besteht darin, Ihre Satzliste als Datenrahmen zu speichern (oder zu laden) und als Vektorquelle mit tm() zu analysieren.

library(tm) 

Sentences <- c("First Sentence BLA", "Second Sentence BLA BLA", "Nth Sentence [...] Bla^n") 
SentencesDF <- as.data.frame(Sentences) 
Corpus <- VectorSource(SentencesDF) 

Im vorherigen Beispiel Sie kein Corpus bekommen haben müssen die „Sentence“ Vektor in eine txt oder cvs zu schreiben.Wenn Sie dies aus anderen Gründen noch tun müssen, führen Sie einfach:

write.csv(SentencesDF, file = "NameofFile.csv") 
+0

Danke für die Antwort Nicolás! Ich muss es speichern. Der Grund ist, dass es sehr lange dauert, alle Sätze von der Webseite zu holen. Also muss ich den Prozess unterbrechen und am nächsten Tag abholen können (ich habe den Beitrag aktualisiert, um das zu klären). write.csv() lässt mich das nicht tun; weil es nicht das Argument append annimmt. Ich habe mit write.table() und write() experimentiert. Aber mein Problem ist, dass ich keinen Weg finden kann, die Ergebnisse so zu speichern, dass es einfach ist, den gleichen Vektor wiederherzustellen, mit dem ich beginnen musste. Einer, der auf Sätze aufgeteilt ist. –

+0

Ok, also denke ich an zwei Optionen. Mein Favorit ist es, einen DF für jeden Tag zu speichern (dh. Sentences_2017-08-07; Sentences_2017_08_08; ...) und wenn Sie alle Ihre Quelle erfasst haben, fügen Sie alle atomaren DFs in eins. (zB do.call (rbind, lapply (ls (pattern = "Sentences_"), get)). –

+0

Die zweite Möglichkeit besteht darin, am Ende jedes erfassten Satzes ein eindeutiges Zeichen oder eine Zeichenfolge hinzuzufügen, damit Sie später dazu in der Lage sind um jeden Satz zu analysieren, indem man dieses eindeutige Zeichen als Trennzeichen markiert, wenn man es zurück nach R liest. –

Verwandte Themen