Compararea șirurilor de caractere

Curățarea datelor în R

Maggie Matsui

Content Developer @ DataCamp

Măsurarea distanței dintre valori

O axă numerică de la 0 la 15 cu un punct pe 3 și unul pe 10.

Curățarea datelor în R

Măsurarea distanței dintre valori

Aceeași axă numerică cu o paranteză roșie care evidențiază distanța dintre punctele 3 și 10.

Curățarea datelor în R

Măsurarea distanței dintre valori

Sub linia roșie care indică distanța, 10 minus 3 este egal cu 7.

                                            Care este distanța dintre typhoon și baboon?

Curățarea datelor în R

Distanța minimă de editare

Câte greșeli de tastare sunt necesare pentru a transforma un șir în altul?

Semn plus verde pentru inserare.

Curățarea datelor în R

Distanța minimă de editare

Câte greșeli de tastare sunt necesare pentru a transforma un șir în altul?

Semn minus roșu pentru ștergere

Curățarea datelor în R

Distanța minimă de editare

Câte greșeli de tastare sunt necesare pentru a transforma un șir în altul?

Semn ciclu mov pentru substituție.

Curățarea datelor în R

Distanța minimă de editare

Câte greșeli de tastare sunt necesare pentru a transforma un șir în altul?

Săgeată dublă albastră pentru transpunere.

Curățarea datelor în R

Distanța de editare = 1

Diferența dintre dog și dogs cu un semn plus verde.

Curățarea datelor în R

Distanța de editare = 1

Diferența dintre bath și bat cu un semn minus roșu.

Curățarea datelor în R

Distanța de editare = 1

Diferența dintre cats și rats cu un semn ciclu mov.

Curățarea datelor în R

Distanța de editare = 1

Diferența dintre sign și sign cu o săgeată dublă albastră.

Curățarea datelor în R

Un exemplu mai complex

baboon $\rightarrow$ typhoon

Cuvântul baboon

Curățarea datelor în R

Un exemplu mai complex

baboon $\rightarrow$ typhoon
  • Inserare h

Sub baboon, cuvântul babhoon cu un semn plus verde deasupra lui h.

Curățarea datelor în R

Un exemplu mai complex

baboon $\rightarrow$ typhoon
  • Inserare h
  • Substituție b $\rightarrow$ t

Sub aceasta, cuvântul tabhoon cu un semn ciclu mov deasupra lui t

Curățarea datelor în R

Un exemplu mai complex

baboon $\rightarrow$ typhoon
  • Inserare h
  • Substituție b $\rightarrow$ t
  • Substituție a $\rightarrow$ y

Sub aceasta, cuvântul tybhoon cu un semn ciclu mov deasupra lui y.

Curățarea datelor în R

Un exemplu mai complex

baboon $\rightarrow$ typhoon
  • Inserare h
  • Substituție b $\rightarrow$ t
  • Substituție a $\rightarrow$ y
  • Substituție b $\rightarrow$ p

Total: 4

Sub aceasta, cuvântul typhoon cu un semn ciclu mov deasupra lui p.

Curățarea datelor în R

Tipuri de distanță de editare

  • Damerau-Levenshtein
    • Ce tocmai ați învățat
  • Levenshtein
    • Include doar substituție, inserare și ștergere
  • LCS (Longest Common Subsequence)
    • Include doar inserare și ștergere
  • Altele
    • Jaro-Winkler
    • Jaccard

Care este cea mai bună?

Curățarea datelor în R

Distanța dintre șiruri în R

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

Imagine din slide-urile anterioare cu transformarea de la baboon la typhoon.

Curățarea datelor în R

Alte metode

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Curățarea datelor în R

Compararea șirurilor pentru curățarea datelor

  • În Capitolul 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • Ce se întâmplă cu prea multe variații?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Folosiți distanța dintre șiruri!
Curățarea datelor în R

Compararea șirurilor pentru curățarea datelor

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
Curățarea datelor în R

Remapare folosind distanța dintre șiruri

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
...
Curățarea datelor în R

Remapare folosind distanța dintre șiruri

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
...
Curățarea datelor în R

Să exersăm!

Curățarea datelor în R

Preparing Video For Download...