🎃🧙‍♂️👻 La déco d'Halloween est en place ! Pis je pense pas l'enlever pour Noël, Grinch veut pas. 🎃🧙‍♂️👻

Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

R à Québec 2019, Best of (de ce que j'ai assisté) !

- 793 mots - Temps de lecture estimé: 4 minutes

🌘 Analise de text avek des fotes d’ortografe

lunch.png

Présentation: Traitement du langage naturel en R

Le package hunspell permet de corriger les fautes d’orthographes des textes que l’on veut analyser.

library(hunspell)

Il faut aussi télécharger un dictionnaire de corrections pour le français

dico_url <- "http://grammalecte.net/download/fr/hunspell-french-dictionaries-v6.4.1.zip"
dico_file <- "hunspell-french-dictionaries-v6.4.1.zip"
if(!file.exists("fr-toutesvariantes.aff") || 
   !file.exists("fr-toutesvariantes.dic")){
  download.file(dico_url, destfile=dico_file)
  unzip(dico_file, 
        files = c("fr-toutesvariantes.aff","fr-toutesvariantes.dic"), 
        overwrite = TRUE, junkpaths = TRUE)
  system(paste0("rm ",dico_file))
}

On crée ensuite un objet qui contient le dictionnaire, ainsi qu’une liste de mots que l’on voudrait ajouter propre à notre métier.

custom_words <- c("desjardins","dgag", "faq")
dict_fr <- dictionary("fr-toutesvariantes.dic", add_words = custom_words)

On constate que dict_fr est un pointeur vers un objet de type hunspell_dictionary.

On propose maintenant un texte à corriger:

mon_texte <- hunspell_parse("Analise de text avek des fotes d'ortografe")

On fait passer le prof de français sur le texte

score_texte <- sapply(mon_texte, hunspell_check, dict_fr)
mean(score_texte)

Pas terrible !

On regarde maintenant ce qui nous est suggéré

erreurs <- mon_texte[[1]][!score_texte]
hunspell_suggest(erreurs, dict = dict_fr)

Maintenant, c’est à nous de trouver le meilleur algorithme pour corriger notre texte !

🌘 R ou Python avec reticulate

meme-r-python.jpg

Reticulate est un package R qui permet d’exécuter Python depuis un environnement R et ainsi de partager des données entre les deux environnements.

On spécifie à reticulate quel environnement Python on veut utiliser.

library(reticulate)
reticulate::use_python("~/anaconda3/bin/python3")

On écris notre code python dans notre document R Markdown en changeant l’interpréteur dans les accolades. Ceci nécessite RStudio 1.2 et +

import requests
import os.path
if not os.path.isfile("flights.csv"):
  url = 'http://rcs.bu.edu/examples/python/data_analysis/flights.csv'
  r = requests.get(url, allow_redirects=True)
  open('flights.csv', 'wb').write(r.content)

On lis un fichier avec Pandas

import pandas as pd
flights = pd.read_csv("flights.csv")

On imprime les 5 prtemières lignes

print(flights.head(5))

On accède aux mêmes données nativement dans R avec l’objet py.

py$flights %>% glimpse()

🌘 data.frame dans un data.frame avec nest()

yo-dawg-i-heard-you-like-dataframe.jpg

Présentation: Introduction à la programmation fonctionnelle avec R, par Philippe Massicotte

La fonction nest() du package tidyr permet d’encapsuler une section d’un data.frame dans une colonne qui contient des data.frames. Ceci est utile, par exemple, pour effectuer des opérations au niveau d’un groupe sans affecter les différents éléments composant le groupe, ou encore pour appliquer des fonctions complexes sur certaines variables, toujours au sein d’un groupe.

library(tidyr)
library(purrr)

Reprenons les données chargées à l’exemple précédent:

flights_nest <- py$flights %>% 
  mutate(tailnum = tailnum %>% map_chr(`[`,1)) %>% 
  group_by(year,month) %>% 
  nest()

On groupe les données par année et par mois, on obtient donc un data.frame qui contient trois colonnes. La colonne data contient un data.frame pour chaque groupe.

glimpse(flights_nest)

On peut maintenant calculer, par exemple, un modèle linéaire pour chaque groupe, et extraire le $R^2$.

flights_nest_modele <- flights_nest %>% 
  mutate(mon_modele = data %>% 
           map(function(x) lm(distance ~ 
                                air_time + carrier + dep_delay + arr_delay, 
                              data = x)),
         r.sq = mon_modele %>% 
           map_dbl(function(x) x %>% summary %>% `$`(r.squared))) %>% 
  select(-mon_modele)

Regardons ce que ça donne !

glimpse(flights_nest_modele)

Maintenant, il est temps de retrouver la forme d’origine

flights_nest_modele %>% 
  unnest() %>% 
  head() %>% 
  glimpse()

🌘 La donnée sous toutes ses formes

MessyBooks.jpg

Atelier: Actualisation de bases de données de l’OMC avec R: aperçu pratique et enjeux par Carolle E. Kempa Nangue

Une petite liste de packages R pour extraire des données d’un peu n’importe quoi !

Un groupe qui développe beaucoup de packages sur l’accès aux données publiques et sémantiques:

🌘 Analyse de la réputation

reputation.png

Atelier: Dynamique de réputation d’entreprises avec le package sentometrics

Le package sentometrics permet de construire des modèles prédictifs à partir de données chronologiques d’analyse de sentiments. Présenté par Keven Bluteau.

Article: The R Package sentometrics to Compute, Aggregate and Predict with Textual Sentiment

Shooting Stars IconConsultation ExpressShooting Stars Icon

Bénéficie d'une heure de consultation dédiée avec François pour résoudre tes défis informatiques et stratégiques. Que ce soit pour la migration vers des technologies libres, la sécurisation de tes systèmes, la documentation de tes procédures, la conception de petits systèmes ou l'automatisation de tâches, cette session intensive t'offre des solutions concrètes et un plan d'action clair.

Tu seras libre ensuite de poursuivre avec un forfait de consultation sur mesure ou les programmes DéconstruIT ou Pleine Confiance

Découvre la Consultation Express.
Abonne-toi au fil RSS pour ne rien manquer.

Étiquettes