Corpus Text Mining

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Corpus Text Mining

Beitrag von Luisa_33 »

Hallo,

ich habe eine Frage zur Corpus-Funktion.
Und zwar möchte ich aus meinen Daten die Nummern, Punkte, .. usw. entfernen.
Am Ende bekomme ich eine Liste, siehe Bild.

Wie kann ich die Daten aus der Liste auslesen und anschließend in mein Ausgangs-Dataframe einfügen?
Kann mir jemand einen Tipp geben, wie das funktioniert. Ich habe dazu leider nicht das passende gefunden.

Aktueller Code

Code: Alles auswählen

mydata <- Corpus(VectorSource(newdata$TEXT))
# remove extra whitespace
mydata <- tm_map(mydata, stripWhitespace)
# Remove numbers
mydata <- tm_map(mydata, removeNumbers)

mydata <- as.data.frame(as.matrix(mydata))
dataframe<-data.frame(text=unlist(sapply(mydata)), 
                      stringsAsFactors=F)
Liebe Grüße
Dateianhänge
Ohne Titel2.png
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Corpus Text Mining

Beitrag von ruedi_br »

Das Paket tm hat auch einen Befehl
removePunctuation
, der weiterhelfen könnte.
VG
Ruedi
fortune(111)
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Corpus Text Mining

Beitrag von Luisa_33 »

Ja, das habe ich schon gesehen. Danke :)
Hat jemand eine Antwort auf die andere Frage?
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Corpus Text Mining

Beitrag von Athomas »

Luisa_33 hat geschrieben: Fr Jul 10, 2020 10:46 am Hat jemand eine Antwort auf die andere Frage?
Es ist besser - und darum wird ja auch immer wieder nachdrücklich gebeten - etwas für den potentiellen Antwortgeber Nachvollziehbares zur Verfügung zu stellen.

Die Minimalausstattung sind also das Programm (bitte komplett, einschließlich aller zu ladenden Libraries!) UND Daten - wenn es aus irgenwelchen Gründen nicht die Originaldaten sein können, zumindest ein (modifizierter) Auszug, bei dem das bestehende Problem auftritt.
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Corpus Text Mining

Beitrag von Luisa_33 »

Okay. hoffentlich sind die weiteren Daten hilfreich.

Also ich habe ein Problem beim Umformen des Corpus.
Ich möchte, dass die Veränderungen des Textes aus dem Corpus myData wieder in newdata$Text überführt werden.
Leider bekomme ich das nicht hin.

Des Weiteren sind in den Zeilen der Spalte Text, die Inhalte unterschiedlich lang.
Manchmal steht dort 1 Wort und manchmal 10. Ich würde aber gern höchstens 3 Wörter in den Zeilen stehen haben.
Ich habe dazu den Befehl Substr() gefunden. Aber dieser löscht immer nur einzelne Buchstaben und nicht Wörter.
Vllt. habt ihr dazu auch eine Idee.

Vielen Dank schon mal.


Code: Alles auswählen

library(readxl)
library(tm)

newdata<- read_xlsx("/Volumes/TextMining/neu2.xlsx")

#Lösche alle Zeilen die NA sind und 0
newdata <- newdata[complete.cases(newdata), ]
newdata <- newdata[newdata$Größe != "0", ] 
newdata <- newdata[newdata$Text != "0", ] 

mydata <- Corpus(VectorSource(newdata$TEXT))

#Remove Sonderzeichen 
j=1
for(j in seq(mydata)){
  mydata[[j]] <- gsub("/", " ", mydata[[j]])
  mydata[[j]] <- gsub("!", " ", mydata[[j]])
}
# remove extra whitespace
mydata <- tm_map(mydata, stripWhitespace)
# Remove numbers
mydata <- tm_map(mydata, removeNumbers)
mydata <- as.vector(mydata)

'nur ersten 3 wörter --> noch nicht gelöst'
j=1
for(j in seq(mydata)){
  mydata[[j]] <- substr(mydata[[j]], )
}


mydata <- as.data.frame(as.matrix(mydata))
dataframe<-data.frame(text=unlist(sapply(mydata)), 
                      stringsAsFactors=F)
Dateianhänge
neu2.xlsx
(9.37 KiB) 72-mal heruntergeladen
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Corpus Text Mining

Beitrag von Athomas »

mydata <- Corpus(VectorSource(newdata$TEXT))
Was soll das bringen, warum schreibst Du hier Text groß?
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Corpus Text Mining

Beitrag von Luisa_33 »

Das war aus Versehen, weil ich meine Variablen umbenannt habe bevor ich sie hochgeladen habe.

So ist es natürlich richtig.
mydata <- Corpus(VectorSource(newdata$Text))
Athomas hat geschrieben: Fr Jul 10, 2020 2:52 pm
mydata <- Corpus(VectorSource(newdata$TEXT))
Was soll das bringen, warum schreibst Du hier Text groß?
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Corpus Text Mining

Beitrag von Athomas »

"Was soll das bringen" soll bedeuten "Was versprichst Du Dir von der Anwendung der Funktion "Corpus" auf newdata$Text"?

Code: Alles auswählen

> mydata[[1]]$content
[1] "Schneiden der Platte / groß, hartes Material"
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Corpus Text Mining

Beitrag von Luisa_33 »

Okay. also ich will ja den Inhalt in der Spalte Text "bereinigen".

Und tm_map ist nicht auf Dataframes anwendbar. Wenn ich das versuche, bekomme ich immer eine Fehlermeldung.
Ich habe beispielsweise auch schon das versucht.

Code: Alles auswählen

# remove extra whitespace
newdata <- tm_map(newdata$Text, stripWhitespace)

# remove extra whitespace
newdata <- tm_map(newdata, stripWhitespace)
Da das nicht funktioniert hat, habe ich nach Alternativen gesucht und bin auf Corpus gestoßen.
In der Variable mydata werden die Änderungen, die am Text vorgenommen werden, gespeichert.

Code: Alles auswählen

mydata <- Corpus(VectorSource(newdata$Text))
Ich weiß nicht, ob Corpus die Lösung für mein Problem ist. Das erschien mit jedoch von allen gefundenen Lösungen am hilfreichsten.
Nur dann konnte ich den Inhalt von Corpus nicht wieder in newdata$Text speichern.

Code: Alles auswählen

> mydata[[1]]$content
[1] "Schneiden der Platte / groß, hartes Material"
Für diese Spalte hätte ich am Ende gern das Ergebnis: [1] Schneiden der Platte
Der Rest sollte aus der Zeile gelöscht werden.
Damit verspreche ich mir, dass in meinen Orginaldaten beispielsweise Firmennamen gelöscht werden.

Zudem gibt es den Text: Verpackung / Versand --> dieser soll am Ende Verpackung Versand heißen.
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Corpus Text Mining

Beitrag von Athomas »

Verstehe ich Dich richtig, dass einmal alles ab dem "/" gelöscht, und das andere Mal lediglich das "/" selbst entfernt werden soll - und das, ohne detailliert vorzugeben, in welcher Situation die jeweilige Alternative greifen soll :shock: ?
Antworten