Сравнение строк

Очистка данных в 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 (наибольшая общая подпоследовательность)
    • Учитывает только вставку и удаление
  • Другие
    • 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...