Порівняння рядків

Очищення даних в R

Maggie Matsui

Content Developer @ DataCamp

Вимірювання відстані між значеннями

Числова вісь від 0 до 15 з крапками на 3 і 10.

Очищення даних в R

Вимірювання відстані між значеннями

Та сама числова вісь з червоною дужкою між крапками на 3 і 10.

Очищення даних в R

Вимірювання відстані між значеннями

Під червоною лінією, що показує відстань, 10 мінус 3 дорівнює 7.

                                            Яка відстань між typhoon і baboon?

Очищення даних в R

Мінімальна редагувальна відстань

Скільки помилок потрібно, щоб перейти від одного рядка до іншого?

Зелений плюс — вставка.

Очищення даних в R

Мінімальна редагувальна відстань

Скільки помилок потрібно, щоб перейти від одного рядка до іншого?

Червоний мінус — вилучення.

Очищення даних в R

Мінімальна редагувальна відстань

Скільки помилок потрібно, щоб перейти від одного рядка до іншого?

Фіолетова циклічна стрілка — заміна.

Очищення даних в R

Мінімальна редагувальна відстань

Скільки помилок потрібно, щоб перейти від одного рядка до іншого?

Синя подвійна стрілка — транспозиція.

Очищення даних в R

Редагувальна відстань = 1

Показано різницю між dog і dogs із зеленим плюсом.

Очищення даних в R

Редагувальна відстань = 1

Показано різницю між bath і bat з червоним мінусом.

Очищення даних в R

Редагувальна відстань = 1

Показано різницю між cats і rats із фіолетовою циклічною стрілкою.

Очищення даних в R

Редагувальна відстань = 1

Показано різницю між sign і sign із синьою подвійною стрілкою.

Очищення даних в R

Складніший приклад

baboon $\rightarrow$ typhoon

слово baboon

Очищення даних в R

Складніший приклад

baboon $\rightarrow$ typhoon
  • Вставте h

Під baboon — слово babhoon із зеленим плюсом над h.

Очищення даних в R

Складніший приклад

baboon $\rightarrow$ typhoon
  • Вставте h
  • Замініть b $\rightarrow$ t

Нижче — слово tabhoon із фіолетовою циклічною стрілкою над t

Очищення даних в R

Складніший приклад

baboon $\rightarrow$ typhoon
  • Вставте h
  • Замініть b $\rightarrow$ t
  • Замініть a $\rightarrow$ y

Нижче — слово tybhoon із фіолетовою циклічною стрілкою над y.

Очищення даних в R

Складніший приклад

baboon $\rightarrow$ typhoon
  • Вставте h
  • Замініть b $\rightarrow$ t
  • Замініть a $\rightarrow$ y
  • Замініть b $\rightarrow$ p

Разом: 4

Нижче — слово typhoon із фіолетовою циклічною стрілкою над p.

Очищення даних в R

Типи редагувальної відстані

  • Damerau-Levenshtein
    • Те, що ви щойно вивчили
  • Levenshtein
    • Враховує лише заміну, вставку та вилучення
  • LCS (Longest Common Subsequence)
    • Враховує лише вставку та вилучення
  • Інші
    • Jaro-Winkler
    • Jaccard

Який метод кращий?

Очищення даних в R

Відстань між рядками в R

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

Зображення з попередніх слайдів, як перейти від baboon до typhoon.

Очищення даних в R

Інші методи

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Очищення даних в R

Порівняння рядків для очищення даних

  • У розділі 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • А якщо варіацій занадто багато?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Використайте відстань між рядками!
Очищення даних в R

Порівняння рядків для очищення даних

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
Очищення даних в R

Перевіднесення за відстанню між рядками

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
...
Очищення даних в R

Перевіднесення за відстанню між рядками

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
...
Очищення даних в R

Давайте потренуємось!

Очищення даних в R

Preparing Video For Download...