Soundex • Aleksandras Piperski • Mokslinės-populiarios "Elementų" problemos • Lingvistika

Soundex

Soundex yra tinkamų pavadinimų kodavimo algoritmas. Ji buvo sukurta 1918-1922 metais. JAV, Robert Russell ir Margaret King Odell, kad būtų lengviau ieškoti panašių skambančių pavardžių. XX a. Viduryje Soundex buvo plačiai naudojamas JAV, analizuojant 1890-1920 m. Gyventojų surašymų rezultatus. Žemiau pateikiamas 1910 m. Gyventojų surašymo kortelės pavyzdys. Čia galite matyti, kad "Welson" pavardės "Soundex" kodas atrodo kaip "W425":

Užduotis

Pavardžių ir jų atitinkamų "Soundex" kodų sąrašas pateikiamas supainiotoje eilėje. Trūksta kai kurių simbolių:

Visada, Andersonas, Ashcombe, Bekingemas, Chapmanas, Colquhoun, Evansas, Fairwright, Kingscott, Lewisas, Littlejohns, Stanmore, Stubbsas, Tocheras, Tonksai, Kodėl vertus?

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

1 užduotis. Aprašykite žingsnis po žingsnio, kaip generuojamas Soundex kodas.

2 užduotis. Susiekite "Soundex" pavadinimus ir kodus ir įterpkite trūkstamus simbolius.

3 užduotis. Sukurkite "Soundex" kodus šiems pavardes: Fergusonas, Fitzgerald, Hamnettas, Keefe, Maksvelas, Razey, Šuo, Upfield.


Užuomina

Kiekvieną kodą sudaro raidė ir trys skaitmenys. Šis laiškas kartoja pirmąją pavardės raidę, o numeriai koduoja kito pavadinimo vartojamus konsonanso.


Sprendimas

Visi kodai Soundex susideda iš lotyniškos raidės ir trijų skaitmenų. Nenuostabu, kodėl įvardijo pavardę Wilsonas prasideda W: nes tai pirmoji šio pavardės raidė.

Kai paaiškėjo, kad pirmoji raidė yra išsaugota, užduotis skirstoma į šešias mažas užduotis su supainioti atitikimais:

Visada, Andersonas, Ashcombe
A536, A251, A400

Chapmanas, Colquhoun
C42␣, C155

Lewisas, Littlejohns
L␣42, L2␣0

Stanmore, Stubbsas
S312, S356

Tocheras, Tonksai
T␣6␣, T520

Bekingemas, Evansas, Fairwright, Kingscott, Kodėl vertus?
␣5␣3, ␣623, ␣252, ␣152, ␣330

Prisiminkite, kad "Soundex" yra algoritmas, skirtas rasti panašiai skambančius žodžius. Tikriausiai, numeriai turėtų koduoti kokį nors būdingą garsą. Galima hipotetiškai teigti, kad jie atitinka sutikusius raides, esančius pavarde. Tiesa, tik šeši skaitmenys reiškia, kad tas pats skaitmuo koduoja visas konsonantų grupes.

Šios grupės yra:

bpv (f)cgjkqs (xz)dtlmnr
123456

"Soundex" raidžių klasifikacija yra daugiau ar mažiau atitinkanti garsų klasifikaciją pagal jų išraišką: 1 grupė apima pasakymus, išreikštus dalyvaujant lūpoms; 2-ioje grupėje vartojami galūnės ir švilpukai ištarti konsonantai; 3 grupė – priekinė kalbinė oklusala (d ir t); 5 grupėje – nosies. Tuo remiantis, galima paskirstyti į grupes ir tuos raides, kurių mes nematėme esant būklei (lentelėje jie pateikiami skliausteliuose). Laiškas f pateks į grupę 1 prie labialinių suderintų (jau yra vpora f garsiai išreiškė) ir x ir z – 2 grupėje (x susideda iš k ir skurie yra 2 grupėje, bet z – skambučio pora į s) Laiškai h ir w Ši lentelė nėra įtraukta: jie generuojami "Soundex" kodo ignoruojami. Tas pats pasakytina apie laišką. ykuris anglų kalba laikomas balsiu.

Galite pastebėti, kad vienos grupės konsonantų deriniai atitinka tik vieną kodą. Pavyzdžiui, iš duomenų pavardės kodų būklė Kingscott gali atitikti tik ␣5␣3, iš kurių 5 yra atsakingos už n, 3 – už tir už vidurį turėtų būti atsakingas numeris g, s ir c (akivaizdu, kad tai bus numeris 2).

Kodo nuliai atitinka atvejus, kai konsonantų nepakanka norint užpildyti tris pozicijas. Pavyzdžiui, galite tai nustatyti Visada – tai yra A400, kur du l atitinka 4, ir a, w, a ir y nedalyvauja koduojant.

Atsakymas į užduotį 1. Apibendrinant visas šias pastabas, mes galime sukurti kodavimo algoritmą. Svarbu atkreipti dėmesį į operacijų tvarką, kad būtų galima gauti visus kodus be klaidų.

1. Palikite pirmąją raidę nepakeistą.

2. Ištrinti h ir w.

3. Pakeiskite visus sakinius su skaičiais (raidės, kurių dažniausiai skaitomos panašios, sujungiamos į grupes):

bfpvcgjkqsxzdtlmnr
123456

4. Du ar daugiau identiškų skaičių iš eilės, kad sumažintumėte vieną.

5. Pašalinkite visus balsius (a, e, i, o, tu, y).

6. Palikite tik pirmus tris skaitmenis arba pridėkite nulius dešinėje, kad kodo ilgis būtų vienas raidė ir trys skaitmenys.

Atsakymas į 2 užduotį (atkuriami simboliai yra pabraukti).

Visada: A400, Andersonas: A536, Ashcombe: A251, Bekingemas: B252, Chapmanas: C155, Colquhoun: C425, Evansas: E152, Fairwright: F623, Kingscott: K523, Lewisas: L200, Littlejohns: L342, Stanmore: S356, Stubbsas: S312, Tocheras: T260, Tonksai: T520, Kodėl vertus?: W330.

Atsakymas į užduotį 3.

Fergusonas: F622, Fitzgerald: F326, Hamnettas: H530, Keefe: K100, Maksvelas: M240, Razey: R200, Šuo: S000, Upfield: U143.


Po žodžio

Problema, dėl kurios buvo naudojamas "Soundex" algoritmas (ir kartais ir toliau naudojamas šiandien), paprastai vadinama neaiškiais string'ais (apytikslė eilučių atitiktis, neaiškių stringų paieška).

Gebėjimas suprasti, kad dvi kalbos išraiškos yra lygiavertės, yra svarbi žmogaus kalbos žinojimo dalis. Šis įgūdis gali pasireikšti įvairiais lygmenimis. Pavyzdžiui, kalbant apie semantiką (žodžio reikšmes) ir sintaksę (ryšys tarp žodžių fraze ir sakinyje), rusakalbis lengvai supranta, kad frazės Per šimtą metrą jis plaukiojo nuskaitymo per 45 sekundes, Po šimto metrų nuskaitymas paėmė jį 45 sekundes. ir Jis ¾ minutę plaukė į urvą (Apresyan 1995: I, 12) reiškia tą patį. Panašiai ir laiško lygiu mes tai lengvai suprantame Muravjovas ir Muravyev – tai tas pats pavardė, bet Natalija ir Natalija – tas pats vardas (nors situacijose, kai norite rasti kaltę, galime klaidingai pasakyti kažką panašaus: "Na, žinoma, sakoma Natalija Муравйова, ir jūs turite pasą – Natalija Муравйова")Bet automatizuojant tokius pagrindinius sugebėjimus suprasti lygiaverčius žodžius ir išraiškas, kurios tiksliai nesutampa, yra labai sudėtinga užduotis.

Tokie neatitikimai praktikoje vyksta reguliariai. "Soundexe" iš pradžių buvo išrastas tiksliai lyginti tikruosius vardus, nes XX a. Pradžioje vardinių rašybos ženklų keitimas buvo daug didesnis nei dabar, tačiau net ir dabar jis nėra visiškai nulinis. Taigi, knygoje (Lisbach, Meyer 2013: 15) pateikiamas dviejų galimybių įrašyti informaciją apie tą patį asmenį pavyzdys, pavyzdžiui, iš klausymo skambučių centre ir perrašant dokumentus iš dalijimosi į laukus:

Kate suzanne jankowiz
Belrive g. 20, 65920 Frankfurtas prie Maino (Vokietija)
CatherineSusanJenniferYankovits-brunner
20BellerivestrasseFrankfurtas / M65920DE

Svarbus Soundex pranašumas, kuris daugeliu atžvilgių užtikrino jo populiarumą, yra paprastas įgyvendinimas: ypač šio žodžio algoritmas nėra reikalingas. "Soundex" minimas Donaldo Knuto klasikiniame "Programavimo menas" (Knuth 1998: 395-396). Tačiau pirmame leidinyje (Knuth 1973: 391-392) autorius dar neatsižvelgė į visas subtilybes ir pasiūlė tuo pačiu metu išmesti balsius, h ir w; tada, pavyzdžiui Chapmanas suteikia ne Chapmanas → Capman → Ca15a5 → C155, ir Chapmanas → Cpmn → C155 → C15 → C150.

Soundex yra įdiegta daugybėje programavimo kalbų. Pavyzdžiui, funkcija "SOUNDEX" yra "MySQL" duomenų bazių valdymo sistemoje.Python 3 galite įrašyti visą šios užduoties turinį keliomis eilutėmis (kodo autorius yra Ivanas Derzhansky):

Trūkumai Soundex guli ant paviršiaus. Kartais šis algoritmas negali aptikti panašumų tarp labai artimų pavardžių: pavyzdžiui, Levinsonas gaus kodą L152, ir Lewinson – kodas L525. Be to, "Soundex" netinkamai veikia tais atvejais, kai tarimas labai skiriasi nuo rašybos, dažnai būna anglų kalba. Pavyzdžiui, škotijos pavardė Colquhounpateiktas sąlyga skaito kažką panašaus Cahun, o jo "Soundex C425" kodas atspindi neapsiribojamą l (4) ir q (2). Kitas šio pavardės variantas yra Colhoun (prisiminkime kapitoną Cassiusą Kolhouną iš "be rėmėjų" Mine Reed) – turi kitą kodą: pasirodo, kad jis yra C450. Tačiau tokia rašyba paprastai būna išreikšta l (Kolhun), todėl šiuo atveju skirtingi kodai nėra taip blogi.

Kad išspręstume neaiškios paieškos problemą, dažniausiai naudojami labiau pažengę algoritmai. Tai gali būti ir fonetiniai algoritmai, tokie kaip "Soundex" (pvz., "Metaphone"), ir visiškai skirtingi požiūriai, pavyzdžiui, susiję su redakciniu atstumu, užduotis, apie kurią jau buvo paskelbta mūsų svetainėje.

Literatūra:
1. J. D. Апресян. Pasirinkti darbai. T. I. Leksikos semantika. M.: Kalbos rusų kultūros, 1995.
2. Donaldas Knutas. Kompiuterinio programavimo menas. Tomas3: Rūšiavimas ir paieška // Skaitymas (mas.), 1973.
3. Donaldas Knutas. Kompiuterinio programavimo menas. Tomas 3: Rūšiavimas ir paieška. 2nd ed. // Skaitymas (masė), 1998.
4. Bertrandas Lisbachas ir Viktorija Meyer. Lingvistinio identiteto atitikimas // Wiesbaden: Springer, 2013.

Ši užduotis buvo panaudota XIII tarptautinėje lingvistikos olimpiadoje 2015 m. Blagojevgradas (Bulgarija).


Like this post? Please share to your friends:
Parašykite komentarą

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