Saya memiliki daftar string dalam file A
dan file B
. Saya ingin mengambil setiap string dalam file A dan menemukan string yang paling mirip di file B.
Untuk ini, saya mencari alat yang menyediakan perbandingan fuzzy.
sebagai contoh:
$ fuzzy_compare "Some string" "Some string"
100
Di mana 100 adalah beberapa rasio kesetaraan. Misalnya jarak Levenshtein .
Apakah ada utilitas? Saya tidak ingin menemukan kembali roda.
Jawaban:
Saya menemukan halaman ini yang menyediakan implementasi algoritma jarak Levenshtein dalam berbagai bahasa. Jadi, misalnya dalam bash, Anda dapat melakukan:
Simpan itu sebagai
~/bin/levenshtein.sh
, membuatnya dapat dieksekusi (chmod a+x ~/bin/levenshtein.sh
) dan jalankan di dua file Anda. Sebagai contoh:Itu bagus untuk beberapa pola tetapi akan menjadi sangat lambat untuk file yang lebih besar. Jika itu masalah, coba salah satu implementasi dalam bahasa lain. Misalnya Perl:
Seperti di atas, simpan skrip sebagai
~/bin/levenshtein.pl
dan buat itu dapat dieksekusi dan jalankan dengan dua file sebagai argumen:Bahkan dalam file yang sangat kecil yang digunakan di sini, pendekatan Perl 10 kali lebih cepat daripada yang bash:
sumber