it-swarm.com.de

Wie bereinige ich Twitter-Daten in R?

Ich habe Tweets aus Twitter mit dem Twitter-Paket extrahiert und sie in einer Textdatei gespeichert.

Ich habe folgendes am Korpus durchgeführt

xx<-tm_map(xx,removeNumbers, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,stripWhitespace, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,removePunctuation, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,strip_retweets, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,removeWords,stopwords(english), lazy=TRUE, 'mc.cores=1')

(mit mc.cores = 1 und lazy = True, da sonst R auf dem Mac auf Fehler stößt)

tdm<-TermDocumentMatrix(xx)

Aber dieser Begriff Dokumentenmatrix enthält viele seltsame Symbole, bedeutungslose Wörter und dergleichen. Wenn ein Tweet ist

 RT @Foxtel: One man stands between us and annihilation: @IanZiering.
 Sharknado‚Äã 3: OH HELL NO! - July 23 on Foxtel @SyfyAU

Nach der Reinigung des Tweets möchte ich, dass nur die richtigen vollständigen englischen Wörter übrig bleiben, d. H. Ein Satz/eine Phrase, der/die nichts anderes enthält (Benutzernamen, verkürzte Wörter, URLs).

beispiel:

One man stands between us and annihilation oh hell no on 

(Hinweis: Die Transformationsbefehle im tm-Paket können nur Stoppwörter, Interpunktions-Whitespaces und auch die Konvertierung in Kleinbuchstaben entfernen.)

10
kRazzy R

Mit gsub und 

stringr-Paket 

Ich habe einen Teil der Lösung für das Entfernen von Retweets, Verweisen auf Bildschirmnamen, Hashtags, Leerzeichen, Nummern, Interpunktionen, URLs herausgefunden. 

  clean_Tweet = gsub("&amp", "", unclean_Tweet)
  clean_Tweet = gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "", clean_Tweet)
  clean_Tweet = gsub("@\\w+", "", clean_Tweet)
  clean_Tweet = gsub("[[:punct:]]", "", clean_Tweet)
  clean_Tweet = gsub("[[:digit:]]", "", clean_Tweet)
  clean_Tweet = gsub("http\\w+", "", clean_Tweet)
  clean_Tweet = gsub("[ \t]{2,}", "", clean_Tweet)
  clean_Tweet = gsub("^\\s+|\\s+$", "", clean_Tweet) 

ref: (Hicks, 2014) Nach dem obigen habe ich das Folgende gemacht.

 #get rid of unnecessary spaces
clean_Tweet <- str_replace_all(clean_Tweet," "," ")
# Get rid of URLs
clean_Tweet <- str_replace_all(clean_Tweet, "http://t.co/[a-z,A-Z,0-9]*{8}","")
# Take out retweet header, there is only one
clean_Tweet <- str_replace(clean_Tweet,"RT @[a-z,A-Z]*: ","")
# Get rid of hashtags
clean_Tweet <- str_replace_all(clean_Tweet,"#[a-z,A-Z]*","")
# Get rid of references to other screennames
clean_Tweet <- str_replace_all(clean_Tweet,"@[a-z,A-Z]*","")   

ref: (Stanton 2013)

Bevor ich eines der oben genannten Schritte ausführte, brach ich die gesamte Zeichenfolge in ein einzelnes langes Zeichen zusammen.

paste(mytweets, collapse=" ")

Dieser Reinigungsprozess hat für mich ziemlich gut funktioniert, im Gegensatz zu den tm_map-Transformationen.

Alles, was mir jetzt noch übrig bleibt, ist ein Satz von richtigen Wörtern und einigen wenigen unpassenden Wörtern. Nun muss ich nur noch herausfinden, wie man die nicht korrekten englischen Wörter entfernt. Wahrscheinlich muss ich meinen Satz von Wörtern von einem Wörterbuch mit Wörtern abziehen. 

11
kRazzy R

Um die URLs zu entfernen, können Sie Folgendes versuchen:

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

Möglicherweise können Sie ähnliche Funktionen definieren, um den Text weiter zu transformieren.

2
RHertel

Für mich funktionierte dieser Code aus irgendeinem Grund nicht.

# Get rid of URLs
clean_Tweet <- str_replace_all(clean_Tweet, "http://t.co/[a-z,A-Z,0-9]*{8}","")

Fehler war-

Error in stri_replace_all_regex(string, pattern, fix_replacement(replacement),  : 
 Syntax error in regexp pattern. (U_REGEX_RULE_SYNTAX)

Also habe ich stattdessen verwendet

clean_Tweet4 <- str_replace_all(clean_Tweet3, "https://t.co/[a-z,A-Z,0-9]*","")
clean_Tweet5 <- str_replace_all(clean_Tweet4, "http://t.co/[a-z,A-Z,0-9]*","")

uRLs loswerden

1
Cur123

Der Code führt eine Grundreinigung durch

Konvertiert in Kleinbuchstaben

df <- tm_map(df, tolower)  

Sonderzeichen entfernen

df <- tm_map(df, removePunctuation)

Sonderzeichen entfernen

df <- tm_map(df, removeNumbers)

Häufige Wörter entfernen

df <- tm_map(df, removeWords, stopwords('english'))

URL wird entfernt

removeURL <- function(x) gsub('http[[:alnum;]]*', '', x)
0
Parthiban M