Porównywanie ciągów znaków

Czyszczenie danych w R

Maggie Matsui

Content Developer @ DataCamp

Mierzenie odległości między wartościami

Oś liczbowa od 0 do 15 z punktami na 3 i 10.

Czyszczenie danych w R

Mierzenie odległości między wartościami

Ta sama oś liczbowa z czerwonym nawiasem zaznaczającym odległość między punktami 3 i 10.

Czyszczenie danych w R

Mierzenie odległości między wartościami

Pod czerwoną linią odległości: 10 minus 3 równa się 7.

                                            Jaka jest odległość między typhoon a baboon?

Czyszczenie danych w R

Minimalna odległość edycji

Ile błędów dzieli jeden ciąg znaków od drugiego?

Zielony znak plus oznaczający wstawienie.

Czyszczenie danych w R

Minimalna odległość edycji

Ile błędów dzieli jeden ciąg znaków od drugiego?

Czerwony znak minus oznaczający usunięcie.

Czyszczenie danych w R

Minimalna odległość edycji

Ile błędów dzieli jeden ciąg znaków od drugiego?

Fioletowy symbol cyklu oznaczający podstawienie.

Czyszczenie danych w R

Minimalna odległość edycji

Ile błędów dzieli jeden ciąg znaków od drugiego?

Niebieski podwójny strzałka oznaczająca transpozycję.

Czyszczenie danych w R

Odległość edycji = 1

Różnica między „dog" a „dogs" zaznaczona zielonym znakiem plus.

Czyszczenie danych w R

Odległość edycji = 1

Różnica między „bath" a „bat" zaznaczona czerwonym znakiem minus.

Czyszczenie danych w R

Odległość edycji = 1

Różnica między „cats" a „rats" zaznaczona fioletowym symbolem cyklu.

Czyszczenie danych w R

Odległość edycji = 1

Różnica między „sign" a „sign" zaznaczona niebieską podwójną strzałką.

Czyszczenie danych w R

Bardziej złożony przykład

baboon $\rightarrow$ typhoon

Słowo baboon

Czyszczenie danych w R

Bardziej złożony przykład

baboon $\rightarrow$ typhoon
  • Wstaw h

Pod słowem baboon słowo babhoon z zielonym znakiem plus nad literą h.

Czyszczenie danych w R

Bardziej złożony przykład

baboon $\rightarrow$ typhoon
  • Wstaw h
  • Zastąp b $\rightarrow$ t

Poniżej słowo tabhoon z fioletowym symbolem cyklu nad literą t.

Czyszczenie danych w R

Bardziej złożony przykład

baboon $\rightarrow$ typhoon
  • Wstaw h
  • Zastąp b $\rightarrow$ t
  • Zastąp a $\rightarrow$ y

Poniżej słowo tybhoon z fioletowym symbolem cyklu nad literą y.

Czyszczenie danych w R

Bardziej złożony przykład

baboon $\rightarrow$ typhoon
  • Wstaw h
  • Zastąp b $\rightarrow$ t
  • Zastąp a $\rightarrow$ y
  • Zastąp b $\rightarrow$ p

Łącznie: 4

Poniżej słowo typhoon z fioletowym symbolem cyklu nad literą p.

Czyszczenie danych w R

Rodzaje odległości edycji

  • Damerau-Levenshtein
    • To, czego właśnie się nauczono
  • Levenshtein
    • Uwzględnia tylko podstawienie, wstawienie i usunięcie
  • LCS (Najdłuższy wspólny podciąg)
    • Uwzględnia tylko wstawienie i usunięcie
  • Inne
    • Jaro-Winkler
    • Jaccard

Co jest najlepsze?

Czyszczenie danych w R

Odległość ciągów znaków w R

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

Ilustracja z poprzednich slajdów pokazująca, jak przejść od baboon do typhoon.

Czyszczenie danych w R

Inne metody

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Czyszczenie danych w R

Porównywanie ciągów znaków do czyszczenia danych

  • W rozdziale 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • Co przy zbyt wielu wariantach?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Użyj odległości ciągów znaków!
Czyszczenie danych w R

Porównywanie ciągów znaków do czyszczenia danych

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
Czyszczenie danych w R

Ponowne mapowanie z użyciem odległości ciągów

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
...
Czyszczenie danych w R

Ponowne mapowanie z użyciem odległości ciągów

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
...
Czyszczenie danych w R

Czas na ćwiczenia!

Czyszczenie danych w R

Preparing Video For Download...