SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
R und Social
Media am Beispiel von Twitter®

         Dozent: Dr. Guido Möser,
     GF masem research institute GmbH

  Workshop der Giessen R User Group


                 Stand: 09. Mai 2011


       Geschäftsführer: Dr. Guido Möser

             Wissenschaftlicher Beirat:
    Prof. Dr. Peter Schmidt, Dr. Gero Schwenk
Inhalte R und Social Media am Beispiel von Twitter

•   Literatur

•   Social Media: Datengewinnung und Aufbereitung

•   Anwendungen in R

•   Twitter Search API Method

•   Umsetzungsmöglichkeiten in R
     – Pakete twitteR und XML

•   Auswertungen in R - Textmining

•   Diskussion
Literatur
Literatur

• Bollen, J., Mao, H., & Zeng, X.-J. (2010). Twitter mood predicts the
  stock market.
• Feinerer, I. (2011). Package ‘tm‘.
• Lang, D. T. (2011). Package ‘XML‘.
• Feinerer, I. (2011). Introduction to the tm Package. Text Mining in R.
• Gentry, J. (2011). Twitter client for R.
• o.V. (2011). Twitter API Wiki: API Methods: Twitter Search API.
  Method:search

• Blog: R-bloggers. Internet: http://www.r-bloggers.com
Social Media:
Datengewinnung und Aufbereitung
Datengewinnung und Aufbereitung



 Web2.0                                                                   Analysen
                                                 Web2.0
 Daten-
                CRAWLER         ETL
                                                Warehouse
 quellen                                                                  Reporting




RELEVANTE          DATA                                   INTERFACE
 QUELLEN         GATHERING                                    MIT
                                                         DATENMATRIX
                                                          ROHDATEN
                  SUCH-
                                                        MUSTERTEXTEN
                 BEGRIFFE




    Datengewinnung                    Data Processing                        ...

    Tool: Radian 6®,            Optimal: IBM DB2® etc.                 R mit tm Paket,
         R® etc.             Mindestanforderung: MS Excel®                    ...
Anwendungen in R
Anwendungen in R

• Text Data Mining with Twitter and R
   – http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/


• The structure of twitter participant relationships in conversations
  around #Libya, #Bieber, and #Rstats
   – http://www.babelgraph.org/wp/?p=120


• A quick look at #march11 / #saudi tweets
   – http://www.michaelbommarito.com/blog/2011/03/12/a-quick-look-at-march11-
     saudi-tweets/


• Dataset: Wisconsin Union Protester Tweets #wiunion
   – http://www.michaelbommarito.com/blog/2011/02/21/dataset-wisconsin-union-
     protester-tweets-wiunion/
Twitter® Search API Method
Twitter® Search API

• Twitter® Search API
   – The API is entirely HTTP-based
   – The API ... supports the following data formats: XML, JSON, ...


• Dokumentation Twitter® API:
   – Twitter® exposes ist data via an Application Programming Interface (API).
   – http://apiwiki.twitter.com/w/page/22554679/Twitter-API-Documentation


• Twitter Search API Method: search
   – Returns tweets that match a specified query.
   – Dokumentation: http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-
     API-Method:-search

 Ref: http://apiwiki.twitter.com/w/page/22554679/Twitter-API-Documentation
 http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search,
 10.05.2011
Twitter® Search API - Limitations

• Search API Limit
   – Clients may request up to 1,500 statuses…
   – This artificial limit is in place to ensure the performance of the search system.
     We also restrict the size of the search index by placing a date limit on the
     updates we allow you to search. This limit varies depending on the number of
     Tweets being created and the relevance of the results.


• REST API Rate Limiting
   – Anonymous calls are based on the IP of the host and are permitted 150
     requests per hour. This classification includes unauthenticated requests (such
     as RSS feeds), and authenticated requests to resources that do not require
     authentication.
   – OAuth calls are permitted 350 requests per hour.

 Ref: http://dev.twitter.com/pages/every_developer, 10.05.2011
 http://dev.twitter.com/pages/rate-limiting; 10.05.2011
Beispiele - Twitter® Search API Method: search

• Containing a word:
    – http://search.twitter.com/search.atom?q=twitter


• From a user:
    – http://search.twitter.com/search.atom?q=from%3Aal3x


• Replying to a user (tweet starts with @mzsanford):
    – http://search.twitter.com/search.atom?q=to%3Amzsanford


• Mentioning a user (tweet contains @rstats):
    – http://search.twitter.com/search.atom?q=%40biz


  Ref: http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search,
  10.05.2011
Beispiele - Twitter® Search API Method: search

• Containing a hashtag (up to 16 characters)
    – http://search.twitter.com/search.atom?q=%23haiku


• Combine any of the operators together.
    – http://search.twitter.com/search.atom?q=happy+hour&until=2009-03-24


• Originating from an application:
    – http://search.twitter.com/search.atom?q=landing+source:tweetie




  Ref: http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search,
  10.05.2011
Umsetzungsmöglichkeiten in R
    Pakete XML / twitteR
Paket XML

• Twitter® API unterstützt XML (siehe Dokumentation)

• Mittels XML-Paket können geeignete Suchanfragen programmiert und
  mittels http-request übergeben werden

• Die eigene Erzeugung nach den gezeigten Regeln des Tweitter® API
  stellt die flexibelste Lösung dar, auf Probleme zugeschnittene Abfragen
  zu erzeugen

• Dazu muss in R das XML Paket installiert werden
    > install.packages('XML‘, dependencies = TRUE)
    > library(XML)
Einfache Abfrage mittels XML-Paket (1)

• Zum Abspeichern der Tweets einen Vektor erzeugen
   > req.tweets <- character(0)


• Abfrage erzeugen:

• Suchbegriff(e)
   > twitter_q <- URLencode('rstats')


• URL für Abfrage erzeugen
   > twitter_url =
   paste('http://search.twitter.com/search.atom?q=',twitter_q,'&rpp=100&1=', 1,
   sep='')


 Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
Einfache Abfrage mittels XML-Paket

• Übergabe
    > mydata.xml <- xmlParseDoc(twitter_url, asText=F)


• Titel extrahieren
    > req.tweets <- xpathSApply(mydata.xml, '//s:entry/s:title', xmlValue,
    namespaces =c('s'='http://www.w3.org/2005/Atom'))


• Anzahl der geernteten Tweets
    > length(req.tweets)




  Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
Erweiterungen - XML-Paket

• Der Block von Heuristic Andy legt um die Abfrage eine Schleife
  herum, so dass eine größere Zahl an Tweets abgefragt werden
  können, ohne Limits zu überschreiten
   mydata.vectors <- character(0)
   # paginate to get more tweets
   for (page in c(1:15))
   {
      # search parameter
      twitter_q <- URLencode('rstats')
      # construct a URL
      twitter_url = paste('http://search.twitter.com/search.atom?q=',twitter_q,'&rpp=100&page=', page, sep='')
      # fetch remote URL and parse
      mydata.xml <- xmlParseDoc(twitter_url, asText=F)
      # extract the titles
      mydata.vector <- xpathSApply(mydata.xml, '//s:entry/s:title', xmlValue, namespaces =c('s'='http://www.w3.org/2005/Atom'))
      # aggregate new tweets with previous tweets
      mydata.vectors <- c(mydata.vector, mydata.vectors)
   }


 Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
Beispiel - XML-Paket

• Suchbegriff rstats am 10. Mai 2011 um 15:51 Uhr

• Abruf der ersten 4 geernteten Tweets
    > req.tweets[1:4]

     [1] "@revodavid I have just recieved a box of goodies! Thank you in behalf of Serbian RUG!
    @RevolutionR #rstats"
     [2] "RT @Rbloggers: First-Cut Approach to Synchronizing Field Notes with GPS Data: After
    a week's worth… http://goo.gl/fb/zjjgt #rstats"
     [3] "RT @Rbloggers: making meat shares more efficient with R and Symphony: In my
    previous post, I… http://goo.gl/fb/M3d8z #rstats"
     [4] "RT @Rbloggers: Comments on an R Connections API: I wrote this post months ago but
    never hit 'Publish… http://goo.gl/fb/eHDTJ #rstats"




  Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
Paket twitteR

• Hinweis: Das Paket twitteR läuft nur eingeschränkt auf unter Windows 7
  Systemen, die folgenden Analysen wurden mittels Ubuntu 8.04 erzeugt
    – http://cran.r-project.org/web/packages/twitteR/


• Für das Paket steht eine umfangreiche Dokumentation zur Verfügung
    – http://cran.r-project.org/web/packages/twitteR/twitteR.pdf
    – http://cran.r-project.org/web/packages/twitteR/vignettes/twitteR.pdf



• Viele nützliche Abfragen sind bereits implementiert

• Auf eine Demonstration wird hier verzichtet!
Auswertungen in R mit Paket tm:
         Text Mining
Das Paket tm

• Das Paket tm (Autor: Ingo Feinerer) stellt Möglichkeiten zur Durchführung
  von Text Mining bereit
   – http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf


• Es steht eine ausführliche Dokumentation zur Verfügung
   – http://cran.r-project.org/web/packages/tm/index.html
   – http://cran.r-project.org/web/packages/tm/tm.pdf


• Das Paket muss zuerst installiert und geladen werden
   > install.packages("tm", dependencies = TRUE)
   > library(tm)

   Der Datensatz aus Beispiel 1 (req.tweets) muss in R zur Verfügung stehen
Corpus erzeugen und Transformationen

• Corpus aus Twitter-Abfragen erzeugen (siehe Beispiele 1 und 2)
   > mydata.corpus <- Corpus(VectorSource(req.tweets))
   > mydata.corpus


• Transformation 1 - Kleinbuchstaben
   > mydata.corpus <- tm_map(mydata.corpus, tolower)


• Satzzeichen entfernen
   > mydata.corpus <- tm_map(mydata.corpus, removePunctuation)


• Entfernen der stopwords - generische und manuell vorgegebene
   > my_stopwords <- c(stopwords('english'), 'rstats', '#rstats')
   > mydata.corpus <- tm_map(mydata.corpus, removeWords, my_stopwords)
tdm erzeugen und inspizieren

• Term-Document Matrix bauen
   > mydata.dtm <- TermDocumentMatrix(mydata.corpus)


• Inspizierung der Matrix
   > mydata.dtm


• Matrizen erzeugen
   > mydata.df <- as.data.frame(inspect(mydata.dtm))
Analysen

• Inspizierung der häufigsten Wörter
   > findFreqTerms(mydata.dtm, lowfreq=3)


• Assoziationsanalyse
   > findAssocs(mydata.dtm, 'quantmod', 0.20)
Reduzierte Matrizen

• Selten vorkommende Begriffe entfernen, um die Darstellung der Matrix zu
  verbessern
   – Hinweis: Den sparse Parameter ein wenig modifizieren, um eine gute Anzahl
     an Wörtern zu finden
   – 10 - 30 Wörter stellt eine gute Zahl dar, um noch den Überblick zu behalten


   > mydata.dtm2 <- removeSparseTerms(mydata.dtm, sparse=0.95)


• Matrizen erzeugen
   > mydata2.df <- as.data.frame(inspect(mydata.dtm2))
Diskussion
Vielen Dank für Ihre Aufmerksamkeit!

Mais conteúdo relacionado

Destaque

BasicWord03
BasicWord03BasicWord03
BasicWord03adisg
 
Women 2.0 2.14 fran maier
Women 2.0 2.14 fran maierWomen 2.0 2.14 fran maier
Women 2.0 2.14 fran maierFran Maier
 
Welcome To My World
Welcome To My WorldWelcome To My World
Welcome To My WorldCherie25
 
Basic word01
Basic word01Basic word01
Basic word01adisg
 
P1 nursery rhymes
P1 nursery rhymesP1 nursery rhymes
P1 nursery rhymesadisg
 
Jack and the Beanstalk
Jack and the BeanstalkJack and the Beanstalk
Jack and the Beanstalkadisg
 
AdvancedWord02
AdvancedWord02AdvancedWord02
AdvancedWord02adisg
 
Effective Pair Programming
Effective Pair ProgrammingEffective Pair Programming
Effective Pair ProgrammingJames Thompson
 
Blue Ocean Strategy - Creating Value Innovations
Blue Ocean Strategy - Creating Value InnovationsBlue Ocean Strategy - Creating Value Innovations
Blue Ocean Strategy - Creating Value Innovationsmelanie_ernst
 

Destaque (10)

All About Me
All About MeAll About Me
All About Me
 
BasicWord03
BasicWord03BasicWord03
BasicWord03
 
Women 2.0 2.14 fran maier
Women 2.0 2.14 fran maierWomen 2.0 2.14 fran maier
Women 2.0 2.14 fran maier
 
Welcome To My World
Welcome To My WorldWelcome To My World
Welcome To My World
 
Basic word01
Basic word01Basic word01
Basic word01
 
P1 nursery rhymes
P1 nursery rhymesP1 nursery rhymes
P1 nursery rhymes
 
Jack and the Beanstalk
Jack and the BeanstalkJack and the Beanstalk
Jack and the Beanstalk
 
AdvancedWord02
AdvancedWord02AdvancedWord02
AdvancedWord02
 
Effective Pair Programming
Effective Pair ProgrammingEffective Pair Programming
Effective Pair Programming
 
Blue Ocean Strategy - Creating Value Innovations
Blue Ocean Strategy - Creating Value InnovationsBlue Ocean Strategy - Creating Value Innovations
Blue Ocean Strategy - Creating Value Innovations
 

Semelhante a Giessen r user group treffen 10 05-2011 - foliensatz

16. DINI-Jahrestagung: Linked Data und Repositorien
16. DINI-Jahrestagung: Linked Data und Repositorien16. DINI-Jahrestagung: Linked Data und Repositorien
16. DINI-Jahrestagung: Linked Data und RepositorienPascal-Nicolas Becker
 
Das Solr System - Suche nicht nur auf Planet TYPO3
Das Solr System - Suche nicht nur auf Planet TYPO3Das Solr System - Suche nicht nur auf Planet TYPO3
Das Solr System - Suche nicht nur auf Planet TYPO3Olivier Dobberkau
 
Sitzung 11
Sitzung 11Sitzung 11
Sitzung 11scuy
 
Publishing in the digital age 1 december 2011 - semantic meetup zürich
Publishing in the digital age   1 december 2011 - semantic meetup zürichPublishing in the digital age   1 december 2011 - semantic meetup zürich
Publishing in the digital age 1 december 2011 - semantic meetup zürichAI4BD GmbH
 
Wie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis HadoopWie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis HadoopGerd König
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Michael Kirst-Neshva
 
04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltung04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltungklickandbau
 
Linked Open Data Pilotprojekt Österreich - LOD Pilot AT
Linked Open Data Pilotprojekt Österreich - LOD Pilot ATLinked Open Data Pilotprojekt Österreich - LOD Pilot AT
Linked Open Data Pilotprojekt Österreich - LOD Pilot ATMartin Kaltenböck
 
TechTalk - Share point for internet sites part 2
TechTalk - Share point for internet sites part 2TechTalk - Share point for internet sites part 2
TechTalk - Share point for internet sites part 2Samuel Zürcher
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?KurtStockinger
 
Sitzung 10
Sitzung 10Sitzung 10
Sitzung 10scuy
 
Semantic Web in Bibliotheken mal praktisch
Semantic Web in Bibliotheken mal praktischSemantic Web in Bibliotheken mal praktisch
Semantic Web in Bibliotheken mal praktischkostaedt
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
SharePoint Community Mittelland - GARAIO : Enterprise Search
SharePoint Community Mittelland - GARAIO : Enterprise SearchSharePoint Community Mittelland - GARAIO : Enterprise Search
SharePoint Community Mittelland - GARAIO : Enterprise SearchPatrick Maeschli
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenGunther Pippèrr
 
RESTful APIs mit Dart
RESTful APIs mit DartRESTful APIs mit Dart
RESTful APIs mit DartNane Kratzke
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere RESTMartin Abraham
 
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01Ingo Renner
 

Semelhante a Giessen r user group treffen 10 05-2011 - foliensatz (20)

16. DINI-Jahrestagung: Linked Data und Repositorien
16. DINI-Jahrestagung: Linked Data und Repositorien16. DINI-Jahrestagung: Linked Data und Repositorien
16. DINI-Jahrestagung: Linked Data und Repositorien
 
Interaktives Web
Interaktives WebInteraktives Web
Interaktives Web
 
Das Solr System - Suche nicht nur auf Planet TYPO3
Das Solr System - Suche nicht nur auf Planet TYPO3Das Solr System - Suche nicht nur auf Planet TYPO3
Das Solr System - Suche nicht nur auf Planet TYPO3
 
Sitzung 11
Sitzung 11Sitzung 11
Sitzung 11
 
Publishing in the digital age 1 december 2011 - semantic meetup zürich
Publishing in the digital age   1 december 2011 - semantic meetup zürichPublishing in the digital age   1 december 2011 - semantic meetup zürich
Publishing in the digital age 1 december 2011 - semantic meetup zürich
 
Wie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis HadoopWie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis Hadoop
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
 
04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltung04 Datenintegration und Verwaltung
04 Datenintegration und Verwaltung
 
Linked Open Data Pilotprojekt Österreich - LOD Pilot AT
Linked Open Data Pilotprojekt Österreich - LOD Pilot ATLinked Open Data Pilotprojekt Österreich - LOD Pilot AT
Linked Open Data Pilotprojekt Österreich - LOD Pilot AT
 
TechTalk - Share point for internet sites part 2
TechTalk - Share point for internet sites part 2TechTalk - Share point for internet sites part 2
TechTalk - Share point for internet sites part 2
 
CKAN by Friedrich Lindenberg
CKAN by Friedrich LindenbergCKAN by Friedrich Lindenberg
CKAN by Friedrich Lindenberg
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
Sitzung 10
Sitzung 10Sitzung 10
Sitzung 10
 
Semantic Web in Bibliotheken mal praktisch
Semantic Web in Bibliotheken mal praktischSemantic Web in Bibliotheken mal praktisch
Semantic Web in Bibliotheken mal praktisch
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
SharePoint Community Mittelland - GARAIO : Enterprise Search
SharePoint Community Mittelland - GARAIO : Enterprise SearchSharePoint Community Mittelland - GARAIO : Enterprise Search
SharePoint Community Mittelland - GARAIO : Enterprise Search
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
 
RESTful APIs mit Dart
RESTful APIs mit DartRESTful APIs mit Dart
RESTful APIs mit Dart
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
 

Giessen r user group treffen 10 05-2011 - foliensatz

  • 1. R und Social Media am Beispiel von Twitter® Dozent: Dr. Guido Möser, GF masem research institute GmbH Workshop der Giessen R User Group Stand: 09. Mai 2011 Geschäftsführer: Dr. Guido Möser Wissenschaftlicher Beirat: Prof. Dr. Peter Schmidt, Dr. Gero Schwenk
  • 2. Inhalte R und Social Media am Beispiel von Twitter • Literatur • Social Media: Datengewinnung und Aufbereitung • Anwendungen in R • Twitter Search API Method • Umsetzungsmöglichkeiten in R – Pakete twitteR und XML • Auswertungen in R - Textmining • Diskussion
  • 3.
  • 5. Literatur • Bollen, J., Mao, H., & Zeng, X.-J. (2010). Twitter mood predicts the stock market. • Feinerer, I. (2011). Package ‘tm‘. • Lang, D. T. (2011). Package ‘XML‘. • Feinerer, I. (2011). Introduction to the tm Package. Text Mining in R. • Gentry, J. (2011). Twitter client for R. • o.V. (2011). Twitter API Wiki: API Methods: Twitter Search API. Method:search • Blog: R-bloggers. Internet: http://www.r-bloggers.com
  • 7. Datengewinnung und Aufbereitung Web2.0 Analysen Web2.0 Daten- CRAWLER ETL Warehouse quellen Reporting RELEVANTE DATA INTERFACE QUELLEN GATHERING MIT DATENMATRIX ROHDATEN SUCH- MUSTERTEXTEN BEGRIFFE Datengewinnung Data Processing ... Tool: Radian 6®, Optimal: IBM DB2® etc. R mit tm Paket, R® etc. Mindestanforderung: MS Excel® ...
  • 9. Anwendungen in R • Text Data Mining with Twitter and R – http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/ • The structure of twitter participant relationships in conversations around #Libya, #Bieber, and #Rstats – http://www.babelgraph.org/wp/?p=120 • A quick look at #march11 / #saudi tweets – http://www.michaelbommarito.com/blog/2011/03/12/a-quick-look-at-march11- saudi-tweets/ • Dataset: Wisconsin Union Protester Tweets #wiunion – http://www.michaelbommarito.com/blog/2011/02/21/dataset-wisconsin-union- protester-tweets-wiunion/
  • 11. Twitter® Search API • Twitter® Search API – The API is entirely HTTP-based – The API ... supports the following data formats: XML, JSON, ... • Dokumentation Twitter® API: – Twitter® exposes ist data via an Application Programming Interface (API). – http://apiwiki.twitter.com/w/page/22554679/Twitter-API-Documentation • Twitter Search API Method: search – Returns tweets that match a specified query. – Dokumentation: http://apiwiki.twitter.com/w/page/22554756/Twitter-Search- API-Method:-search Ref: http://apiwiki.twitter.com/w/page/22554679/Twitter-API-Documentation http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search, 10.05.2011
  • 12. Twitter® Search API - Limitations • Search API Limit – Clients may request up to 1,500 statuses… – This artificial limit is in place to ensure the performance of the search system. We also restrict the size of the search index by placing a date limit on the updates we allow you to search. This limit varies depending on the number of Tweets being created and the relevance of the results. • REST API Rate Limiting – Anonymous calls are based on the IP of the host and are permitted 150 requests per hour. This classification includes unauthenticated requests (such as RSS feeds), and authenticated requests to resources that do not require authentication. – OAuth calls are permitted 350 requests per hour. Ref: http://dev.twitter.com/pages/every_developer, 10.05.2011 http://dev.twitter.com/pages/rate-limiting; 10.05.2011
  • 13. Beispiele - Twitter® Search API Method: search • Containing a word: – http://search.twitter.com/search.atom?q=twitter • From a user: – http://search.twitter.com/search.atom?q=from%3Aal3x • Replying to a user (tweet starts with @mzsanford): – http://search.twitter.com/search.atom?q=to%3Amzsanford • Mentioning a user (tweet contains @rstats): – http://search.twitter.com/search.atom?q=%40biz Ref: http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search, 10.05.2011
  • 14. Beispiele - Twitter® Search API Method: search • Containing a hashtag (up to 16 characters) – http://search.twitter.com/search.atom?q=%23haiku • Combine any of the operators together. – http://search.twitter.com/search.atom?q=happy+hour&until=2009-03-24 • Originating from an application: – http://search.twitter.com/search.atom?q=landing+source:tweetie Ref: http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search, 10.05.2011
  • 15. Umsetzungsmöglichkeiten in R Pakete XML / twitteR
  • 16. Paket XML • Twitter® API unterstützt XML (siehe Dokumentation) • Mittels XML-Paket können geeignete Suchanfragen programmiert und mittels http-request übergeben werden • Die eigene Erzeugung nach den gezeigten Regeln des Tweitter® API stellt die flexibelste Lösung dar, auf Probleme zugeschnittene Abfragen zu erzeugen • Dazu muss in R das XML Paket installiert werden > install.packages('XML‘, dependencies = TRUE) > library(XML)
  • 17. Einfache Abfrage mittels XML-Paket (1) • Zum Abspeichern der Tweets einen Vektor erzeugen > req.tweets <- character(0) • Abfrage erzeugen: • Suchbegriff(e) > twitter_q <- URLencode('rstats') • URL für Abfrage erzeugen > twitter_url = paste('http://search.twitter.com/search.atom?q=',twitter_q,'&rpp=100&1=', 1, sep='') Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
  • 18. Einfache Abfrage mittels XML-Paket • Übergabe > mydata.xml <- xmlParseDoc(twitter_url, asText=F) • Titel extrahieren > req.tweets <- xpathSApply(mydata.xml, '//s:entry/s:title', xmlValue, namespaces =c('s'='http://www.w3.org/2005/Atom')) • Anzahl der geernteten Tweets > length(req.tweets) Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
  • 19. Erweiterungen - XML-Paket • Der Block von Heuristic Andy legt um die Abfrage eine Schleife herum, so dass eine größere Zahl an Tweets abgefragt werden können, ohne Limits zu überschreiten mydata.vectors <- character(0) # paginate to get more tweets for (page in c(1:15)) { # search parameter twitter_q <- URLencode('rstats') # construct a URL twitter_url = paste('http://search.twitter.com/search.atom?q=',twitter_q,'&rpp=100&page=', page, sep='') # fetch remote URL and parse mydata.xml <- xmlParseDoc(twitter_url, asText=F) # extract the titles mydata.vector <- xpathSApply(mydata.xml, '//s:entry/s:title', xmlValue, namespaces =c('s'='http://www.w3.org/2005/Atom')) # aggregate new tweets with previous tweets mydata.vectors <- c(mydata.vector, mydata.vectors) } Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
  • 20. Beispiel - XML-Paket • Suchbegriff rstats am 10. Mai 2011 um 15:51 Uhr • Abruf der ersten 4 geernteten Tweets > req.tweets[1:4] [1] "@revodavid I have just recieved a box of goodies! Thank you in behalf of Serbian RUG! @RevolutionR #rstats" [2] "RT @Rbloggers: First-Cut Approach to Synchronizing Field Notes with GPS Data: After a week's worth… http://goo.gl/fb/zjjgt #rstats" [3] "RT @Rbloggers: making meat shares more efficient with R and Symphony: In my previous post, I… http://goo.gl/fb/M3d8z #rstats" [4] "RT @Rbloggers: Comments on an R Connections API: I wrote this post months ago but never hit 'Publish… http://goo.gl/fb/eHDTJ #rstats" Ref: http://heuristically.wordpress.com/2011/04/08/text-data-mining-twitter-r/, 10.05.2011
  • 21. Paket twitteR • Hinweis: Das Paket twitteR läuft nur eingeschränkt auf unter Windows 7 Systemen, die folgenden Analysen wurden mittels Ubuntu 8.04 erzeugt – http://cran.r-project.org/web/packages/twitteR/ • Für das Paket steht eine umfangreiche Dokumentation zur Verfügung – http://cran.r-project.org/web/packages/twitteR/twitteR.pdf – http://cran.r-project.org/web/packages/twitteR/vignettes/twitteR.pdf • Viele nützliche Abfragen sind bereits implementiert • Auf eine Demonstration wird hier verzichtet!
  • 22. Auswertungen in R mit Paket tm: Text Mining
  • 23. Das Paket tm • Das Paket tm (Autor: Ingo Feinerer) stellt Möglichkeiten zur Durchführung von Text Mining bereit – http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf • Es steht eine ausführliche Dokumentation zur Verfügung – http://cran.r-project.org/web/packages/tm/index.html – http://cran.r-project.org/web/packages/tm/tm.pdf • Das Paket muss zuerst installiert und geladen werden > install.packages("tm", dependencies = TRUE) > library(tm) Der Datensatz aus Beispiel 1 (req.tweets) muss in R zur Verfügung stehen
  • 24. Corpus erzeugen und Transformationen • Corpus aus Twitter-Abfragen erzeugen (siehe Beispiele 1 und 2) > mydata.corpus <- Corpus(VectorSource(req.tweets)) > mydata.corpus • Transformation 1 - Kleinbuchstaben > mydata.corpus <- tm_map(mydata.corpus, tolower) • Satzzeichen entfernen > mydata.corpus <- tm_map(mydata.corpus, removePunctuation) • Entfernen der stopwords - generische und manuell vorgegebene > my_stopwords <- c(stopwords('english'), 'rstats', '#rstats') > mydata.corpus <- tm_map(mydata.corpus, removeWords, my_stopwords)
  • 25. tdm erzeugen und inspizieren • Term-Document Matrix bauen > mydata.dtm <- TermDocumentMatrix(mydata.corpus) • Inspizierung der Matrix > mydata.dtm • Matrizen erzeugen > mydata.df <- as.data.frame(inspect(mydata.dtm))
  • 26. Analysen • Inspizierung der häufigsten Wörter > findFreqTerms(mydata.dtm, lowfreq=3) • Assoziationsanalyse > findAssocs(mydata.dtm, 'quantmod', 0.20)
  • 27. Reduzierte Matrizen • Selten vorkommende Begriffe entfernen, um die Darstellung der Matrix zu verbessern – Hinweis: Den sparse Parameter ein wenig modifizieren, um eine gute Anzahl an Wörtern zu finden – 10 - 30 Wörter stellt eine gute Zahl dar, um noch den Überblick zu behalten > mydata.dtm2 <- removeSparseTerms(mydata.dtm, sparse=0.95) • Matrizen erzeugen > mydata2.df <- as.data.frame(inspect(mydata.dtm2))
  • 29. Vielen Dank für Ihre Aufmerksamkeit!