Pengenalan persamaan jaro–winkler (definisi dan contoh)


Dalam statistik, kesamaan Jaro-Winkler adalah cara untuk mengukur kesamaan antara dua string.

Kesamaan Jaro (sim j ) antara dua string didefinisikan sebagai:

sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )

Emas:

  • m : Jumlah karakter yang cocok
    • Dua karakter s 1 dan s 2 dianggap cocok jika sama dan berjarak kurang dari [max(|s 1 |, |s 2 |) / 2] – berjarak 1 karakter.
  • |s 1 | , |s 2 | : Panjang senar pertama dan kedua
  • t : Jumlah transposisi
    • Dihitung sebagai jumlah karakter yang cocok (tetapi dalam urutan yang berbeda) dibagi 2.

Kesamaan Jaro-Winkler (sim w ) didefinisikan sebagai:

sim w = sim j + lp(1 – sim j )

Emas:

  • sim j : Kesamaan Jaro antara dua string, s 1 dan s 2
  • l : Panjang awalan umum di awal string (maks 4 karakter)
  • p : Faktor penskalaan yang menunjukkan seberapa besar skor disesuaikan ke atas agar memiliki awalan yang sama. Biasanya ini didefinisikan sebagai p = 0,1 dan tidak boleh melebihi p = 0,25.

Kesamaan Jaro-Winkler antara dua string selalu antara 0 dan 1 dimana:

  • 0 menunjukkan tidak ada kesamaan antar string
  • 1 menunjukkan bahwa stringnya sama persis

Catatan : Jarak Jaro-Winkler akan didefinisikan sebagai 1 – sim w .

Contoh berikut menunjukkan cara menghitung kesamaan Jaro-Winkler antara dua string dalam praktiknya.

Contoh: menghitung kemiripan Jaro-Winkler antara dua string

Misalkan kita mempunyai dua string berikut:

  • Saluran 1 (s 1 ): mouse
  • Saluran 2 (s 2 ): bisu

Pertama, mari kita hitung kemiripan Jaro antara kedua string ini:

sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )

Emas:

  • m : Jumlah karakter yang cocok
    • Dua karakter s 1 dan s 2 dianggap cocok jika sama dan berjarak kurang dari [max(|s 1 |, |s 2 |) / 2] – berjarak 1 karakter.

Dalam hal ini, [maks(|s 1 |, |s 2 |) / 2] – 1 dihitung sebagai 5/2 – 1 = 1,5. Kami akan mendefinisikan tiga huruf yang sesuai: m, u, e. Jadi, m = 3 .

  • |s 1 | , |s 2 | : Panjang senar pertama dan kedua

Dalam hal ini, |s 1 | = 5 dan |s 1 | = 4 .

  • t : Jumlah transposisi
    • Dihitung sebagai jumlah karakter yang cocok (tetapi dalam urutan yang berbeda) dibagi 2.

Dalam hal ini terdapat tiga karakter yang cocok tetapi urutannya sudah sama, jadi t = 0 .

Jadi, kita akan menghitung kemiripan Jaro sebagai berikut:

sim j = 1/3 * (3/5 + 3/4 + (3-0)/3) = 0,78333.

Selanjutnya mari kita hitung kemiripan Jaro-Winkler (sim w ) sebagai berikut:

sim w = sim j + lp(1 – sim j )

Dalam hal ini, kami akan menghitung:

sim w = 0,78333 + (1)*(0,1)(1 – 0,78333) = 0,805.

Kemiripan Jaro-Winkler antara kedua rantai tersebut adalah 0,805 .

Karena nilai ini mendekati 1, ini memberitahu kita bahwa kedua string tersebut sangat mirip.

Kita dapat mengkonfirmasi kebenarannya dengan menghitung kesamaan Jaro-Winkler antara dua string di R:

 library (stringdist)

#calculate Jaro-Winkler similarity between 'mouse' and 'mute'
1 - stringdist("mouse", "mute", method = "jw", p= 0.1 )

[1] 0.805

Ini sesuai dengan nilai yang kami hitung secara manual.

Sumber daya tambahan

Tutorial berikut menjelaskan cara menghitung metrik kesamaan lainnya:

Pengantar ketidaksamaan Bray-Curtis
Pengantar indeks kesamaan Jaccard

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *