อ่าน 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 ]ตารางนี้สรุปกฎส่วนใหญ่ในการใช้งานดั้งเดิม:
- ลบตัวอักษรที่ซ้ำกันที่อยู่ติดกัน ยกเว้นตัว C
- ถ้าคำนั้นขึ้นต้นด้วย 'KN', 'GN', 'PN', 'AE', 'WR' ให้ตัดอักษรตัวแรกออก
- ตัดตัวอักษร 'B' ออกหากอยู่หลังตัวอักษร 'M' ที่ท้ายคำ
- ตัวอักษร 'C' จะแปลงเป็น 'X' หากตามด้วย 'IA' หรือ 'H' (ยกเว้นในกรณีหลัง หากเป็นส่วนหนึ่งของ '-SCH-' จะแปลงเป็น 'K') ตัวอักษร 'C' จะแปลงเป็น 'S' หากตามด้วย 'I', 'E' หรือ 'Y' มิฉะนั้น 'C' จะแปลงเป็น 'K'
- ตัวอักษร 'D' จะแปลงเป็น 'J' หากตามด้วย 'GE', 'GY' หรือ 'GI' มิฉะนั้น 'D' จะแปลงเป็น 'T'
- ตัด 'G' ออกหากตามด้วย 'H' และ 'H' ไม่ได้อยู่ท้ายคำหรือหน้าสระ ตัด 'G' ออกหากตามด้วย 'N' หรือ 'NED' และ 'H' อยู่ท้ายคำ
- ตัวอักษร 'G' จะเปลี่ยนเป็น 'J' ถ้าอยู่หน้า 'I', 'E' หรือ 'Y' และไม่ได้อยู่ใน 'GG' มิฉะนั้น 'G' จะเปลี่ยนเป็น 'K'
- ตัดตัว 'H' ออกถ้าอยู่หลังสระ ไม่ใช่ก่อนสระ
- 'CK' แปลงเป็น 'K'
- 'PH' เปลี่ยนเป็น 'F'
- 'Q' แปลงเป็น 'K'
- ตัวอักษร 'S' จะเปลี่ยนเป็น 'X' หากตามด้วย 'H', 'IO' หรือ 'IA'
- ตัวอักษร 'T' จะเปลี่ยนเป็น 'X' หากตามด้วย 'IA' หรือ 'IO' ตัวอักษร 'TH' จะเปลี่ยนเป็น '0' และตัดตัวอักษร 'T' ออกหากตามด้วย 'CH'
- ตัวอักษร 'V' เปลี่ยนเป็น 'F'
- 'WH' จะเปลี่ยนเป็น 'W' ถ้าอยู่ต้นคำ และตัด 'W' ออกถ้าไม่มีสระตามหลัง
- ถ้า 'X' อยู่ด้านหน้า จะเปลี่ยนเป็น 'S' แต่ถ้าอยู่ด้านหน้า จะเปลี่ยนเป็น 'KS'
- ตัดตัว 'Y' ออกหากไม่มีสระตามหลัง
- ตัวอักษร 'Z' แปลงเป็น 'S'
- ตัดสระทั้งหมดออก ยกเว้นสระที่อยู่ต้นคำ
ตารางนี้ไม่ได้แสดงรายละเอียดทั้งหมดของอัลกอริทึม 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 ที่ควรได้รับการแก้ไข ข้อความต่อไปนี้เป็นความจริง:
- ทั้งหมดนี้ได้รับการออกแบบมาเพื่อใช้กับคำศัพท์ทั่วไปที่ใช้ในพจนานุกรม ไม่ใช่แค่ชื่อบุคคล และ
- อัลกอริทึม 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
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เมตาโฟน
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 ปรับปรุงการเข้ารหัสเสียงของคำในภาษาอังกฤษ คำที่ไม่ใช่ภาษาอังกฤษที่ชาวอเมริกันคุ้นเคย...