กลับไปหน้าบทความ

อ่าน 4 นาที

เมตาโฟน

Metaphone เป็น อัลกอริธึมทางสัทศาสตร์ ที่เผยแพร่โดย Lawrence Philips ในปี 1990 สำหรับการจัดทำดัชนีคำตามการออกเสียงภาษาอังกฤษ [ 1 ] โดยพื้นฐานแล้วเป็นการปรับปรุง อัลกอริธึม Soundex...

เมตาโฟน

Metaphoneเป็นอัลกอริธึมทางสัทศาสตร์ที่เผยแพร่โดย Lawrence Philips ในปี 1990 สำหรับการจัดทำดัชนีคำตามการออกเสียงภาษาอังกฤษ[ 1 ]โดยพื้นฐานแล้วเป็นการปรับปรุง อัลกอริธึม Soundexโดยใช้ข้อมูลเกี่ยวกับการเปลี่ยนแปลงและความไม่สอดคล้องกันในการสะกดและการออกเสียงภาษาอังกฤษเพื่อสร้างการเข้ารหัสที่แม่นยำยิ่งขึ้น ซึ่งทำงานได้ดีกว่าในการจับคู่คำและชื่อที่ออกเสียงคล้ายกัน เช่นเดียวกับ Soundex คำที่ออกเสียงคล้ายกันควรใช้คีย์เดียวกัน Metaphone มีให้ใช้งานเป็นตัวดำเนินการในตัวในระบบจำนวนหนึ่ง

ต่อมาฟิลิปส์ได้สร้างอัลกอริทึมเวอร์ชันใหม่ ซึ่งเขาตั้งชื่อว่าDouble Metaphoneต่างจากอัลกอริทึมดั้งเดิมที่จำกัดการใช้งานเฉพาะภาษาอังกฤษเท่านั้น เวอร์ชันนี้คำนึงถึงลักษณะเฉพาะของการสะกดคำในภาษาอื่นๆ อีกหลายภาษา ในปี 2009 ฟิลิปส์ได้เปิดตัวเวอร์ชันที่สามชื่อ Metaphone 3 ซึ่งมีความแม่นยำประมาณ 99% สำหรับคำภาษาอังกฤษ คำที่ไม่ใช่ภาษาอังกฤษที่ชาวอเมริกันคุ้นเคย และชื่อและนามสกุลที่พบได้ทั่วไปในสหรัฐอเมริกา โดยได้รับการพัฒนาตามมาตรฐานทางวิศวกรรมสมัยใหม่โดยใช้ชุดทดสอบที่มีการเข้ารหัสที่ถูกต้องที่เตรียมไว้แล้ว

ขั้นตอน

รหัส Metaphone ดั้งเดิมใช้ สัญลักษณ์ พยัญชนะ 16 ตัว 0BFHJKLMNPRSTWXY [ 2 ] '0' แทน " th " (เป็นการ ประมาณค่า ASCIIของΘ ) 'X' แทน " sh " หรือ " ch " และตัวอื่นๆ แทนการออกเสียงภาษาอังกฤษตามปกติสระ AEIOU ก็ถูกใช้เช่นกัน แต่ใช้เฉพาะที่จุดเริ่มต้นของรหัส[ 3 ]ตารางนี้สรุปกฎส่วนใหญ่ในการใช้งานดั้งเดิม:

  1. ลบตัวอักษรที่ซ้ำกันที่อยู่ติดกัน ยกเว้นตัว C
  2. ถ้าคำนั้นขึ้นต้นด้วย 'KN', 'GN', 'PN', 'AE', 'WR' ให้ตัดอักษรตัวแรกออก
  3. ตัดตัวอักษร 'B' ออกหากอยู่หลังตัวอักษร 'M' ที่ท้ายคำ
  4. ตัวอักษร 'C' จะแปลงเป็น 'X' หากตามด้วย 'IA' หรือ 'H' (ยกเว้นในกรณีหลัง หากเป็นส่วนหนึ่งของ '-SCH-' จะแปลงเป็น 'K') ตัวอักษร 'C' จะแปลงเป็น 'S' หากตามด้วย 'I', 'E' หรือ 'Y' มิฉะนั้น 'C' จะแปลงเป็น 'K'
  5. ตัวอักษร 'D' จะแปลงเป็น 'J' หากตามด้วย 'GE', 'GY' หรือ 'GI' มิฉะนั้น 'D' จะแปลงเป็น 'T'
  6. ตัด 'G' ออกหากตามด้วย 'H' และ 'H' ไม่ได้อยู่ท้ายคำหรือหน้าสระ ตัด 'G' ออกหากตามด้วย 'N' หรือ 'NED' และ 'H' อยู่ท้ายคำ
  7. ตัวอักษร 'G' จะเปลี่ยนเป็น 'J' ถ้าอยู่หน้า 'I', 'E' หรือ 'Y' และไม่ได้อยู่ใน 'GG' มิฉะนั้น 'G' จะเปลี่ยนเป็น 'K'
  8. ตัดตัว 'H' ออกถ้าอยู่หลังสระ ไม่ใช่ก่อนสระ
  9. 'CK' แปลงเป็น 'K'
  10. 'PH' เปลี่ยนเป็น 'F'
  11. 'Q' แปลงเป็น 'K'
  12. ตัวอักษร 'S' จะเปลี่ยนเป็น 'X' หากตามด้วย 'H', 'IO' หรือ 'IA'
  13. ตัวอักษร 'T' จะเปลี่ยนเป็น 'X' หากตามด้วย 'IA' หรือ 'IO' ตัวอักษร 'TH' จะเปลี่ยนเป็น '0' และตัดตัวอักษร 'T' ออกหากตามด้วย 'CH'
  14. ตัวอักษร 'V' เปลี่ยนเป็น 'F'
  15. 'WH' จะเปลี่ยนเป็น 'W' ถ้าอยู่ต้นคำ และตัด 'W' ออกถ้าไม่มีสระตามหลัง
  16. ถ้า 'X' อยู่ด้านหน้า จะเปลี่ยนเป็น 'S' แต่ถ้าอยู่ด้านหน้า จะเปลี่ยนเป็น 'KS'
  17. ตัดตัว 'Y' ออกหากไม่มีสระตามหลัง
  18. ตัวอักษร 'Z' แปลงเป็น 'S'
  19. ตัดสระทั้งหมดออก ยกเว้นสระที่อยู่ต้นคำ

ตารางนี้ไม่ได้แสดงรายละเอียดทั้งหมดของอัลกอริทึม Metaphone ดั้งเดิม และไม่สามารถเขียนโค้ดอัลกอริทึมได้อย่างถูกต้องจากตารางนี้ Metaphone ดั้งเดิมมีข้อผิดพลาดมากมายและถูกแทนที่ด้วย Double Metaphone และต่อมา Double Metaphone และ Metaphone ดั้งเดิมก็ถูกแทนที่ด้วย Metaphone 3 ซึ่งแก้ไขข้อผิดพลาดในการเขียนโค้ดหลายพันรายการที่เกิดขึ้นในสองเวอร์ชันแรก

ในการใช้งาน Metaphone โดยไม่ต้องซื้อสำเนา (ซอร์สโค้ด) ของ Metaphone 3 สามารถใช้การใช้งานอ้างอิง ของ Double Metaphone ได้ [ 4 ] หรืออีกทางเลือกหนึ่งคือ Metaphone 3 เวอร์ชัน 2.1.3 ซึ่งเป็นเวอร์ชันก่อนหน้าในปี 2009 ที่ไม่มีการแก้ไขการเข้ารหัสจำนวนหนึ่งที่ทำในเวอร์ชันปัจจุบัน เวอร์ชัน 2.5.4 ได้รับการเผยแพร่ภายใต้เงื่อนไขของใบอนุญาต BSDผ่านโครงการ OpenRefine [ 5 ]

ดับเบิลเมตาโฟน

อัลกอริทึมการเข้ารหัสเสียงแบบ Double Metaphone เป็นอัลกอริทึมรุ่นที่สอง การใช้งานได้รับการอธิบายไว้ในวารสาร C/C++ Users Journalฉบับ เดือนมิถุนายน พ.ศ. 2543 [ 6 ]โดยมีการปรับปรุงการออกแบบพื้นฐานหลายประการเมื่อเทียบกับอัลกอริทึม Metaphone ดั้งเดิม

เรียกว่า "Double" เพราะสามารถส่งคืนทั้งรหัสหลักและรหัสรองสำหรับสตริงได้ ซึ่งใช้แก้ปัญหาในกรณีที่คลุมเครือบางกรณี รวมถึงกรณีที่มีนามสกุลหลายแบบที่มีบรรพบุรุษร่วมกัน ตัวอย่างเช่น การเข้ารหัสชื่อ "Smith" จะได้รหัสหลักเป็นSM0และรหัสรองเป็นXMTในขณะที่ชื่อ "Schmidt" จะได้รหัสหลักเป็นXMTและรหัสรองเป็นSMT —ทั้งสองชื่อมีXMTเหมือนกัน

Double Metaphone พยายามจัดการกับความผิดปกติมากมายในภาษาอังกฤษที่มี ต้นกำเนิดจาก กลุ่มภาษาสลาเยอรมันเซลติกกรีกฝรั่งเศสอิตาลีสเปนจีน และ ภาษาอื่นๆ ดังนั้นจึงใช้ชุดกฎการเข้ารหัสที่ซับซ้อนกว่ารุ่นก่อนหน้ามาก ตัวอย่างเช่น มันทดสอบบริบทการใช้ตัวอักษร C เพียงตัวเดียวประมาณ 100 บริบทที่แตกต่างกัน

เมตาโฟน 3

เวอร์ชันมืออาชีพได้รับการเผยแพร่ในเดือนตุลาคม 2552 ซึ่งพัฒนาโดยผู้เขียนคนเดียวกันคือ Lawrence Philips เป็นผลิตภัณฑ์เชิงพาณิชย์ที่จำหน่ายในรูปแบบซอร์สโค้ด Metaphone 3 ปรับปรุงการเข้ารหัสเสียงของคำในภาษาอังกฤษ คำที่ไม่ใช่ภาษาอังกฤษที่ชาวอเมริกันคุ้นเคย และชื่อและนามสกุลที่พบได้ทั่วไปในสหรัฐอเมริกา ปรับปรุงการเข้ารหัสสำหรับชื่อเฉพาะโดยเฉพาะในระดับที่สำคัญ[ 7 ]ผู้เขียนอ้างว่าโดยทั่วไปแล้วจะปรับปรุงความแม่นยำสำหรับคำทั้งหมดจากประมาณ 89% ของ Double Metaphone เป็น 98% นักพัฒนาสามารถตั้งค่าสวิตช์ในโค้ดเพื่อให้ขั้นตอนวิธีเข้ารหัสคีย์ Metaphone 1) โดยคำนึงถึงสระที่ไม่ใช่สระเริ่มต้น และ 2) เข้ารหัสพยัญชนะเสียงก้องและเสียงไม่ก้องแตกต่างกัน ซึ่งช่วยให้ชุดผลลัพธ์มีความชัดเจนมากขึ้นหากนักพัฒนาพบว่าผลการค้นหามีคำมากเกินไปที่ไม่คล้ายกับคำค้นหามากพอ[ 8 ] Metaphone 3 จำหน่ายในรูปแบบซอร์สโค้ด C++, Java, C#, PHP, Perl และPL/SQLรวมถึง wrapper Ruby และ Python ที่เข้าถึง jar ของ Java และ Metaphone 3 สำหรับการออกเสียงภาษาสเปนและเยอรมันก็มีให้ใช้งานในรูปแบบซอร์สโค้ด Java และ C# [ 9 ]การแก้ไขล่าสุดของอัลกอริทึม Metaphone 3 คือเวอร์ชัน 2.5.4 ซึ่งเผยแพร่ในเดือนมีนาคม 2015 ซอร์สโค้ด Java ของ Metaphone3 เวอร์ชันก่อนหน้า 2.1.3 ซึ่งขาดการแก้ไขการเข้ารหัสจำนวนมากที่ทำในเวอร์ชันปัจจุบัน เวอร์ชัน 2.5.4 ได้ถูกรวมไว้เป็นส่วนหนึ่งของโครงการ OpenRefine และสามารถดูได้โดยสาธารณะ[ 10 ]

ความเข้าใจผิดทั่วไป

มีความเข้าใจผิดบางประการเกี่ยวกับอัลกอริทึมของ Metaphone ที่ควรได้รับการแก้ไข ข้อความต่อไปนี้เป็นความจริง:

  1. ทั้งหมดนี้ได้รับการออกแบบมาเพื่อใช้กับคำศัพท์ทั่วไปที่ใช้ในพจนานุกรม ไม่ใช่แค่ชื่อบุคคล และ
  2. อัลกอริทึม Metaphone ไม่ได้สร้างการแสดงเสียงตามหลักสัทศาสตร์ของคำและชื่อที่ป้อนเข้ามา แต่ผลลัพธ์ที่ได้คือการแสดงเสียงตามหลักสัทศาสตร์โดยประมาณโดยเจตนาตามมาตรฐานนี้:
  • คำที่ขึ้นต้นด้วยเสียงสระจะมีตัวอักษร 'A' ซึ่งแทนสระใดๆ เป็นอักขระตัวแรกของการเข้ารหัส (ใน Double Metaphone และ Metaphone 3 - Metaphone รุ่นดั้งเดิมจะคงไว้เฉพาะสระจริงเท่านั้น)
  • สระที่ตามหลังเสียงสระเริ่มต้นจะถูกละเลยและไม่ถูกเข้ารหัส และ
  • คู่พยัญชนะเสียงก้อง/เสียงไม่ก้องจะถูกกำหนดให้ใช้การเข้ารหัสเดียวกัน (ตัวอย่างของคู่พยัญชนะเสียงก้อง/เสียงไม่ก้อง ได้แก่ D/T, B/P, Z/S, G/K เป็นต้น)

การเข้ารหัสโดยประมาณนี้จำเป็นเพื่ออธิบายวิธีการที่ผู้พูดภาษาอังกฤษออกเสียงแตกต่างกัน และสะกดผิดหรือเปลี่ยนแปลงคำและชื่อที่พวกเขากำลังพยายามสะกด สระนั้นแน่นอนว่ามีความแปรปรวนสูงมาก ผู้พูดภาษาอังกฤษชาวอังกฤษมักบ่นว่าชาวอเมริกันดูเหมือนจะออกเสียง 'T' เหมือนกับ 'D' ลองพิจารณาด้วยว่าผู้พูดภาษาอังกฤษทุกคนมักออกเสียง 'Z' ในที่ที่เขียนว่า 'S' เกือบทุกครั้งเมื่อคำนามที่ลงท้ายด้วยพยัญชนะเสียงก้องหรือเสียงเหลวถูกทำให้เป็นพหูพจน์ ตัวอย่างเช่น "seasons", "beams", "examples" เป็นต้น การไม่เข้ารหัสสระหลังจากเสียงสระเริ่มต้นจะช่วยจัดกลุ่มคำที่สระและพยัญชนะอาจสลับตำแหน่งกันในการสะกดผิดหรือการออกเสียงที่แตกต่างกัน

เครื่องวัดเสียงของภาษาอื่นๆ

Metaphone มีประโยชน์สำหรับภาษาอังกฤษหลากหลายรูปแบบและภาษาอื่นๆ โดยได้รับความนิยมมากกว่าSoundexในหลาย ภาษาในกลุ่ม อินโด-ยุโรปในทางกลับกัน การเข้ารหัสเสียงแบบหยาบๆ ทำให้เกิดการพึ่งพาภาษา หรือในกรณีของภาษาถิ่น ก็คือการพึ่งพาผู้พูดภาษาโดยเฉลี่ย โดยเฉพาะในภาษาถิ่นที่ไม่ใช่ภาษาอังกฤษ

บางทีตัวอย่างแรกของการปรับใช้ระบบเมตาโฟนที่ไม่ใช่ภาษาอังกฤษอย่างมีเสถียรภาพก็คือภาษาโปรตุเกสบราซิลซึ่งมีต้นกำเนิดราวปี 2008ในฐานะโซลูชันฐานข้อมูลใน เทศบาลเมือง วาร์เซอา เปาลิสตา ประเทศบราซิล และได้พัฒนามาเป็นอัลกอริทึมใน ปัจจุบันmetaphone-ptbr

ดูเพิ่มเติม

  • บทความเรื่อง "อัลกอริทึมการค้นหา Double MetaphoneบนWayback Machine " (เก็บถาวรเมื่อ 3 พฤษภาคม 2012) โดย Lawrence Phillips, 1 มิถุนายน 2000, Dr. Dobb's, บทความต้นฉบับ

อัลกอริทึม Metaphone สำหรับภาษาอื่นๆ

  • ภาษาโปรตุเกสบราซิลในภาษาซี Metaphone สำหรับภาษาโปรตุเกสบราซิลในภาษาซี พร้อมการพอร์ตไปยัง PHP และ PostgreSQL
  • ภาษาโปรตุเกสบราซิลในภาษาชวา Metaphone สำหรับภาษาโปรตุเกสบราซิลในภาษาชวา
  • แอป Metaphone ภาษาสเปนใน Python
  • อัลกอริทึม Double Metaphone สำหรับภาษาเบงกาลี
  • อัลกอริทึม Double Metaphone สำหรับภาษาอัมฮาริก
  • โทรศัพท์ Metaphone ของรัสเซียใน Ruby
  • ดับเบิลเมตาโฟนและเมตาโฟนใน JavaScript
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Metaphone&oldid=1341468784 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เมตาโฟน

Metaphone เป็น อัลกอริธึมทางสัทศาสตร์ ที่เผยแพร่โดย Lawrence Philips ในปี 1990 สำหรับการจัดทำดัชนีคำตามการออกเสียงภาษาอังกฤษ [ 1 ] โดยพื้นฐานแล้วเป็นการปรับปรุง อัลกอริธึม Soundex...

ขั้นตอน

รหัส Metaphone ดั้งเดิมใช้ สัญลักษณ์ พยัญชนะ 16 ตัว 0BFHJKLMNPRSTWXY [ 2 ] '0' แทน " th " (เป็นการ ประมาณค่า ASCII ของ Θ ) 'X' แทน " sh " หรือ " ch " และตัวอื่นๆ แทนการออกเสียงภาษาอังกฤษตามปกติ สระ AEIOU ก็ถูกใช้เช่นกัน แต่ใช้เฉพาะที่จุดเริ่มต้นของรหัส [ 3 ]...

ดับเบิลเมตาโฟน

อัลกอริทึมการเข้ารหัสเสียงแบบ Double Metaphone เป็นอัลกอริทึมรุ่นที่สอง การใช้งานได้รับการอธิบายไว้ใน วารสาร C/C++ Users Journal ฉบับ เดือนมิถุนายน พ.ศ. 2543 [ 6 ] โดยมีการปรับปรุงการออกแบบพื้นฐานหลายประการเมื่อเทียบกับอัลกอริทึม Metaphone ดั้งเดิม

เมตาโฟน 3

เวอร์ชันมืออาชีพได้รับการเผยแพร่ในเดือนตุลาคม 2552 ซึ่งพัฒนาโดยผู้เขียนคนเดียวกันคือ Lawrence Philips เป็นผลิตภัณฑ์เชิงพาณิชย์ที่จำหน่ายในรูปแบบซอร์สโค้ด Metaphone 3 ปรับปรุงการเข้ารหัสเสียงของคำในภาษาอังกฤษ คำที่ไม่ใช่ภาษาอังกฤษที่ชาวอเมริกันคุ้นเคย...