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

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

- 628 mots - Temps de lecture estimé: 3 minutes

Offre de formation

Crystal Ball IconUtiliser des chatbots LLM localement et protéger ses donnéesCrystal Ball Icon

Utilise l'IA sans envoyer les données de ta clientèle sur des serveurs américains. Fais tourner des modèles directement sur ton ordinateur, en toute confidentialité. Conforme à la loi 25.

Réconcilie IA et vie privée — Inscris-toi

🌘 Analise de text avek des fotes d’ortografe


Sun Face IconQuels outils R de traitement du langage naturel a-t-on découverts à R à Québec 2019 ?Sun Face Icon


La conférence R à Québec 2019 a présenté des techniques avancées de traitement de texte : le package hunspell corrige les fautes d’orthographe avec des dictionnaires personnalisés pour le français, les n-grammes de caractères représentent les chaînes textuelles de façon floue, et tidytext analyse les réseaux lexicaux. Le package furrr permet en plus de paralléliser ces analyses pour traiter efficacement de grands corpus.

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

Offre de service

Shooting Stars IconConfiguration Express — 1 heure — 245 $Shooting Stars Icon

Un problème de configuration qui te semble insurmontable ? Environ une heure, en moyenne, je configure tes courriels, DNS, accès et conformité loi 25. Les suivis sont inclus pour valider ou corriger des configurations additionnelles au besoin. Tu repars avec une solution fonctionnelle, pas un devis.

Règle ton problème maintenant — 245 $
Abonne-toi au fil RSS pour ne rien manquer.

Étiquettes