Comparer des chaînes

Nettoyer des données avec R

Maggie Matsui

Content Developer @ DataCamp

Mesurer la distance entre des valeurs

Une droite graduée de 0 à 15 avec un point sur 3 et un point sur 10.

Nettoyer des données avec R

Mesurer la distance entre des valeurs

La même droite graduée avec une accolade rouge indiquant la longueur entre les points 3 et 10.

Nettoyer des données avec R

Mesurer la distance entre des valeurs

Sous la ligne rouge de distance, 10 moins 3 égale 7.

                                            Quelle est la distance entre typhoon et baboon ?

Nettoyer des données avec R

Distance d'édition minimale

Combien de fautes sont nécessaires pour passer d'une chaîne à une autre ?

Signe plus vert pour insertion.

Nettoyer des données avec R

Distance d'édition minimale

Combien de fautes sont nécessaires pour passer d'une chaîne à une autre ?

Signe moins rouge pour suppression

Nettoyer des données avec R

Distance d'édition minimale

Combien de fautes sont nécessaires pour passer d'une chaîne à une autre ?

Symbole violet en cycle pour substitution.

Nettoyer des données avec R

Distance d'édition minimale

Combien de fautes sont nécessaires pour passer d'une chaîne à une autre ?

Double flèche bleue pour transposition.

Nettoyer des données avec R

Distance d'édition = 1

Différence entre dog et dogs avec un signe plus vert.

Nettoyer des données avec R

Distance d'édition = 1

Différence entre bath et bat avec un signe moins rouge.

Nettoyer des données avec R

Distance d'édition = 1

Différence entre cats et rats avec un symbole violet en cycle.

Nettoyer des données avec R

Distance d'édition = 1

Différence entre sign et sign avec une double flèche bleue.

Nettoyer des données avec R

Un exemple plus complexe

baboon $\rightarrow$ typhoon

le mot baboon

Nettoyer des données avec R

Un exemple plus complexe

baboon $\rightarrow$ typhoon
  • Insérer h

Sous baboon, le mot babhoon avec un signe plus vert au-dessus du h.

Nettoyer des données avec R

Un exemple plus complexe

baboon $\rightarrow$ typhoon
  • Insérer h
  • Substituer b $\rightarrow$ t

En dessous, le mot tabhoon, avec un symbole violet au-dessus du t

Nettoyer des données avec R

Un exemple plus complexe

baboon $\rightarrow$ typhoon
  • Insérer h
  • Substituer b $\rightarrow$ t
  • Substituer a $\rightarrow$ y

En dessous, le mot tybhoon avec un symbole violet au-dessus du y.

Nettoyer des données avec R

Un exemple plus complexe

baboon $\rightarrow$ typhoon
  • Insérer h
  • Substituer b $\rightarrow$ t
  • Substituer a $\rightarrow$ y
  • Substituer b $\rightarrow$ p

Total : 4

En dessous, le mot typhoon avec un symbole violet au-dessus du p.

Nettoyer des données avec R

Types de distance d'édition

  • Damerau-Levenshtein
    • Ce que vous venez d'apprendre
  • Levenshtein
    • Prend en compte seulement substitution, insertion et suppression
  • LCS (Longest Common Subsequence)
    • Prend en compte seulement insertion et suppression
  • Autres
    • Jaro-Winkler
    • Jaccard

Quel est le meilleur ?

Nettoyer des données avec R

Distance entre chaînes en R

library(stringdist)
stringdist("baboon", 
           "typhoon",
           method = "dl")
4

Image des diapositives précédentes montrant comment passer de baboon à typhoon.

Nettoyer des données avec R

Autres méthodes

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Nettoyer des données avec R

Comparer des chaînes pour nettoyer les données

  • Au chapitre 2 :
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • Et s'il y a trop de variantes ?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe" ?
    • Utilisez la distance entre chaînes !
Nettoyer des données avec R

Comparer des chaînes pour nettoyer les données

survey
          city move_score
1       chicgo          4
2   los angles          4
3      chicogo          5
4      new yrk          5
5    new yoork          2
6     seatttle          3
7   losangeles          4
8      seeatle          2
...
cities
         city
1    new york
2     chicago
3 los angeles
4     seattle
Nettoyer des données avec R

Recartographier avec la distance entre chaînes

library(fuzzyjoin)
stringdist_left_join(survey, cities, by = "city", method = "dl")
        city.x move_score      city.y
1       chicgo          4     chicago
2   los angles          4 los angeles
3      chicogo          5     chicago
4      new yrk          5    new york
5    new yoork          2    new york
6     seatttle          3     seattle
7   losangeles          4 los angeles
8      seeatle          2     seattle
9      siattle          1     seattle
...
Nettoyer des données avec R

Recartographier avec la distance entre chaînes

stringdist_left_join(survey, cities, by = "city", method = "dl", max_dist = 1)
        city.x move_score      city.y
1       chicgo          4     chicago
2   los angles          4 los angeles
3      chicogo          5     chicago
4      new yrk          5    new york
5    new yoork          2    new york
6     seatttle          3     seattle
7   losangeles          4 los angeles
8      seeatle          2        <NA>
9      siattle          1     seattle
...
Nettoyer des données avec R

Passons à la pratique !

Nettoyer des données avec R

Preparing Video For Download...