Thuật toán của Levenstein dựa trên số lần chèn, xóa và thay thế trong chuỗi.
Thật không may, nó không tính đến một lỗi chính tả phổ biến, đó là sự hoán vị của 2 ký tự (ví dụ: someawgie vs someaewsome). Vì vậy, tôi thích thuật toán Damerau-Levenstein mạnh mẽ hơn .
Tôi không nghĩ nên áp dụng khoảng cách trên toàn bộ chuỗi vì thời gian tăng đột ngột với độ dài của chuỗi so với. Nhưng thậm chí tệ hơn, khi các thành phần địa chỉ, như ZIP bị xóa, các địa chỉ hoàn toàn khác nhau có thể phù hợp hơn (được đo bằng máy tính Levenshtein trực tuyến ):
1 someawesome street, anytown, F100 211 (reference)
1 someawesome st.,anytown (difference of 15, same address)
1 otherplaces street,anytown,F100211 (difference of 13, different ddress)
1 sameawesome street, othertown, CA98200 (difference of 13, different ddress)
anytown, 1 someawesome street (28 different same address)
anytown, F100 211, 1 someawesome street (37 different same address)
Những hiệu ứng này có xu hướng xấu đi cho tên đường ngắn hơn.
Vì vậy, bạn nên sử dụng các thuật toán thông minh hơn. Ví dụ, Arthur Ratz đã xuất bản trên CodeProject một thuật toán để so sánh văn bản thông minh. Thuật toán không in ra một khoảng cách (chắc chắn nó có thể được làm giàu tương ứng), nhưng nó xác định một số điều khó khăn như di chuyển các khối văn bản (ví dụ: hoán đổi giữa thị trấn và đường phố giữa ví dụ đầu tiên của tôi và ví dụ cuối cùng của tôi).
Nếu một thuật toán như vậy quá chung chung cho trường hợp của bạn, thì bạn nên thực sự làm việc theo các thành phần và chỉ so sánh các thành phần tương đương. Đây không phải là một điều dễ dàng nếu bạn muốn phân tích bất kỳ định dạng địa chỉ nào trên thế giới. Nhưng nếu mục tiêu cụ thể hơn, nói Mỹ, điều đó chắc chắn là khả thi. Ví dụ: "đường phố", "st.", "Place", "plazza" và các lỗi chính tả thông thường của chúng có thể tiết lộ phần đường của địa chỉ, phần chính trong đó về nguyên tắc sẽ là số. Mã ZIP sẽ giúp xác định vị trí thị trấn, hoặc có thể là phần tử cuối cùng của địa chỉ hoặc nếu bạn không muốn đoán, bạn có thể tìm danh sách tên thành phố (ví dụ: tải xuống cơ sở dữ liệu mã zip miễn phí). Sau đó, bạn chỉ có thể áp dụng Damerau-Levenshtein trên các thành phần có liên quan.