บทนำเกี่ยวกับความคล้ายคลึงกันของ 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *