Soundex • Alexander Piperski • Masalah popular saintifik pada "Unsur" • Linguistik

Soundex

Soundex adalah algoritma untuk pengekodkan nama yang betul. Ia dicipta pada 1918-1922. di Amerika Syarikat, Robert Russell dan Margaret King Odell, untuk memudah cara mencari nama-nama yang terdahulu. Pada pertengahan abad ke-20, Soundex digunakan secara meluas di Amerika Syarikat dalam menganalisis hasil bancian penduduk 1890-1920. Di bawah adalah contoh banci 1910. Di sini anda dapat melihat bahawa kod Soundex untuk nama terakhir Wilson kelihatan seperti W425:

Tugas

Senarai nama terakhir dan kod Soundex yang sepadan diberikan dalam susunan yang keliru. Beberapa aksara hilang:

Allaway, Anderson, Ashcombe, Buckingham, Chapman, Colquhoun, Evans, Fairwright, Kingscott, Lewis, Littlejohns, Stanmore, Stubbs, Tocher, Tonks, Whytehead

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

Tugasan 1. Terangkan langkah demi langkah bagaimana kod Soundex dihasilkan.

Tugasan 2. Padankan nama dan kod Soundex dan masukkan aksara yang hilang.

Tugas 3. Bina kod Soundex untuk nama terakhir berikut: Ferguson, Fitzgerald, Hamnett, Keefe, Maxwell, Razey, Shaw, Upfield.


Petunjuk

Setiap kod terdiri daripada huruf dan tiga nombor. Huruf itu mengulangi huruf pertama nama terakhir, dan angka-angka itu mengekodkan konsonan yang ada pada nama berikutnya.


Penyelesaian

Semua kod Soundex terdiri daripada huruf Latin dan tiga digit. Ia tidak sukar untuk meneka mengapa kod untuk nama akhir Wilson bermula pada W: kerana ia adalah huruf pertama nama terakhir ini.

Setelah menjadi jelas bahawa huruf pertama dipelihara, tugas itu berpecah menjadi enam tugas kecil dengan koresponden yang keliru:

Allaway, Anderson, Ashcombe
A536, A251, A400

Chapman, Colquhoun
C42␣, C155

Lewis, Littlejohns
L␣42, L2␣0

Stanmore, Stubbs
S312, S356

Tocher, Tonks
T␣6␣, T520

Buckingham, Evans, Fairwright, Kingscott, Whytehead
␣5␣3, ␣623, ␣252, ␣152, ␣330

Ingat bahawa Soundex adalah algoritma yang direka untuk mencari perkataan yang sama. Mungkin, nombor-nombor itu harus menyandikan beberapa bunyi ciri. Adalah mungkin untuk hipotesis bahawa mereka sesuai dengan huruf konsonan yang terdapat pada nama terakhir. Benar, hanya enam digit bermakna angka yang sama menyandi seluruh kumpulan konsonan.

Kumpulan-kumpulan ini adalah:

bpv (f)cgjkqs (xz)dtlmnr
123456

Pengkelasan huruf dalam Soundex lebih kurang sesuai dengan klasifikasi bunyi mengikut cara mereka diucapkan: kumpulan 1 termasuk konsonan yang diucapkan dengan penyertaan bibir; dalam kumpulan 2, konsonan yang diucapkan menggunakan bahagian belakang lidah dan bersiul; kumpulan 3 – occlusal fore-lingual (d dan t); dalam kumpulan 5 – hidung. Prosiding dari ini, adalah mungkin untuk mengedarkan kumpulan dan huruf yang tidak kita lihat dalam keadaan (dalam jadual yang diberikan dalam kurungan). Surat f akan jatuh ke dalam kumpulan 1 kepada konsonan labial (sudah ada) vpasangan f pekak-suara), dan x dan z – dalam kumpulan 2 (x terdiri daripada k dan syang berada dalam kumpulan 2, tetapi z – pasangan berdering ke s). Surat h dan w Jadual ini tidak termasuk: mereka tidak diendahkan semasa menghasilkan kod Soundex. Begitu juga untuk surat itu. yyang dalam bahasa Inggeris dianggap sebagai vokal.

Anda mungkin dapat melihat bahawa kombinasi konsonan dari satu kumpulan hanya sesuai dengan satu digit dalam kod. Sebagai contoh, dari data dalam keadaan kod nama Kingscott hanya boleh memadankan ␣5␣3, di mana 5 adalah bertanggungjawab n, 3 – untuk tdan nombor di tengah harus bertanggungjawab g, s dan c (jelas, ini akan menjadi nombor 2).

The nol dalam kod itu sesuai dengan kes-kes apabila konsonan tidak cukup untuk mengisi tiga kedudukan. Sebagai contoh, anda boleh menetapkannya Allaway – ini adalah A400, di mana dua l sesuai dengan 4, dan a, w, a dan y jangan menyertai pengekodan.

Jawapan kepada tugas 1. Merumuskan semua pemerhatian ini, kita boleh membina algoritma pengekodan. Adalah penting untuk memberi perhatian kepada susunan operasi, supaya ia dapat menerima semua kod tanpa kesilapan.

1. Meninggalkan huruf pertama tidak berubah.

2. Padam h dan w.

3. Gantikan semua konsonan dengan nombor (huruf, bacaan paling kerap yang sama, digabungkan menjadi kumpulan):

bfpvcgjkqsxzdtlmnr
123456

4. Dua atau lebih nombor identik berturut-turut untuk mengurangkan satu.

5. Keluarkan semua huruf vokal (a, e, i, o, u, y).

6. Biarkan hanya tiga digit pertama atau tambahkan sifar di sebelah kanan supaya panjang kod adalah satu huruf dan tiga digit.

Jawab kepada tugas 2 (aksara yang dipulihkan digariskan).

Allaway: A400, Anderson: A536, Ashcombe: A251, Buckingham: B252, Chapman: C155, Colquhoun: C425, Evans: E152, Fairwright: F623, Kingscott: K523, Lewis: L200, Littlejohns: L342, Stanmore: S356, Stubbs: S312, Tocher: T260, Tonks: T520, Whytehead: W330.

Jawapan kepada tugas 3.

Ferguson: F622, Fitzgerald: F326, Hamnett: H530, Keefe: K100, Maxwell: M240, Razey: R200, Shaw: S000, Upfield: U143.


Selepas perkataan

Masalah yang digunakan oleh algoritma Soundex (dan kadangkala terus digunakan hari ini) umumnya dipanggil carian rintangan fuzzy (padanan rentetan anggaran, pencarian rentetan fuzzy).

Keupayaan untuk memahami bahawa dua ungkapan bahasa bersamaan adalah bahagian penting dalam mengetahui bahasa manusia. Kemahiran ini dapat nyata pada tahap yang berbeza. Sebagai contoh, pada tahap semantik (makna perkataan) dan sintaks (sambungan antara perkataan dalam frasa dan kalimat), seorang pembesar Rusia mudah memahami bahawa frasa Jarak seratus meter dia berenang dalam merangkak dalam 45 saat, Selama seratus meter, merangkak itu membawanya 45 saat. dan Dia mengapungkan gua dalam ¾ minit (Apresyan 1995: I, 12) bermaksud perkara yang sama. Begitu juga, pada tahap huruf, kita dengan mudah memahaminya Muravyov dan Muravyev – ia adalah nama akhir yang sama, tetapi Natalia dan Natalia – nama yang sama (walaupun dalam situasi di mana anda ingin mencari kesalahan, kita boleh dengan palsu mengatakan sesuatu seperti, "Baiklah, ia mengatakan Natalia Muravyova, dan anda mempunyai pasport – Natalia Muravyova").Tetapi mengotomatikkan keupayaan asas sedemikian bagi kita untuk memahami kesetaraan kata-kata dan ungkapan yang tidak betul-betul sepadan adalah tugas yang sangat sukar.

Perbezaan dalam praktik ini berlaku secara teratur. Soundex pada asalnya dicipta dengan tepat untuk membandingkan nama-nama yang betul, sejak pada awal abad ke-20 variasi dalam ejaan nama-nama yang sepatutnya jauh lebih tinggi daripada sekarang, tetapi sekarang ini tidak sepenuhnya dikurangkan menjadi sifar. Oleh itu, buku (Lisbach, Meyer 2013: 15) memberikan contoh dua pilihan untuk merekodkan maklumat mengenai orang yang sama – contohnya, dari pendengaran di pusat panggilan dan semasa menulis semula dari dokumen dengan pembahagian ke dalam bidang:

Kate suzanne jankowiz
Belrive Str. 20, 65920 Frankfurt am Main (Jerman)
CatherineSusanJenniferYankovits-brunner
20BellerivestrasseFrankfurt / M65920DE

Kelebihan penting Soundex, yang dalam banyak hal memastikan populariti, adalah kemudahan pelaksanaan: khususnya, kamus tidak diperlukan untuk algoritma ini. Soundex disebut dalam klasik The Art of Programming Donald Knuth (Knuth 1998: 395-396). Walau bagaimanapun, dalam edisi pertama (Knuth 1973: 391-392) penulis masih belum mengambil kira semua keterangan dan mencadangkan secara serentak membuang vokal, h dan w; contohnya Chapman tidak memberi Chapman → Capman → Ca15a5 → C155, dan Chapman → Cpmn → C155 → C15 → C150.

Soundex dilaksanakan dalam berpuluh-puluh bahasa pengaturcaraan. Sebagai contoh, fungsi SOUNDEX terbina dalam dalam sistem pengurusan pangkalan data MySQL.Dan dalam Python 3 anda boleh merakam seluruh kandungan tugas ini dalam beberapa baris (pengarang kodanya ialah Ivan Derzhansky):

Kelemahan Soundex terletak di permukaan. Kadang-kadang algoritma ini tidak dapat mengesan persamaan antara nama keluarga yang sangat dekat: contohnya, Levinson akan menerima kod L152, dan Lewinson – kod L525. Di samping itu, Soundex tidak berfungsi dengan baik dalam situasi di mana sebutan sangat berbeza dengan ejaan, yang sering berlaku dalam bahasa Inggeris. Sebagai contoh, nama keluarga Scotland Colquhoundiberi dalam keadaan membaca sesuatu seperti Cahun, dan kod Soundex C425 mencerminkan unprovable l (4) dan q (2). Satu lagi variasi nama terakhir ini ialah Colhoun (ingat kapten Cassius Kolhoun dari "Horseman tanpa kepala" Tambang Mutiara) – mempunyai kod yang berbeza: ternyata C450. Walau bagaimanapun, dalam ejaan seperti ini biasanya disebut l (Kolhun), supaya kod berbeza dalam kes ini tidak begitu buruk.

Untuk menyelesaikan masalah carian kabur, algoritma yang lebih maju sering digunakan. Ia boleh menjadi kedua-dua algoritma fonetik seperti Soundex (contohnya, Metaphone), dan pendekatan yang berbeza – contohnya, berkaitan dengan jarak editorial, tugas yang telah diterbitkan di laman web kami.

Kesusasteraan:
1. Yu D. Apresyan. Kerja Terpilih. T. I. // Semantik Lexical. M:: Bahasa kebudayaan Rusia, 1995.
2. Donald Knuth. Seni pengaturcaraan komputer. Vol.3: Menyusun dan mencari // Membaca (Mass.), 1973.
3. Donald Knuth. Seni pengaturcaraan komputer. Vol. 3: Menyusun dan mencari. 2nd ed. // Membaca (Mass.), 1998.
4. Bertrand Lisbach & Victoria Meyer. Persamaan identiti linguistik // Wiesbaden: Springer, 2013.

Tugasan ini digunakan pada Olimpik Antarabangsa XIII dalam Linguistik pada 2015 di Blagoevgrad (Bulgaria).


Like this post? Please share to your friends:
Tinggalkan Balasan

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