Geocoding địa chỉ Việt Nam: những trường hợp hóc búa
Dấu tiếng Việt, cách đánh số ngõ ngách, đổi tên phường xã và những đặc thù khác của địa chỉ Việt Nam khiến các geocoder ngây thơ bó tay — và cách GoGoDuk xử lý chúng.
Nếu bạn từng làm app ở Việt Nam, chắc hẳn bạn đã chứng kiến một geocoder "bó tay" trước một địa chỉ mà bạn đọc cái là hiểu ngay. Địa chỉ Việt Nam đầy rẫy những trường hợp đặc biệt không hề xuất hiện trong dataset của Mỹ — và phần lớn geocoder có sẵn trên thị trường chẳng được huấn luyện với chúng.
Dưới đây là những trường hợp hay gây rắc rối, và cách chúng tôi xử lý từng
cái trong /v1/suggest và /v1/place/resolve.
1. Dấu, dấu một nửa, và phương án ASCII dự phòng
Tùy vào bàn phím và thói quen, người dùng có thể gõ "Hà Nội", "Ha Noi", "Hanoi" hay "ha noi". Một geocoder ngây thơ sẽ coi đây là ba chuỗi khác nhau.
Chúng tôi chuẩn hóa ngay ở phía index: mỗi tên tiếng Việt được lưu cả ở dạng đầy đủ dấu lẫn dạng bỏ dấu về ASCII. Khi truy vấn, chúng tôi bỏ dấu input theo đúng cách đó rồi so khớp với cả hai cột. Không tốn gì lúc query mà lại có lợi ở mọi request.
2. Đánh số ngõ ngách (Ngõ / Hẻm)
Địa chỉ Hà Nội rất thích những con ngõ lồng nhau: "Số 5, ngõ 12, ngách 3, phố Hào Nam" nghĩa là nhà số 5, trong ngách 3, rẽ từ ngõ 12, trên phố Hào Nam. Một tokenizer kiểu phẳng sẽ tách sai chỗ này.
Bộ phân tích của chúng tôi nhận diện các token ngõ / ngách / hẻm /
kiệt như những dấu hiệu chỉ độ sâu của ngõ và giữ nguyên thứ tự của
chúng. Chúng tôi index các ngõ tách riêng khỏi tuyến phố cha, nhờ vậy gợi
ý có thể đưa ra các kết quả trung gian ("Ngõ 12 Hào Nam") trước khi đi sâu
xuống tận một số nhà cụ thể.
3. Đổi tên và sáp nhập phường xã
Đơn vị hành chính của Việt Nam thường xuyên được tổ chức lại. Phường xã bị đổi tên, sáp nhập hoặc chia tách — trong khi địa chỉ cũ vẫn còn lưu hành nhiều năm trời.
Chúng tôi theo dõi cả tên phường hiện hành lẫn các tên gọi cũ trong dataset ranh giới hành chính (toàn bộ hơn 11.000 phường xã). Tìm theo tên phường cũ vẫn ra kết quả; còn reverse geocoding thì luôn trả về tên chính thức hiện tại.
4. Những con đường đánh số mà không phải là đường
"Đường số 7" xuất hiện hàng chục lần khắp TP.HCM, mỗi cái nằm ở một phường khác nhau. So khớp trần theo tên sẽ trả về nhầm con đường.
Cách khắc phục không có gì cao siêu: chúng tôi luôn neo việc so khớp các con đường đánh số vào ngữ cảnh phường hoặc quận nếu nó có trong truy vấn, và đưa tên phường lên kết quả gợi ý để người dùng có thể phân biệt.
5. Tên tòa nhà và địa chỉ đường phố
"Vincom Center Bà Triệu" là một tòa nhà, không phải một địa chỉ. Người dùng
có thể gõ theo dạng nào cũng được. Chúng tôi phân giải tên tòa nhà về địa
chỉ chuẩn của nó và trả về cả hai — kết quả gồm name (tòa nhà) và
address (đường phố) để phía client tự chọn cái nào để hiển thị.
Thử ngay
Gói miễn phí xử lý được tất cả những trường hợp trên. Nếu bạn gặp một trường hợp mà chúng tôi chưa lo được — kiểu phiên âm lạ, một mẫu địa chỉ vùng miền mà chúng tôi bỏ sót — hãy gửi email tới [email protected] kèm một truy vấn mẫu, chúng tôi sẽ xem xét.
Muốn dùng GoGoDuk?
Miễn phí trọn đời — 100 request/ngày mỗi tài khoản, không cần thẻ tín dụng. Giới hạn cao hơn theo yêu cầu.
Đăng ký →