Confrontare le stringhe

Pulizia dei dati in R

Maggie Matsui

Content Developer @ DataCamp

Misurare la distanza tra valori

Una retta numerica da 0 a 15 con un punto su 3 e uno su 10.

Pulizia dei dati in R

Misurare la distanza tra valori

La stessa retta numerica con una parentesi rossa che evidenzia la distanza tra i due punti su 3 e 10.

Pulizia dei dati in R

Misurare la distanza tra valori

Sotto la linea rossa che mostra la distanza, 10 meno 3 uguale 7.

                                            Qual è la distanza tra typhoon e baboon?

Pulizia dei dati in R

Distanza di edit minima

Quanti refusi servono per passare da una stringa a un'altra?

Segno più verde per inserimento.

Pulizia dei dati in R

Distanza di edit minima

Quanti refusi servono per passare da una stringa a un'altra?

Segno meno rosso per eliminazione

Pulizia dei dati in R

Distanza di edit minima

Quanti refusi servono per passare da una stringa a un'altra?

Segno di ciclo viola per sostituzione.

Pulizia dei dati in R

Distanza di edit minima

Quanti refusi servono per passare da una stringa a un'altra?

Doppia freccia blu per trasposizione.

Pulizia dei dati in R

Distanza di edit = 1

Differenza tra dog e dogs con un segno più verde.

Pulizia dei dati in R

Distanza di edit = 1

Differenza tra bath e bat con un segno meno rosso.

Pulizia dei dati in R

Distanza di edit = 1

Differenza tra cats e rats con un segno di ciclo viola.

Pulizia dei dati in R

Distanza di edit = 1

Differenza tra sign e sign con una doppia freccia blu.

Pulizia dei dati in R

Un esempio più complesso

baboon $\rightarrow$ typhoon

la parola baboon

Pulizia dei dati in R

Un esempio più complesso

baboon $\rightarrow$ typhoon
  • Inserisci h

Sotto baboon, la parola babhoon con un segno più verde sopra la h.

Pulizia dei dati in R

Un esempio più complesso

baboon $\rightarrow$ typhoon
  • Inserisci h
  • Sostituisci b $\rightarrow$ t

Sotto, la parola tabhoon, con un segno di ciclo viola sopra la t

Pulizia dei dati in R

Un esempio più complesso

baboon $\rightarrow$ typhoon
  • Inserisci h
  • Sostituisci b $\rightarrow$ t
  • Sostituisci a $\rightarrow$ y

Sotto, la parola tybhoon con un segno di ciclo viola sopra la y.

Pulizia dei dati in R

Un esempio più complesso

baboon $\rightarrow$ typhoon
  • Inserisci h
  • Sostituisci b $\rightarrow$ t
  • Sostituisci a $\rightarrow$ y
  • Sostituisci b $\rightarrow$ p

Totale: 4

Sotto, la parola typhoon con un segno di ciclo viola sopra la p.

Pulizia dei dati in R

Tipi di distanza di edit

  • Damerau-Levenshtein
    • Quello che hai appena visto
  • Levenshtein
    • Considera solo sostituzione, inserimento ed eliminazione
  • LCS (Longest Common Subsequence)
    • Considera solo inserimento ed eliminazione
  • Altri
    • Jaro-Winkler
    • Jaccard

Qual è il migliore?

Pulizia dei dati in R

Distanza tra stringhe in R

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

Immagine dalle diapositive precedenti che mostra come passare da baboon a typhoon.

Pulizia dei dati in R

Altri metodi

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Pulizia dei dati in R

Confrontare stringhe per ripulire i dati

  • Nel Capitolo 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • E se le varianti fossero troppe?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Usa la distanza tra stringhe!
Pulizia dei dati in R

Confrontare stringhe per ripulire i dati

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
Pulizia dei dati in R

Rimappare con la distanza tra stringhe

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
...
Pulizia dei dati in R

Rimappare con la distanza tra stringhe

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
...
Pulizia dei dati in R

Esercitiamoci!

Pulizia dei dati in R

Preparing Video For Download...