7

Tôi có danh sách tên sân bay và người dùng của tôi có khả năng nhập một tên sân bay để chọn tên đó để xử lý thêm.Phát hiện các từ sai chính tả

Bạn xử lý tên viết sai chính tả như thế nào và trình bày danh sách đề xuất?

+0

http://en.wikipedia.org/wiki/Fuzzy_string_searching –

Trả lời

7

Tra cứu Levenshtein distances để khớp tên chính xác với đầu vào của người dùng đã cho.

+3

Khoảng cách Levenshtein khá tốn kém để tính, O (n^2), tính khoảng cách Levenshtein cho mỗi từ trong từ điển là không khởi động. – Wedge

+3

Từ điển trong trường hợp này chỉ là danh sách các sân bay. trên toàn thế giới chỉ có vài trăm sân bay đáng chú ý. – SingleNegationElimination

+0

@Wedge Việc băm nhỏ từ điển sẽ không nhất thiết làm giảm độ phức tạp của thời gian, nhưng nó có thể giúp ích đáng kể. – Ryan

0

Có thể tốt hơn để cho phép người dùng chọn từ danh sách tên sân bay thay vì để họ tự nhập. Không có sai lầm có thể được thực hiện theo cách đó.

0

Mặc dù nó không giúp ích ngay lập tức, bạn có thể theo dõi lỗi chính tả và xem họ nhập tên nào khi nhập đúng tên. Bằng cách đó bạn có thể theo dõi các lỗi chính tả phổ biến nhất và cung cấp các tùy chọn tốt nhất.

1

Sử dụng kiểm tra lỗi chính tả trong mã của bạn. Danh sách các từ chỉ nên viết chính tả các sân bay.

Đây không phải là cách tuyệt vời để thực hiện việc này. Bạn nên hoặc là đi cho một điều khiển cung cấp tùy chọn tự động hoàn thành hoặc thả xuống như một người khác đề nghị.

Sử dụng AJAX nếu công nghệ của bạn hỗ trợ.

0

Thêm vào đề xuất của Kevin, nó có thể là tốt nhất của cả hai thế giới nếu bạn sử dụng hộp nhập có tự động hoàn thành javascript. như jquery autocomplete

chỉnh sửa: danish đánh tôi :(

+0

một lý do cho downvote? – Jayrox

+0

Tôi đã cố gắng loại bỏ downvote nhưng hệ thống cấm điều này. Lý do chính là: vì Chúa không phải ai cũng viết bằng jquery/JavaScript/HTML. Ngôn ngữ thuyết bất khả tri, ngôn ngữ bất khả tri .. –

+0

Một số người muốn có một giải pháp đơn giản cho một nhiệm vụ đơn giản. Tôi đã cung cấp một giải pháp đơn giản cho một nhiệm vụ đơn giản. Mọi vấn đề đều có nhiều tuyến đường để giải quyết nó. – Jayrox

0

Có thể có một thư viện kiểm tra chính tả hiện tại bạn có thể sử dụng mã để làm việc này cũng là không tầm thường Nếu bạn muốn.. viết những dòng này cho mình, bạn có thể muốn xem xét dictionary trie's.

một phương pháp có thể làm việc là chỉ cần tạo ra một danh sách khổng lồ từ lỗi có thể và điều chỉnh của họ (đây là một implementation in Python), mà bạn có thể bộ nhớ cache cho hiệu suất cao hơn.

1

Tôi biết nó không phải những gì bạn đã yêu cầu, nhưng nếu đây là một ứng dụng mà sân bay phù hợp là quan trọng (ví dụ: đặt vé) sau đó bạn có thể muốn có một giai đoạn xác nhận để chắc chắn rằng bạn có một trong những quyền. Ví dụ, đã có trường hợp người nhận vé cho số wrong Sydney.