Strings vergelijken

Data opschonen in R

Maggie Matsui

Content Developer @ DataCamp

Afstand tussen waarden meten

Een getallenlijn van 0 tot 15 met een stip op 3 en een stip op 10.

Data opschonen in R

Afstand tussen waarden meten

Dezelfde getallenlijn met een rode beugel die de lengte tussen de stippen op 3 en 10 markeert.

Data opschonen in R

Afstand tussen waarden meten

Onder de rode lijn die de afstand toont, staat 10 min 3 is 7.

                                            Wat is de afstand tussen typhoon en baboon?

Data opschonen in R

Minimale bewerkingsafstand

Hoeveel tikfouten zijn nodig om van de ene string naar de andere te gaan?

Groen plusteken voor invoeging.

Data opschonen in R

Minimale bewerkingsafstand

Hoeveel tikfouten zijn nodig om van de ene string naar de andere te gaan?

Rood minteken voor verwijdering

Data opschonen in R

Minimale bewerkingsafstand

Hoeveel tikfouten zijn nodig om van de ene string naar de andere te gaan?

Paarse cirkelpijl voor substitutie.

Data opschonen in R

Minimale bewerkingsafstand

Hoeveel tikfouten zijn nodig om van de ene string naar de andere te gaan?

Blauwe dubbele pijl voor transpositie.

Data opschonen in R

Bewerkingsafstand = 1

Verschil tussen dog en dogs met een groen plusteken.

Data opschonen in R

Bewerkingsafstand = 1

Verschil tussen bath en bat met een rood minteken.

Data opschonen in R

Bewerkingsafstand = 1

Verschil tussen cats en rats met een paarse cirkelpijl.

Data opschonen in R

Bewerkingsafstand = 1

Verschil tussen sign en sign met een blauwe dubbele pijl.

Data opschonen in R

Een complexer voorbeeld

baboon $\rightarrow$ typhoon

het woord baboon

Data opschonen in R

Een complexer voorbeeld

baboon $\rightarrow$ typhoon
  • Voeg h in

Onder baboon staat babhoon met een groen plusteken boven de h.

Data opschonen in R

Een complexer voorbeeld

baboon $\rightarrow$ typhoon
  • Voeg h in
  • Vervang b $\rightarrow$ t

Daaronder het woord tabhoon, met een paarse cirkelpijl boven de t

Data opschonen in R

Een complexer voorbeeld

baboon $\rightarrow$ typhoon
  • Voeg h in
  • Vervang b $\rightarrow$ t
  • Vervang a $\rightarrow$ y

Daaronder het woord tybhoon met een paarse cirkelpijl boven de y.

Data opschonen in R

Een complexer voorbeeld

baboon $\rightarrow$ typhoon
  • Voeg h in
  • Vervang b $\rightarrow$ t
  • Vervang a $\rightarrow$ y
  • Vervang b $\rightarrow$ p

Totaal: 4

Daaronder het woord typhoon met een paarse cirkelpijl boven de p.

Data opschonen in R

Soorten bewerkingsafstand

  • Damerau-Levenshtein
    • Wat je net leerde
  • Levenshtein
    • Neemt alleen substitutie, invoeging en verwijdering mee
  • LCS (Longest Common Subsequence)
    • Neemt alleen invoeging en verwijdering mee
  • Overige
    • Jaro-Winkler
    • Jaccard

Welke is het best?

Data opschonen in R

Stringafstand in R

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

Afbeelding van eerdere slides die de omzetting van baboon naar typhoon toont.

Data opschonen in R

Andere methoden

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Data opschonen in R

Strings vergelijken om data op te schonen

  • In Hoofdstuk 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • Wat als er te veel varianten zijn?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Gebruik stringafstand!
Data opschonen in R

Strings vergelijken om data op te schonen

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
Data opschonen in R

Remappen met stringafstand

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
...
Data opschonen in R

Remappen met stringafstand

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
...
Data opschonen in R

Laten we oefenen!

Data opschonen in R

Preparing Video For Download...