บทนำเกี่ยวกับความคล้ายคลึงกันของ jaro – winkler (คำจำกัดความและตัวอย่าง)
ในสถิติ ความคล้ายคลึงกันของ Jaro-Winkler เป็นวิธีหนึ่งในการวัดความคล้ายคลึงกันระหว่างสองสาย
ความคล้ายคลึงกันของ Jaro (sim j ) ระหว่างสองสายถูกกำหนดเป็น:
ซิม j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )
ทอง:
- m : จำนวนอักขระที่ตรงกัน
- อักขระสองตัวของ s 1 และ s 2 จะถือว่าตรงกันหากเหมือนกันและไม่เกิน [max(|s 1 |, |s 2 |) / 2] – 1 อักขระจากกัน
- |s 1 | , |s 2 | : ความยาวของสตริงที่หนึ่งและที่สองตามลำดับ
- t : จำนวนการขนย้าย
- คำนวณจากจำนวนอักขระที่ตรงกัน (แต่เรียงลำดับต่างกัน) หารด้วย 2
ความคล้ายคลึงกันของ Jaro-Winkler (sim w ) ถูกกำหนดเป็น:
ซิม w = ซิม j + lp(1 – ซิม j )
ทอง:
- sim j : ความคล้ายคลึงกันของ Jaro ระหว่างสองสาย s 1 และ s 2
- l : ความยาวของคำนำหน้าทั่วไปที่จุดเริ่มต้นของสตริง (สูงสุด 4 ตัวอักษร)
- p : ตัวคูณสเกลที่ระบุว่าคะแนนจะถูกปรับขึ้นไปมากเพียงใดเพื่อให้มีคำนำหน้าร่วมกัน โดยทั่วไปจะกำหนดเป็น p = 0.1 และไม่ควรเกิน p = 0.25
ความคล้ายคลึงกันของ Jaro-Winkler ระหว่างสองสายจะอยู่ระหว่าง 0 ถึง 1 เสมอโดยที่:
- 0 บ่งชี้ว่าไม่มีความคล้ายคลึงกันระหว่างสตริง
- 1 แสดงว่าสตริงตรงกันทุกประการ
หมายเหตุ : ระยะทาง Jaro-Winkler จะกำหนดเป็น 1 – sim w
ตัวอย่างต่อไปนี้แสดงวิธีคำนวณความคล้ายคลึงกันของ Jaro-Winkler ระหว่างสองสตริงในทางปฏิบัติ
ตัวอย่าง: การคำนวณความคล้ายคลึงกันของ Jaro-Winkler ระหว่างสองสาย
สมมติว่าเรามีสองสายต่อไปนี้:
- ช่อง 1 (s 1 ): เมาส์
- ช่อง 2 (s 2 ): ปิดเสียง
ขั้นแรก มาคำนวณความคล้ายคลึงกันของ Jaro ระหว่างสองสายนี้:
ซิม j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )
ทอง:
- m : จำนวนอักขระที่ตรงกัน
- อักขระสองตัวของ s 1 และ s 2 จะถือว่าตรงกันหากเหมือนกันและไม่เกิน [max(|s 1 |, |s 2 |) / 2] – 1 อักขระจากกัน
ในกรณีนี้ [max(|s 1 |, |s 2 |) / 2] – 1 คำนวณเป็น 5/2 – 1 = 1.5 เราจะกำหนดตัวอักษรสามตัวให้สอดคล้องกัน: m, u, e ดังนั้น ม = 3 .
- |s 1 | , |s 2 | : ความยาวของสตริงที่หนึ่งและที่สองตามลำดับ
ในกรณีนี้ |s 1 | = 5 และ |s 1 | = 4 .
- t : จำนวนการขนย้าย
- คำนวณจากจำนวนอักขระที่ตรงกัน (แต่เรียงลำดับต่างกัน) หารด้วย 2
ในกรณีนี้ มีอักขระที่ตรงกันสามตัวแต่อยู่ในลำดับเดียวกันอยู่แล้ว ดังนั้น t = 0
ดังนั้น เราจะคำนวณความคล้ายคลึงของจาโรดังนี้
ซิม เจ = 1/3 * (3/5 + 3/4 + (3-0)/3) = 0.78333
ต่อไป ลองคำนวณความคล้ายคลึงของ Jaro-Winkler (sim w ) ดังต่อไปนี้:
ซิม w = ซิม j + lp(1 – ซิม j )
ในกรณีนี้ เราจะคำนวณ:
ซิม w = 0.78333 + (1)*(0.1)(1 – 0.78333) = 0.805.
ความคล้ายคลึงกันของ Jaro-Winkler ระหว่างสองโซ่คือ 0.805
เนื่องจากค่านี้ใกล้กับ 1 จึงบอกเราว่าสตริงทั้งสองมีความคล้ายคลึงกันมาก
เราสามารถยืนยันได้ว่าสิ่งนี้ถูกต้องโดยการคำนวณความคล้ายคลึงกันของ Jaro-Winkler ระหว่างสองสายใน R:
library (stringdist) #calculate Jaro-Winkler similarity between 'mouse' and 'mute' 1 - stringdist("mouse", "mute", method = "jw", p= 0.1 ) [1] 0.805
ซึ่งสอดคล้องกับค่าที่เราคำนวณด้วยตนเอง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีคำนวณหน่วยวัดความคล้ายคลึงอื่นๆ:
บทนำเกี่ยวกับความแตกต่างของเบรย์-เคอร์ติส
บทนำเกี่ยวกับดัชนีความคล้ายคลึงของ Jaccard