Khi sử dụng nhiều chương trình trong terminal, đôi khi bạn nhập sai lệnh và chương trình sẽ báo lỗi. Tuy nhiên, một số chương trình như Git hay npm lại có thể gợi ý những lệnh giống với lệnh bạn đã nhập sai, hoặc thậm chí tự sửa lỗi gõ sai và tự động bỏ qua một cách hợp lý. Vậy chính xác thì những tính năng này hoạt động như thế nào? Bài viết sẽ thử triển khai một tính năng gợi ý lệnh tương tự để tìm hiểu nguyên lý của nó.
- Định nghĩa vấn đề
→ Bài toán tìm lệnh tương tự có thể được chuyển thành “bài toán kiểm tra độ tương đồng giữa hai chuỗi”.
- Khoảng cách chỉnh sửa (Edit distance)
→ Khoảng cách Levenshtein (Levenshtein distance)
- Giải quyết vấn đề
5 bình luận
Làm sao để gợi ý các lệnh tương tự nhỉ?
Không thể không nhắc đến repo này. https://github.com/nvbn/thefuck#how-it-works
Tôi đã cười khá lâu khi xem ví dụ ở trên cùng haha
Không phải chỉ mỗi mình tôi gõ sai..
Một câu chuyện rất thú vị. Khoảng cách Levenshtein... tôi đã học được một điều mới.
Tôi đã đọc rất thú vị.
Nhưng tôi cũng tò mò không biết liệu git có thực sự được triển khai theo cách này hay không.
Có vẻ như cũng có thể áp dụng cách thu thập và xử lý trải nghiệm của người dùng theo hướng thống kê.
git sử dụng khoảng cách Levenshtein. Nếu xem mục git trong liên kết bên dưới, bạn sẽ thấy phần mã nguồn tương ứng của git. :)
https://vishnubharathi.codes/blog/levenshtein-distance/
Cách tận dụng trải nghiệm của người dùng theo hướng thống kê cũng có vẻ thú vị, nhưng có lẽ vì a) các lệnh git ngắn và b) số lượng có hạn, nên chỉ với Levenshtein cũng đã đủ để thực hiện điều mong muốn.