1 Introduction

Les tweets sont des sources d’informations publiques qu’on peut récupérer et analyser. Grâce à ses nombreux packages, R permet d’analyser des tweets.

Les packages utilisés sont :

library("twitteR") # recupération des tweets
library("wordcloud") # création de nuages de mots
library("tm") # text mining

2 Récupération des tweets

2.1 Connexion avec twitter

Afin de se connecter avec l’API de twitter, il est nécessaire de créer un compte pour avoir les identifiants.

## [1] "Using direct authentication"
consumer_key <- 'donnees_de_votre_compte'
consumer_secret <- 'donnees_de_votre_compte'
access_token <- 'donnees_de_votre_compte'
access_secret <- 'donnees_de_votre_compte'
setup_twitter_oauth(consumer_key,
                    consumer_secret,
                    access_token,
                    access_secret)

2.2 Récupération des tweets

On peut récupérer les tweets du timeline de l’argus de l’assurance :

tweets <- userTimeline("argusassurance", n=1000) # récupérer le journal d'un utilisateur

2.3 Exploration du data frame

Dans un tweet (format json), on peut récupérer plusieurs informations. Pour cela, il est nécessaire de créer un data.frame pour organiser ces informations :

df <- do.call("rbind", lapply(tweets, as.data.frame))
head(df)
##                                                                                                                 text
## 1                   Allianz France crée un fonds d’investissement pour soutenir les start-up https://t.co/D0TT5B8qD2
## 2                                 Munich Re veut céder son activité d’assurance en Australie https://t.co/G2VJMAIH4L
## 3                                La Mutuelle Générale à la recherche d’un nouveau partenaire https://t.co/GvVPJiJyaD
## 4                    La Blockchain expérimentée dans la titrisation des risques catastrophes https://t.co/GlXarcQvuA
## 5                     Sécurité routière : la mortalité sur les routes continue de progresser https://t.co/F0idhMUp3L
## 6 Associations d’épargnants : la loi Sapin 2 veut rendre le pouvoir aux Assemblées générales https://t.co/nxKRaQpDL0
##   favorited favoriteCount replyToSN             created truncated
## 1     FALSE             0        NA 2016-06-16 08:28:01     FALSE
## 2     FALSE             1        NA 2016-06-16 07:30:04     FALSE
## 3     FALSE             0        NA 2016-06-15 20:36:12     FALSE
## 4     FALSE            10        NA 2016-06-15 16:22:55     FALSE
## 5     FALSE             1        NA 2016-06-15 11:07:46     FALSE
## 6     FALSE             0        NA 2016-06-15 09:37:07     FALSE
##   replyToSID                 id replyToUID
## 1         NA 743359462946201601         NA
## 2         NA 743344880227749889         NA
## 3         NA 743180326696980481         NA
## 4         NA 743116589038342144         NA
## 5         NA 743037277069135872         NA
## 6         NA 743014463222091777         NA
##                                                      statusSource
## 1 <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>
## 2 <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>
## 3 <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>
## 4 <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>
## 5 <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>
## 6 <a href="http://twitterfeed.com" rel="nofollow">twitterfeed</a>
##       screenName retweetCount isRetweet retweeted longitude latitude
## 1 argusassurance            3     FALSE     FALSE        NA       NA
## 2 argusassurance            0     FALSE     FALSE        NA       NA
## 3 argusassurance            4     FALSE     FALSE        NA       NA
## 4 argusassurance            8     FALSE     FALSE        NA       NA
## 5 argusassurance            4     FALSE     FALSE        NA       NA
## 6 argusassurance            3     FALSE     FALSE        NA       NA

A part le corpus des tweets, on voit qu’il y a des métadata qui peuvent être intéressantes:

  • la date de création
  • le nombre de favoris
  • le nombre de retweets

3 Text-mining des tweets

Grâce au package tm, on peut faire du text-mining facilement :

3.1 Création du corpus des tweets

tweets_text <- sapply(tweets, function(x) x$getText())
myCorpus <- Corpus(VectorSource(tweets_text))
# inspect(myCorpus)

3.2 Nettoyage du corpus

myCorpus =tm_map(myCorpus ,tolower)
myCorpus <- tm_map(myCorpus, removePunctuation)
myCorpus <- tm_map(myCorpus, removeNumbers)
myStopwords <- c(stopwords('french'), "available", "via","data")
myStopwords <- c(stopwords('french'), "assureurs","assurance","lassurance","assurances")
myCorpus <- tm_map(myCorpus, removeWords, myStopwords)
myCorpus <- tm_map(myCorpus, PlainTextDocument)

3.3 Association des mots

myDtm <- TermDocumentMatrix(myCorpus, control = list(minWordLength = 1))
findFreqTerms(myDtm, lowfreq=10)
##  [1] "axa"         "france"      "groupe"      "gtgt"        "inondations"
##  [6] "lance"       "mutuelle"    "nouveau"     "nouvelle"    "prévoyance" 
## [11] "résultats"   "santé"       "vie"
findAssocs(myDtm, 'santé', 0.30)
## $santé
## complémentaire          lance 
##           0.51           0.31

3.4 Visualiser des mots clés

wordcloud(myCorpus,min.freq=10)