Tôi đang cố gắng so khớp một cụm từ tìm kiếm với từ điển phù hợp có thể sử dụng thuật toán khoảng cách Levenshtein. Thuật toán trả về khoảng cách được biểu thị bằng số hoạt động cần thiết để chuyển đổi chuỗi tìm kiếm thành chuỗi phù hợp. Tôi muốn trình bày các kết quả trong danh sách phần trăm xếp hạng các kết quả "N" hàng đầu (ví dụ 10).Tỷ lệ phần trăm của các kết quả phù hợp sử dụng Levenshtein Khoảng cách phù hợp với
Vì chuỗi tìm kiếm có thể dài hơn hoặc ngắn hơn các chuỗi từ điển riêng lẻ, nên một logic thích hợp để biểu thị khoảng cách dưới dạng phần trăm, điều này sẽ phản ánh chất lượng "gần như phần trăm". chuỗi, với 100% cho biết kết quả khớp chính xác.
tôi coi các tùy chọn sau:
Q = query string
M = matched string
PM = Percentage Match
Option 1. PMi = (1 - Lev_distance(Q, Mi)/Strlen(Q)) * 100
Option 2. PMi = (1 - Lev_distance(Q, Mi)/max(Strlen(Q), strlen(Mi))) * 100
Lựa chọn 1 có khả năng tỷ lệ tiêu cực trong trường hợp khoảng cách lớn hơn độ dài chuỗi tìm kiếm, nơi mà các chuỗi trận đấu dài. Ví dụ truy vấn "ABC" phù hợp với "ABC Corp." sẽ dẫn đến phần trăm đối sánh phủ định.
Phương án 2 dường như không cung cấp tỷ lệ nhất quán trên một tập hợp Mi, vì mỗi phép tính có thể sử dụng mẫu số khác và do đó giá trị phần trăm kết quả sẽ không được chuẩn hóa.
Chỉ có một cách khác tôi có thể nghĩ là bỏ qua sự so sánh của độ lệch cho chuỗi dài, nhưng thay vào đó là khoảng cách so sánh của kết quả "N" trên cùng với xếp hạng phần trăm nghịch đảo (xếp hạng 100 phần trăm).
Mọi suy nghĩ? Có cách tiếp cận tốt hơn? Tôi phải mất một cái gì đó như Levenshtein khoảng cách có lẽ là thuật toán phổ biến nhất cho các trận đấu mờ và điều này phải là một vấn đề rất phổ biến.
gì về lựa chọn 1 của bạn nhưng khi kết quả là tiêu cực sau đó chỉ cần trả về 0? PS: Tôi đã đăng vấn đề cũng ở đây http://math.stackexchange.com/questions/1776860/convert-levenshtein-distance-to-percents –
Tôi không hiểu whats vấn đề với Option2 như tôi đã thực hiện chính xác cùng một logic bạn mô tả trên nó và dường như hoạt động đúng. Bạn có thể giải thích nó tốt hơn không? – Roberto14