Comparer des chaînes

Nettoyer des données avec R

Maggie Matsui

Content Developer @ DataCamp

Mesurer la distance entre des valeurs

Une droite numérique de 0 à 15 avec des points sur 3 et 10.

Nettoyer des données avec R

Mesurer la distance entre des valeurs

La même droite avec une accolade rouge indiquant la longueur entre 3 et 10.

Nettoyer des données avec R

Mesurer la distance entre des valeurs

Sous la ligne rouge montrant la 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 coquilles faut-il pour passer d'une chaîne à une autre ?

Signe plus vert pour une insertion.

Nettoyer des données avec R

Distance d'édition minimale

Combien de coquilles faut-il pour passer d'une chaîne à une autre ?

Signe moins rouge pour une suppression

Nettoyer des données avec R

Distance d'édition minimale

Combien de coquilles faut-il pour passer d'une chaîne à une autre ?

Symbole violet de cycle pour une substitution.

Nettoyer des données avec R

Distance d'édition minimale

Combien de coquilles faut-il pour passer d'une chaîne à une autre ?

Double flèche bleue pour une 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 de cycle.

Nettoyer des données avec R

Distance d'édition = 1

Différence entre sign et sign à l'aide d'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
  • Remplacer b $\rightarrow$ t

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

Nettoyer des données avec R

Un exemple plus complexe

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

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

Nettoyer des données avec R

Un exemple plus complexe

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

Total : 4

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

Nettoyer des données avec R

Types de distances d'édition

  • Damerau-Levenshtein
    • Ce que vous venez d'apprendre
  • Levenshtein
    • Tient compte seulement de la substitution, de l'insertion et de la suppression
  • LCS (Longest Common Subsequence)
    • Tient compte seulement de l'insertion et de la 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 le passage 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 des 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 des 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

Raccommodage à l'aide de 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

Raccommodage à l'aide de 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...