Saya memiliki banyak dokumen, yang memuat banyak pasangan nilai kunci di dalamnya. Kunci mungkin tidak unik sehingga mungkin ada beberapa kunci dari jenis yang sama dengan nilai yang berbeda.
Saya ingin membandingkan kesamaan kunci antara 2 dokumen. Lebih khusus kesamaan string dari nilai-nilai ini. Saya berpikir untuk menggunakan sesuatu seperti Algoritma Smith-Waterman untuk membandingkan kesamaan.
Jadi saya telah menggambar bagaimana saya berpikir tentang merepresentasikan data -
Nilai-nilai dalam sel adalah hasil dari algoritma smith-waterman (atau beberapa metrik kesamaan string).
Gambar yang matriks ini mewakili jenis kunci "hal-hal" Saya kemudian perlu menambahkan skor kesamaan "hal" ke dalam vektor 0 atau 1. Thats ok.
Apa yang saya tidak tahu adalah bagaimana saya menentukan apakah matriksnya sama atau tidak mirip - idealnya saya ingin mengkonversi matriks ke angka antara 0 dan 1 dan kemudian saya akan menetapkan ambang batas untuk mencetaknya sebagai 0 atau 1.
Adakah ide bagaimana saya bisa membuat skor matriks? Adakah yang tahu algoritma yang melakukan hal semacam ini (jelas hal-hal seperti bagaimana smith waterman bekerja adalah sesuatu yang berlaku).
sumber
Jawaban:
Seperti yang saya pahami, Dokumen 1 dan Dokumen 2 mungkin memiliki jumlah kunci yang berbeda. Dan Anda harus mendapatkan evaluasi kesamaan akhir antara 0 dan 1. Jika demikian, saya akan mengusulkan algoritma berikut:
Estimasi akhir akan sama dengan 1, jika kedua dokumen memiliki panjang yang sama, dan setiap kata dari Doc 1 memiliki padanan dalam Doc 2.
Anda belum menyebutkan perangkat lunak, Anda menggunakan, tapi di sini adalah contoh fungsi R , menghitung kesamaan tersebut (dibutuhkan objek dari matriks kelas sebagai input):
Dengan python -
sumber
Jika tujuan Anda adalah untuk mengubah matriks Anda menjadi angka (ukuran kesamaan Anda), Anda mungkin ingin menggunakan norma matriks .
Misalnya, menggunakan norma Frobenius pada contoh Anda akan mengembalikan 1,488086.
sumber
Saya pikir tujuan Anda adalah untuk menemukan betapa miripnya dua dokumen, jika itu masalahnya saya sarankan menerapkan algoritma berikut:
Pendekatan ini memberikan seberapa mirip Doc1 dengan WR2. (Nilai Kesamaan akan berbeda untuk Doc2 wrt Doc1 jika bukan matriks kuadrat)
Ini berarti Doc2 adalah 82,67% mirip dengan Doc1 . Kesamaan tidak dapat melampaui nilai ini karena kami memilih maks item serupa di setiap baris.
sumber