Soundex • Alexander Piperski •ปัญหาทางวิทยาศาสตร์เกี่ยวกับ "องค์ประกอบ" •ภาษาศาสตร์

Soundex

Soundex เป็นอัลกอริทึมสำหรับการเข้ารหัสชื่อที่ถูกต้อง มันถูกสร้างขึ้นในปี 1918-1922 ในสหรัฐฯ Robert Russell และ Margaret King Odell เพื่ออำนวยความสะดวกในการค้นหาชื่อสุดท้าย ในช่วงกลางของศตวรรษที่ 20 Soundex ใช้กันอย่างแพร่หลายในประเทศสหรัฐอเมริกาในการวิเคราะห์ผลการสำรวจสำมะโนประชากรของประชากรใน พ.ศ. 2433-2463 ด้านล่างเป็นตัวอย่างของบัตรสำรวจสำมะโนประชากร 1910 ที่นี่คุณจะเห็นว่ารหัส Soundex สำหรับชื่อ Wilson ดูเหมือนว่า W425:

งาน

รายชื่อนามสกุลและรหัส Soundex ที่สอดคล้องกันจะได้รับตามลำดับที่สับสน อักขระบางตัวหายไป:

Allaway, เดอร์สัน, Ashcombe, บักกิ้งแฮม, พ่อค้าหาบเร่, Colquhoun, อีแวนส์, Fairwright, Kingscott, ลูอิส, Littlejohns, Stanmore, สตับส์, Tocher, ท็องส์, Whytehead

S312, T␣6␣, ␣5␣3, C42␣, T520, L␣42, A536, C155, 623, S356, 252, ␣152, ␣330, A251, A400, L2␣0

ภารกิจ 1. อธิบายขั้นตอนการสร้างรหัส Soundex ทีละขั้นตอน

ภารกิจ 2. จับคู่ชื่อและรหัสของ Soundex และใส่อักขระที่ขาดหายไป

ภารกิจ 3. สร้างรหัส Soundex สำหรับชื่อล่าสุด: เฟอร์กูสัน, ฟิตซ์เจอรัลด์, Hamnett, Keefe, แมกซ์เวล, Razey, ชอว์, upfield.


ช่วย

แต่ละรหัสประกอบด้วยตัวอักษรและตัวเลขสามตัว จดหมายซ้ำตัวอักษรตัวแรกของนามสกุลและตัวเลขจะเข้ารหัสตัวอักษรที่อยู่ในชื่อถัดไป


การตัดสิน

รหัส Soundex ทั้งหมดประกอบด้วยตัวอักษรละตินและตัวเลขสามหลัก ไม่ยากที่จะคาดเดาว่าเหตุใดจึงใช้รหัสสำหรับนามสกุล วิลสัน เริ่มต้นขึ้น W: เพราะเป็นตัวอักษรตัวแรกของนามสกุลนี้

หลังจากที่กลายเป็นที่ชัดเจนว่าจดหมายฉบับแรกได้รับการเก็บรักษางานแยกออกเป็นหกงานเล็ก ๆ ที่มีความสับสน correspondences:

Allaway, เดอร์สัน, Ashcombe
A536, A251, A400

พ่อค้าหาบเร่, Colquhoun
C42␣, C155

ลูอิส, Littlejohns
L␣42, L2␣0

Stanmore, สตับส์
S312, S356

Tocher, ท็องส์
T␣6␣, T520

บักกิ้งแฮม, อีแวนส์, Fairwright, Kingscott, Whytehead
␣5␣3, ␣623, ␣252, ␣152, ␣330

จำได้ว่า Soundex เป็นอัลกอริทึมที่ออกแบบมาเพื่อค้นหาคำที่มีลักษณะคล้ายกัน อาจเป็นตัวเลขที่ควรเข้ารหัสเสียงบางอย่าง เป็นไปได้ที่จะตั้งสมมุติฐานว่าพวกเขาสอดคล้องกับพยัญชนะที่พบในนามสกุล จริงมีเพียงหกหลักเท่านั้นที่หมายความว่าหลักเดียวกันจะเข้ารหัสทั้งกลุ่มพยัญชนะ

กลุ่มเหล่านี้คือ:

bpv (f)cgjkqs (xz)dtล.ล้านR
123456

การจำแนกประเภทของตัวอักษรใน Soundex มากหรือน้อยสอดคล้องกับการจัดหมวดหมู่ของเสียงตามวิธีการออกเสียง: กลุ่มที่ 1 ประกอบด้วยพยัญชนะออกเสียงพร้อมกับการมีส่วนร่วมของริมฝีปาก ในกลุ่มที่ 2 พยัญชนะออกเสียงโดยใช้ด้านหลังของลิ้นและผิวปาก กลุ่มที่ 3 – การหดกระเพาะก่อนหน้า (d และ เสื้อ); ในกลุ่มที่ 5 – จมูก จากสิ่งนี้คุณสามารถแจกจ่ายเป็นกลุ่มและตัวอักษรเหล่านั้นที่เราไม่เห็นในสภาพ (ในตารางที่ระบุในวงเล็บ) จดหมาย จะตกอยู่ในกลุ่มที่ 1 ถึงพยัญชนะริมฝีปาก (มีอยู่แล้ว โวลต์คู่ หูหนวกเปล่งออกมา) และ x และ Z – ในกลุ่ม 2 (x ประกอบด้วย k และ sที่อยู่ในกลุ่มที่ 2 แต่ Z – จับคู่กับ s) ตัวอักษร ชั่วโมง และ W ตารางนี้ไม่รวม: จะถูกละเว้นเมื่อสร้างรหัส Soundex เช่นเดียวกับตัวอักษร Yซึ่งเป็นภาษาอังกฤษถือเป็นสระ

คุณอาจสังเกตุเห็นว่าการผสมผสานของพยัญชนะจากกลุ่มใดกลุ่มหนึ่งให้สอดคล้องกับตัวเลขหนึ่งตัวในโค้ดเท่านั้น ตัวอย่างเช่นจากข้อมูลในเงื่อนไขรหัสนามสกุล Kingscott สามารถจับคู่กับ␣5␣3เท่านั้นโดยที่ 5 มีหน้าที่รับผิดชอบ n, 3 – สำหรับ เสื้อและจำนวนที่อยู่ตรงกลางควรเป็นผู้รับผิดชอบ ก., s และ (เห็นได้ชัดว่านี่จะเป็นหมายเลข 2)

เลขศูนย์ในรหัสสอดคล้องกับกรณีที่พยัญชนะไม่เพียงพอที่จะเติมสามตำแหน่ง ตัวอย่างเช่นคุณสามารถตั้งค่าได้ Allaway – นี่คือ A400 ที่สอง ล. สอดคล้องกับ 4 และ , W, และ Y ไม่เข้าร่วมในการเขียนโค้ด

คำตอบสำหรับงาน 1. สรุปข้อสังเกตทั้งหมดนี้เราสามารถสร้างอัลกอริทึมการเข้ารหัสได้ เป็นเรื่องสำคัญที่ต้องคำนึงถึงลำดับการดำเนินงานเพื่อให้สามารถรับรหัสทั้งหมดโดยไม่มีข้อผิดพลาด

1 ปล่อยให้ตัวอักษรตัวแรกไม่เปลี่ยนแปลง

2. ลบ ชั่วโมง และ W.

3. แทนที่พยัญชนะทั้งหมดด้วยตัวเลข (ตัวอักษรที่อ่านบ่อยที่สุดซึ่งมีลักษณะคล้ายกันรวมกันเป็นกลุ่ม):

bfpvcgjkqsxzdtล.ล้านR
123456

4. ตัวเลขสองตัวขึ้นไปเรียงกันเพื่อลดเป็นหนึ่ง

5. ถอดสระทั้งหมดออก (, อี, ผม, โอ, ยู, Y).

6. ใส่เฉพาะตัวเลขสามตัวแรกหรือเพิ่มเลขศูนย์ด้านขวาเพื่อให้ความยาวของรหัสเป็นตัวอักษรและตัวเลขสามตัว

คำตอบสำหรับงาน 2 (ตัวอักษรที่กู้คืนจะขีดเส้นใต้)

Allaway: A400, เดอร์สัน: A536, Ashcombe: A251, บักกิ้งแฮม: B252, พ่อค้าหาบเร่: C155, Colquhoun: C425, อีแวนส์: E152, Fairwright: F623, Kingscott: K523, ลูอิส: L200, Littlejohns: L342, Stanmore: S356, สตับส์: S312, Tocher: T260, ท็องส์: T520, Whytehead: W330

คำตอบสำหรับงาน 3.

เฟอร์กูสัน: F622, ฟิตซ์เจอรัลด์: F326, Hamnett: H530, Keefe: K100, แมกซ์เวล: M240, Razey: R200, ชอว์: S000, upfield: U143


เล่ม

ปัญหาที่มีการใช้อัลกอริทึม Soundex (และบางครั้งยังคงใช้อยู่ในปัจจุบัน) โดยทั่วไปจะเรียกว่าการค้นหาสตริงเลือน (การจับคู่สตริงโดยประมาณและการค้นหาสตริงแบบฟัซซี่)

ความสามารถในการเข้าใจว่าการแสดงออกของทั้งสองภาษามีความเท่าเทียมกันเป็นส่วนสำคัญในการรู้ภาษามนุษย์ ทักษะนี้สามารถปรากฏตัวเองในระดับต่างๆ ตัวอย่างเช่นในระดับของความหมาย (ความหมายของคำ) และไวยากรณ์ (การเชื่อมต่อระหว่างคำในวลีและประโยค) ลำโพงภาษารัสเซียเข้าใจได้ง่ายว่าวลี ระยะทาง 100 เมตรที่เขาว่ายน้ำในการรวบรวมข้อมูลภายใน 45 วินาที, เป็นเวลาหลายร้อยเมตรการรวบรวมข้อมูลพาเขาไป 45 วินาที และ เขาลอยถ้ำในนาที (Apresyan 1995: I, 12) หมายถึงสิ่งเดียวกัน ในทำนองเดียวกันที่ระดับของตัวอักษรเราได้อย่างง่ายดายเข้าใจว่า Muravyova และ Muravyev – มันเป็นนามสกุลเดียวกัน แต่ Natalia และ Natalia – ชื่อเดียวกัน (แม้ว่าในสถานการณ์ที่คุณต้องการพบความผิดเราสามารถพูดเท็จได้เช่น "ดีแน่นอนมันบอกว่า Natalia Muravyovaและคุณมีหนังสือเดินทาง – Natalia Muravyova")แต่โดยอัตโนมัติเช่นความสามารถพื้นฐานสำหรับเราที่จะเข้าใจความเท่าเทียมกันของคำและการแสดงออกที่ไม่ตรงกับเป็นงานที่ยากมาก

ความคลาดเคลื่อนดังกล่าวเกิดขึ้นเป็นประจำ Soundex ถูกคิดค้นขึ้นเพื่อเปรียบเทียบชื่อที่ถูกต้องตั้งแต่ต้นศตวรรษที่ 20 การเปลี่ยนแปลงในการสะกดชื่อที่ถูกต้องนั้นสูงกว่านี้มาก แต่ตอนนี้ก็ยังไม่ลดลงเป็นศูนย์อย่างสิ้นเชิง ดังนั้นหนังสือ (Lisbach, Meyer 2013: 15) เป็นตัวอย่างสองทางเลือกในการบันทึกข้อมูลเกี่ยวกับบุคคลเดียวกัน – ตัวอย่างเช่นจากการได้ยินในศูนย์บริการและเมื่อเขียนใหม่จากเอกสารที่มีการแบ่งออกเป็นฟิลด์:

Kate suzanne jankowiz
Belrive Str. 20, 65920 Frankfurt am Main (เยอรมนี)
แคทเธอรีซูซานเจนนิเฟอร์Yankovits-Brunner
20BellerivestrasseFrankfurt / M65920DE

ข้อได้เปรียบที่สำคัญของ Soundex ซึ่งช่วยรับประกันความนิยมในหลาย ๆ แง่มุมคือความง่ายในการใช้งานโดยเฉพาะพจนานุกรมไม่จำเป็นสำหรับอัลกอริทึมนี้ Soundex ได้รับการกล่าวถึงใน The Art of Programming (The Art of Programming) ของ Donald Knuth (Knuth 1998: 395-396) อย่างไรก็ตามในฉบับพิมพ์ครั้งแรก (Knuth 1973: 391-392) ผู้เขียนยังไม่ได้คำนึงถึง subtleties ทั้งหมดและแนะนำพร้อมกันโยนออกสระ, ชั่วโมง และ W; ตัวอย่างเช่น พ่อค้าหาบเร่ ไม่ให้ พ่อค้าหาบเร่ → Capman → Ca15a5 → C155 และ พ่อค้าหาบเร่ → Cpmn → C155 → C15 → C150

Soundex ดำเนินการในหลายภาษา ตัวอย่างเช่นฟังก์ชัน SOUNDEX ในตัวอยู่ในระบบการจัดการฐานข้อมูล MySQLและใน Python 3 คุณสามารถบันทึกเนื้อหาทั้งหมดของงานนี้ได้หลายบรรทัด (ผู้เขียนโค้ดคือ Ivan Derzhansky):

ข้อเสีย Soundex อยู่บนพื้นผิว บางครั้งอัลกอริทึมนี้ไม่สามารถตรวจพบความคล้ายคลึงกันระหว่างชื่อสกุลที่ใกล้ชิดมาก: เลวินสัน จะได้รับรหัส L152 และ Lewinson – รหัส L525 นอกจากนี้ Soundex ยังทำงานได้ไม่ดีในสถานการณ์ที่การออกเสียงแตกต่างจากการสะกดคำซึ่งมักเกิดขึ้นเป็นภาษาอังกฤษ ตัวอย่างเช่นนามสกุลสกอตแลนด์ Colquhounให้อยู่ในสภาพที่อ่านสิ่งที่ชอบ Kehunและรหัส Soundex C425 แสดงถึงการไม่สามารถพิสูจน์ได้ ล. (4) และ Q (2) รูปแบบอื่นของนามสกุลนี้คือ Colhoun (โปรดจำไว้ว่ากัปตัน Cassius Kolhoun จาก "Headless Horseman" Reed) – มีรหัสต่างออกไป: C450 อย่างไรก็ตามในการสะกดดังกล่าวมักจะออกเสียง ล. (Kolhun) เพื่อให้รหัสที่แตกต่างกันในกรณีนี้ไม่เลวร้าย

ในการแก้ปัญหาของการค้นหาแบบคลุมเครือมักใช้อัลกอริธึมขั้นสูงมากขึ้น มันอาจเป็นได้ทั้งอัลกอริทึมการออกเสียงเช่น Soundex (ตัวอย่างเช่น Metaphone) และวิธีการที่แตกต่างกันอย่างสิ้นเชิง – ตัวอย่างเช่นเกี่ยวกับระยะทางด้านบรรณาธิการงานเกี่ยวกับสิ่งพิมพ์ที่ได้รับการเผยแพร่บนเว็บไซต์ของเราแล้ว

อ้างอิง:
1. Yu D. Apresyan ผลงานที่เลือก T. I. // ความหมายของคำศัพท์เฉพาะทาง M: ภาษาวัฒนธรรมรัสเซีย 1995
2. Donald Knuth ศิลปะการเขียนโปรแกรมคอมพิวเตอร์ ฉบับ3: การเรียงลำดับและค้นหา // Reading (Mass.), 1973
3. Donald Knuth ศิลปะการเขียนโปรแกรมคอมพิวเตอร์ ฉบับ 3: การเรียงลำดับและการค้นหา 2ครั้ง เอ็ด // Reading (Mass.), 1998
4. Bertrand Lisbach & Victoria Meyer การจับคู่ทางภาษาศาสตร์ // Wiesbaden: Springer, 2013

งานนี้ถูกใช้ในการศึกษาภาษาศาสตร์นานาชาติครั้งที่สิบสามในปี พ.ศ. 2558 ที่เมืองบลากอเยฟกราด (บัลแกเรีย)


Like this post? Please share to your friends:
ใส่ความเห็น

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: