So sánh chuỗi

Làm sạch dữ liệu trong R

Maggie Matsui

Content Developer @ DataCamp

Đo khoảng cách giữa các giá trị

Một trục số từ 0 đến 15 với chấm tại 3 và 10.

Làm sạch dữ liệu trong R

Đo khoảng cách giữa các giá trị

Cùng trục số với ngoặc đỏ nêu độ dài giữa hai chấm tại 3 và 10.

Làm sạch dữ liệu trong R

Đo khoảng cách giữa các giá trị

Bên dưới vạch đỏ thể hiện khoảng cách, 10 trừ 3 bằng 7.

                                            Khoảng cách giữa typhoonbaboon là bao nhiêu?

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa tối thiểu

Cần bao nhiêu lỗi gõ để đổi từ chuỗi này sang chuỗi khác?

Dấu cộng xanh lá cho chèn.

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa tối thiểu

Cần bao nhiêu lỗi gõ để đổi từ chuỗi này sang chuỗi khác?

Dấu trừ đỏ cho xóa

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa tối thiểu

Cần bao nhiêu lỗi gõ để đổi từ chuỗi này sang chuỗi khác?

Biển tròn màu tím cho phép thế.

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa tối thiểu

Cần bao nhiêu lỗi gõ để đổi từ chuỗi này sang chuỗi khác?

Mũi tên hai chiều màu xanh lam cho hoán vị.

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa = 1

Minh họa khác biệt giữa dog và dogs với dấu cộng xanh lá.

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa = 1

Minh họa khác biệt giữa bath và bat với dấu trừ đỏ.

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa = 1

Minh họa khác biệt giữa cats và rats với biển tròn tím.

Làm sạch dữ liệu trong R

Khoảng cách chỉnh sửa = 1

Minh họa khác biệt giữa sign và sign với mũi tên hai chiều xanh lam.

Làm sạch dữ liệu trong R

Ví dụ phức tạp hơn

baboon $\rightarrow$ typhoon

từ baboon

Làm sạch dữ liệu trong R

Ví dụ phức tạp hơn

baboon $\rightarrow$ typhoon
  • Chèn h

Bên dưới baboon là babhoon với dấu cộng xanh lá trên h.

Làm sạch dữ liệu trong R

Ví dụ phức tạp hơn

baboon $\rightarrow$ typhoon
  • Chèn h
  • Thay b $\rightarrow$ t

Bên dưới là tabhoon với biển tròn tím trên t

Làm sạch dữ liệu trong R

Ví dụ phức tạp hơn

baboon $\rightarrow$ typhoon
  • Chèn h
  • Thay b $\rightarrow$ t
  • Thay a $\rightarrow$ y

Bên dưới là tybhoon với biển tròn tím trên y.

Làm sạch dữ liệu trong R

Ví dụ phức tạp hơn

baboon $\rightarrow$ typhoon
  • Chèn h
  • Thay b $\rightarrow$ t
  • Thay a $\rightarrow$ y
  • Thay b $\rightarrow$ p

Tổng: 4

Bên dưới là typhoon với biển tròn tím trên p.

Làm sạch dữ liệu trong R

Các loại khoảng cách chỉnh sửa

  • Damerau–Levenshtein
    • Vừa học xong
  • Levenshtein
    • Chỉ xét thay thế, chèn, xóa
  • LCS (Longest Common Subsequence)
    • Chỉ xét chèn và xóa
  • Khác
    • Jaro–Winkler
    • Jaccard

Cách nào tốt nhất?

Làm sạch dữ liệu trong R

Khoảng cách chuỗi trong R

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

Hình từ các slide trước minh họa chuyển từ baboon sang typhoon.

Làm sạch dữ liệu trong R

Phương pháp khác

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Làm sạch dữ liệu trong R

So sánh chuỗi để làm sạch dữ liệu

  • Ở Chương 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • Nếu biến thể quá nhiều thì sao?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • Hãy dùng khoảng cách chuỗi!
Làm sạch dữ liệu trong R

So sánh chuỗi để làm sạch dữ liệu

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
Làm sạch dữ liệu trong R

Ánh xạ lại bằng khoảng cách chuỗi

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
...
Làm sạch dữ liệu trong R

Ánh xạ lại bằng khoảng cách chuỗi

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
...
Làm sạch dữ liệu trong R

Ayo berlatih!

Làm sạch dữ liệu trong R

Preparing Video For Download...