Jämföra strängar

Datarensning i R

Maggie Matsui

Content Developer @ DataCamp

Mäta avstånd mellan värden

En tallinje från 0 till 15 med en punkt på 3 och en punkt på 10.

Datarensning i R

Mäta avstånd mellan värden

Samma tallinje med en röd klammer som markerar avståndet mellan punkterna på 3 och 10.

Datarensning i R

Mäta avstånd mellan värden

Under den röda linjen som visar avståndet: 10 minus 3 är lika med 7.

                                            Vad är avståndet mellan typhoon och baboon?

Datarensning i R

Minsta redigeringsavstånd

Hur många skrivfel krävs för att ta sig från en sträng till en annan?

Grönt plustecken för infogning.

Datarensning i R

Minsta redigeringsavstånd

Hur många skrivfel krävs för att ta sig från en sträng till en annan?

Rött minustecken för borttagning

Datarensning i R

Minsta redigeringsavstånd

Hur många skrivfel krävs för att ta sig från en sträng till en annan?

Lila cykeltecken för ersättning.

Datarensning i R

Minsta redigeringsavstånd

Hur många skrivfel krävs för att ta sig från en sträng till en annan?

Blå dubbelpil för transposition.

Datarensning i R

Redigeringsavstånd = 1

Visar skillnaden mellan dog och dogs med ett grönt plustecken.

Datarensning i R

Redigeringsavstånd = 1

Visar skillnaden mellan bath och bat med ett rött minustecken.

Datarensning i R

Redigeringsavstånd = 1

Visar skillnaden mellan cats och rats med ett lila cykeltecken.

Datarensning i R

Redigeringsavstånd = 1

Visar skillnaden mellan sign och sign med en blå dubbelpil.

Datarensning i R

Ett mer komplext exempel

baboon $\rightarrow$ typhoon

Ordet baboon

Datarensning i R

Ett mer komplext exempel

baboon $\rightarrow$ typhoon
  • Infoga h

Under baboon, ordet babhoon med ett grönt plustecken ovanför h.

Datarensning i R

Ett mer komplext exempel

baboon $\rightarrow$ typhoon
  • Infoga h
  • Ersätt b $\rightarrow$ t

Under det, ordet tabhoon med ett lila cykeltecken ovanför t

Datarensning i R

Ett mer komplext exempel

baboon $\rightarrow$ typhoon
  • Infoga h
  • Ersätt b $\rightarrow$ t
  • Ersätt a $\rightarrow$ y

Under det, ordet tybhoon med ett lila cykeltecken ovanför y.

Datarensning i R

Ett mer komplext exempel

baboon $\rightarrow$ typhoon
  • Infoga h
  • Ersätt b $\rightarrow$ t
  • Ersätt a $\rightarrow$ y
  • Ersätt b $\rightarrow$ p

Totalt: 4

Under det, ordet typhoon med ett lila cykeltecken ovanför p.

Datarensning i R

Typer av redigeringsavstånd

  • Damerau-Levenshtein
    • Det du just lärde dig
  • Levenshtein
    • Tar bara hänsyn till ersättning, infogning och borttagning
  • LCS (Longest Common Subsequence)
    • Tar bara hänsyn till infogning och borttagning
  • Andra
    • Jaro-Winkler
    • Jaccard

Vilket är bäst?

Datarensning i R

Strängavstånd i R

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

Bild från tidigare slides som visar hur man tar sig från baboon till typhoon.

Datarensning i R

Andra metoder

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Datarensning i R

Jämföra strängar för att rensa data

  • I kapitel 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • Vad händer om det finns för många varianter?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Använd strängavstånd!
Datarensning i R

Jämföra strängar för att rensa data

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
Datarensning i R

Ommappning med strängavstånd

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
...
Datarensning i R

Ommappning med strängavstånd

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
...
Datarensning i R

Nu kör vi en övning!

Datarensning i R

Preparing Video For Download...