2016-11-01 17 views
1

Ich möchte Daten aus txt (oder HTML) -Dokumenten mit einem Muster extrahieren, das ich im Text mit dem R tm-Paket identifiziert habe. Ich habe Zeitungsartikel auf meinem PC in den Ordnern data_X_txt und data_X (in HTML). Jeder der Ordner enthält Dokumente, die nach einem Unternehmen benannt sind, das alle Zeitungsartikel in einem Text- oder HTML-Dokument enthält. Ich habe diese Dokumente in HTML von Lexis Nexis heruntergeladen.Unbekannte Daten aus txt/HTML-Dateien extrahieren mit R

Für jedes Dokument möchte ich die Upload-Daten von den enthaltenen Artikeln wissen. Ich habe festgestellt, dass das Uploaddatum für jeden Artikel nach dem Wort UPDATE angegeben ist.

So fand ich diese Frage, die Extract unknown words from a recurrent pattern

zu meinem Problem ähnlich ist, aber ich habe einige Probleme auf die Lösung zu bekommen.
Zunächst einmal weiß ich nicht, wie ich meine Daten aus den einzelnen Dokumenten korrekt in R hochladen kann, um sie mit einer Regex-Formel weiterzuverarbeiten.

Zweitens habe ich Probleme mit dem Verständnis und der Anwendung der Unterformel selbst. Sehen Sie diese Formel, die ich gefunden:

sub("^(?:https?:\\/\\/)?[^\\/]+\\/([^\\/]+).*$", "\\1", tmp[,5]) 

Ich habe Schwierigkeiten das Musterteil von Unter Anpassung (der erste Teil nehme ich an) zu meinem Problem. Auch ich weiß nicht, was der zweite Teil bedeutet. Für den dritten Teil weiß ich, dass dies die Quelle des Textes ist, aber ich weiß nicht, was [, 5] bedeutet.

Hier ist der Code in voller Länge:

tmp <- read.csv("LaVanguardia_facebook_statuses.csv") 
sub("^(?:https?:\\/\\/)?[^\\/]+\\/([^\\/]+).*$", "\\1", tmp[,5]) 

auch eine TXT-Datei Ich verwende: https://www.dropbox.com/s/e24ywni8z3s8wqk/SolarWorldAG_25.03.2008_1.HTML.txt?dl=0

Mein Wissen von R ist derzeit wirbeln Kurse und speziell auf Text Mining https://rstudio-pubs-static.s3.amazonaws.com/31867_8236987cf0a8444e962ccd2aec46d9c3.html

+0

Bitte einfach zeigen uns einen Auszug aus dem Eingang, mit dem erwarteten Ausgang und das Material, das Sie direkt in SO versucht. Z.B. Ihr Dropbox-Link funktioniert nicht und gilt nicht als gute Praxis hier auf SO – nozzleman

Antwort

0

Der Text Mining-Paket wird nicht viel helfen, wenn alles, was Sie brauchen, sind die Daten, aber die regulären Ausdruck Fähigkeiten von R sind sehr nützlich.

Um das zu erreichen, was speziell Sie gefragt, versucht gregexpr w/regmatches:

fileName <- "~/Downloads/SolarWorldAG_25.03.2008_1.HTML.txt" 
mytxt <- readChar(fileName, file.info(fileName)$size) 
regmatches(mytxt, regexec("UPDATE:",mytxt)) 

regmatches(mytxt, gregexpr(
"UPDATE: [A-Za-z]{0,10} ?[0-9]{1,2}\\. [A-Z]{1}[a-z|ä]{2,8} [0-9]{4}", 
mytxt)) 

Es heißt, auf Englisch: sucht die wörtlichen UPDATE: gefolgt von einem Leerzeichen, gefolgt von einem optionalen Satz von 0 bis 10 Zeichen, die dem (optionalen) Wochentag entsprechen, ein optionaler Platz, eine 1- bis 2-stellige Zahl, ein Punkt (entkernt durch einen \\, aus Gründen) ein Großbuchstabe, alle Kleinbuchstaben des englischen Alphabets und ä, in einer Folge von 2 bis 8 Buchstaben, gefolgt von einem Leerzeichen gefolgt von einer 4-stelligen Zahl.

Sie erhalten:

[1] "UPDATE: 18. März 2008"  "UPDATE: 14. März 2008"  
[3] "UPDATE: 13. März 2008"  "UPDATE: 14. März 2008"  
[5] "UPDATE: 28. Februar 2008" "UPDATE: 20. Februar 2008" 
... 
[189] "UPDATE: 31. Dezember 2004"  "UPDATE: 3. Januar 2005"   
[191] "UPDATE: 9. Dezember 2004"  "UPDATE: 23. November 2004"  
+0

Danke für die Antwort. Aber sollte es nicht "Sequenz von 2 bis 8 Buchstaben" in der Erklärung des gregexpr() - Codes sagen. Leider kann ich das nicht bearbeiten, weil ich nur mehr als 6 Buchstaben bearbeiten kann. –