Data-Mining und Twitter

    Bei sozialen Netzwerken eignet sich Twitter eher für die Extraktion von Textdaten, da die Länge der Nachricht, in der die Benutzer das Wesentliche einsetzen müssen, stark begrenzt ist.


    Ich schlage vor zu erraten, welche Technologie von dieser Wortwolke umrahmt wird.


    Wolke


    Mit der Twitter-API können Sie eine Vielzahl von Informationen extrahieren und analysieren. Ein Artikel, wie Sie dies mit der Programmiersprache R tun.


    Das Schreiben des Codes nimmt nicht so viel Zeit in Anspruch, aufgrund von Änderungen und der Verschärfung der Twitter-API können sich Schwierigkeiten ergeben. Das Unternehmen hat sich offenbar ernsthaft um Sicherheitsfragen gekümmert, nachdem es im US-Kongress nach der Untersuchung des Einflusses "russischer Hacker" auf die Wahlen in den USA im Jahr 2016 ausgetragen wurde.


    Zugriff auf API


    Warum sollte jemand Daten kommerziell aus Twitter extrahieren müssen? Nun, es hilft beispielsweise, genauere Vorhersagen über das Ergebnis von Sportereignissen zu treffen . Aber ich bin mir sicher, dass es noch andere Benutzerskripte gibt.


    Zunächst einmal ist es klar, dass Sie einen Twitter-Account mit der Telefonnummer benötigen. Es ist notwendig, eine Anwendung zu erstellen. Dieser Schritt ermöglicht den Zugriff auf die API.


    Gehen Sie auf die Entwicklerseite und klicken Sie auf die Schaltfläche App erstellen . Im Folgenden finden Sie eine Seite, auf der Sie Informationen zur Anwendung ausfüllen müssen. Momentan besteht die Seite aus den folgenden Feldern.


    Apps


    • AppName - der Name der Anwendung (erforderlich).
    • Applikationsbeschreibung - Beschreibung der Applikation (erforderlich).
    • Website-URL - Anwendungs-Site-Seite (erforderlich). Sie können alles eingeben, das wie eine URL aussieht.
    • Anmeldung bei Twitter aktivieren (Kontrollkästchen) - Sie können sich von der Anwendungsseite aus bei Twitter anmelden.
    • Callback-URLs - Callback- Anwendung zur Authentifizierung (obligatorisch) und erforderlich , die Sie verlassen können http://127.0.0.1:1410.

    Es folgen die optionalen Felder: Adresse der Seite mit den Nutzungsbedingungen, Name der Organisation usw.


    Wählen Sie beim Erstellen eines Entwicklerkontos eine von drei Optionen aus.


    • Standard - Standardoption , Sie können nach Einträgen für eine Tiefe von ≤ 7 Tagen kostenlos suchen.
    • Premium - Eine erweiterte Option, mit der Sie nach Datensätzen mit einer Tiefe von ≤ 30 Tagen und seit 2006 suchen können. Kostenlos, aber Sie erhalten nicht sofort nach dem Überprüfen der Anwendung.
    • Enterprise - Business Class, bezahlter und zuverlässiger Tarif.

    Ich entschied mich für Premium , ich musste etwa eine Woche auf die Genehmigung warten. Ich kann nicht jedem sagen, ob er es in einer Reihe gibt, aber es ist einen Versuch wert, aber Standard geht nirgendwohin.


    Verbinden Sie sich mit Twitter


    Nachdem Sie auf der Registerkarte Schlüssel und Token eine Anwendung erstellt haben, wird ein Satz mit den folgenden Elementen angezeigt. Die folgenden Namen und die entsprechenden Variablen sind R.


    Consumer-API-Schlüssel


    • API-Schlüssel -api_key
    • API-Geheimschlüssel -api_secret

    Zugriffstoken und Zugriffstoken geheim


    • Zugriffstoken -access_token
    • Zugriffstoken geheim -access_token_secret

    Installieren Sie die erforderlichen Pakete.


    install.packages("rtweet")
    install.packages("tm")
    install.packages("wordcloud")

    Dieser Teil des Codes wird so aussehen.


    library("rtweet")
    api_key <- ""api_secret <- ""access_token <- ""access_token_secret <- ""appname=""setup_twitter_oauth (
      api_key,
      api_secret,
      access_token,
      access_token_secret)

    Nach der Authentifizierung bietet R an, die Codes OAuthzur späteren Verwendung auf der Festplatte zu speichern .


    [1] "Using direct authentication"
    Use a localfiletocache OAuth access credentials between R sessions?
    1: Yes
    2: No

    Beide Optionen sind akzeptabel, ich habe die erste gewählt.


    Ergebnisse suchen und filtern


    tweets <- search_tweets("hadoop", include_rts=FALSE, n=600)

    Mit dem Schlüssel include_rtskönnen Sie die Aufnahme in die Suche oder den Ausschluss von Retweets davon steuern. Bei der Ausgabe erhalten wir eine Tabelle mit vielen Feldern, in der Details und Details zu jedem Datensatz vorhanden sind. Hier sind die ersten 20.


    > head(names(tweets), n=20)
     [1] "user_id""status_id""created_at"
     [4] "screen_name""text""source"
     [7] "display_text_width""reply_to_status_id""reply_to_user_id"
    [10] "reply_to_screen_name""is_quote""is_retweet"
    [13] "favorite_count""retweet_count""hashtags"
    [16] "symbols""urls_url""urls_t.co"
    [19] "urls_expanded_url""media_url"

    Sie können eine komplexere Suchzeichenfolge erstellen.


    search_string <- paste0(c("data mining","#bigdata"),collapse = "+")
    search_tweets(search_string, include_rts=FALSE, n=100)

    Suchergebnisse können in einer Textdatei gespeichert werden.


    write.table(tweets$text, file="datamine.txt")

    Wir verschmelzen mit dem Korpus von Texten, filtern nach offiziellen Wörtern, Satzzeichen und übersetzen alles in Kleinbuchstaben.


    Es gibt eine andere Suchfunktion - für searchTwitterdie eine Bibliothek erforderlich ist twitteR. In mancher Hinsicht ist es bequemer search_tweets, aber in etwas ist es schlechter.


    Plus - das Vorhandensein eines Filters rechtzeitig.


      tweets <- searchTwitter("hadoop", since="2017-09-01", n=500)
      text = sapply(tweets, function(x) x$getText())

    Minus - Die Ausgabe ist keine Tabelle, sondern ein Objekt vom Typ status. Um es in unserem Beispiel verwenden zu können, müssen Sie das Textfeld von der Ausgabe isolieren. Das macht sapplydie zweite Zeile.


    corpus <- Corpus(VectorSource(tweets$text))  
    clearCorpus <- tm_map(corpus, function(x) iconv(enc2utf8(x), sub = "byte"))
    tdm <- TermDocumentMatrix(clearCorpus, control =
        list(removePunctuation = TRUE,
            stopwords = c("com", "https", "hadoop", stopwords("english")),
            removeNumbers = TRUE,
            tolower = TRUE))

    In der zweiten Zeile wird die Funktion tm_mapbenötigt, um alle Emodzhi-Zeichen in Kleinbuchstaben zu übersetzen. Andernfalls wird die Konvertierung in Kleinbuchstaben tolowermit einem Fehler abgeschlossen.


    Baue eine Wortwolke auf


    Word Clouds sind , soweit ich weiß, zum ersten Mal auf Flickr- Foto-Hosting aufgetaucht und haben seitdem an Popularität gewonnen. Für diese Aufgabe benötigen wir eine Bibliothek wordcloud.


    m <- as.matrix(tdm)
    word_freqs <- sort(rowSums(m), decreasing=TRUE)
    dm <- data.frame(word=names(word_freqs), freq=word_freqs)wordcloud(dm$word, dm$freq, scale=c(3, .5),
    random.order=FALSE, colors=brewer.pal(8, "Dark2"))

    Mit dieser Funktion search_stringkönnen Sie eine Sprache als Parameter einstellen.


    search_tweets(search_string, include_rts=FALSE, n=100, lang="ru")

    Da das NLP-Paket für R jedoch schlecht russifiziert ist, insbesondere keine Dienst- oder Stoppwörter, kann ich mit der Suche in Russisch keine Wortwolke aufbauen. Ich würde mich freuen, wenn die Kommentare die beste Lösung finden.


    Nun, eigentlich ...


    ganzes Skript
    library("rtweet")
    library("tm")
    library("wordcloud")
    api_key <- ""
    api_secret <- ""
    access_token <- ""
    access_token_secret <- ""
    appname=""
    setup_twitter_oauth (
      api_key,
      api_secret,
      access_token,
      access_token_secret)
    oauth_callback <- "http://127.0.0.1:1410"
    setup_twitter_oauth (api_key, api_secret, access_token, access_token_secret)
    appname="my_app"
    twitter_token <- create_token(app = appname, consumer_key = api_key, consumer_secret = api_secret)
    tweets <- search_tweets("devops", include_rts=FALSE, n=600)
    corpus <- Corpus(VectorSource(tweets$text))
    clearCorpus <- tm_map(corpus, function(x)iconv(enc2utf8(x), sub = "byte"))
    tdm <- TermDocumentMatrix(clearCorpus, control =
        list(removePunctuation = TRUE,
            stopwords = c("com", "https", "drupal", stopwords("english")),
            removeNumbers = TRUE,
            tolower = TRUE))m <- as.matrix(tdm)word_freqs <- sort(rowSums(m), decreasing=TRUE)dm <- data.frame(word=names(word_freqs), freq=word_freqs)wordcloud(dm$word, dm$freq, scale=c(3, .5),
    random.order=FALSE, colors=brewer.pal(8, "Dark2"))

    Verwendete Materialien.


    Kurze Links:



    Ursprüngliche Links:


    https://stats.seandolinar.com/collecting-twitter-data-getting-started/
    https://opensourceforu.com/2018/07/benutzen-r-to-mine-and-analyse-popular-sentiments/
    http: //dkhramov.dp.ua/images/edu/Stu.WebMining/ch17_twitter.pdf
    http://opensourceforu.com/2018/02/explore-twitter-data-using-r/
    https: //cran.r-project .org / web / packages / tm / vignetten / tm.pdf


    PS Hinweis: Das Cloud-Schlüsselwort für KDPV wird im Programm nicht verwendet. Es bezieht sich auf meinen vorherigen Artikel .


    Jetzt auch beliebt: