2010-08-30 43 views
5

Thuật toán tốt nhất cho từ gần nhất là gì.Thuật toán tốt nhất cho từ gần nhất

Từ điển có thể có được cung cấp và các ký tự đầu tiên trong từ nhập liệu có thể sai.

+2

Tại sao chỉ các ký tự đầu tiên có thể sai? – Leonid

+3

Trước tiên bạn có thể đưa ra định nghĩa "gần nhất" không? – FrustratedWithFormsDesigner

+0

Tôi có nghĩa là các ký tự đầu tiên có thể sai. – Avinash

Trả lời

7

Một lựa chọn là BK-cây -. Xem bài đăng blog của tôi về chúng here. Một tùy chọn khác, nhanh hơn nhưng phức tạp hơn là Levenshtein Automata, mà tôi cũng đã viết về, here.

+0

Tôi đang sử dụng Hunspell và trả về 10 kết quả như "lỗ", "hello", "help", "hero", v.v khi tôi nhập "helo". Tôi hy vọng chỉ "xin chào", điều mà Google làm khi tôi tìm kiếm "helo". Bây giờ là điều này dựa trên dữ liệu thống kê là tốt, hoặc chỉ chỉnh sửa khoảng cách có thể đủ để đề nghị chỉ "hello"? – SexyBeast

4

Có những công cụ như HunSpell (trình kiểm tra chính tả mã nguồn mở rộng rãi bao gồm OpenOffice) đã tiếp cận vấn đề từ nhiều góc độ. Một tiêu chí được sử dụng rộng rãi để quyết định mức độ gần gũi của các từ là Levenshtein distance cũng được sử dụng trong HunSpell.

3

Bạn có thể sử dụng BLAST

và sửa đổi nó để sử dụng thực tế là từ trong một từ điển có đơn vị rời rạc mà làm cho quá trình kết hợp cụ thể hơn không giống như một chuỗi ADN dài.

BLAST đã tích hợp sẵn khái niệm khoảng cách chỉnh sửa.

Ngoài ra, bạn có thể sử dụng cây hậu tố (Dan Gusfeld có một cuốn sách tuyệt vời trên các thuật toán chuỗi kết hợp cơ bản) và xây dựng trong ý tưởng chỉnh sửa khoảng cách trong

Các vấn đề liên quan