24 คะแนน โดย xguru 2021-08-03 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

เมื่อใช้งานหลายโปรแกรมในเทอร์มินัล บางครั้งเรามักพิมพ์คำสั่งผิดและโปรแกรมก็จะแสดงข้อผิดพลาดขึ้นมา แต่บางโปรแกรม เช่น Git หรือ npm กลับสามารถแนะนำคำสั่งที่คล้ายกับคำสั่งที่เราพิมพ์ผิดได้ หรือบางครั้งก็แก้คำพิมพ์ผิดให้ทันทีและจัดการให้ผ่านไปอย่างเหมาะสมได้เอง ฟีเจอร์แบบนี้จริงๆ แล้วทำงานอย่างไร? บทความนี้จะลองสร้างฟีเจอร์แนะนำคำสั่งที่คล้ายกันขึ้นมาในลักษณะเดียวกัน เพื่อทำความเข้าใจหลักการของมัน

  • นิยามปัญหา

→ ปัญหาการหาคำสั่งที่คล้ายกันสามารถแปลงเป็น “ปัญหาการตรวจสอบความคล้ายคลึงของสตริงสองชุด” ได้

  • ระยะห่างการแก้ไข (Edit distance)

→ ระยะ Levenshtein (Levenshtein distance)

  • แก้ปัญหา

5 ความคิดเห็น

 
roxie 2021-08-03

คงไม่พูดถึง repo นี้ไม่ได้เลยนะครับ

https://github.com/nvbn/thefuck#how-it-works

 
sduck4 2021-08-03

ดูตัวอย่างด้านบนแล้วขำอยู่พักใหญ่เลย 555

ไม่ใช่แค่ฉันคนเดียวที่พิมพ์ผิด..

 
eyelove 2021-08-03

เป็นเรื่องที่น่าสนใจมาก ระยะห่างเลเวนชไตน์... ได้เรียนรู้อะไรใหม่ ๆ เลยนะ

 
nicewook 2021-08-03

อ่านได้อย่างเพลิดเพลินครับ

แต่ก็สงสัยว่า git ถูกพัฒนาด้วยวิธีนี้จริงหรือเปล่า

ดูแล้วก็น่าจะเป็นไปได้เหมือนกันที่จะเก็บรวบรวมประสบการณ์การใช้งานของผู้ใช้ในเชิงสถิติแล้วนำมาประมวลผล

 
sangheestyle 2021-08-03

git ใช้ระยะห่างแบบ Levenshtein ครับ ในลิงก์ด้านล่าง ถ้าดูหัวข้อ git จะมีซอร์สโค้ดส่วนที่เกี่ยวข้องของ git อยู่ด้วย :)

https://vishnubharathi.codes/blog/levenshtein-distance/

แนวทางที่อาศัยประสบการณ์ของผู้ใช้ในเชิงสถิติก็น่าสนใจเหมือนกัน แต่ดูเหมือนว่า a) คำสั่ง git มีความยาวสั้น และ b) จำนวนมีจำกัด เลยทำให้ใช้ Levenshtein ก็เพียงพอที่จะทำสิ่งที่ต้องการได้ครับ