Najčastejšie chyby v emailoch – Ako ich nájsť a opraviť

Chyby nerobí len ten, čo nerobí nič. Táto ľudová múdrosť platí naozaj vo všeobecnosti a tak sa vťahuje aj na prácu s kontaktnými údajmi klienta. Počas svojej práce som sa stretol s niekoľkými rozsiahlymi databázami emailových adries klientov. Väčšina z emailov sa do systémov firiem dostávala z registračných formulárov, kam ich klienti sami zadávali. Keď vidíte nejaký konkrétny preklep v emailovej adrese, poviete si: aká triviálnosť, možno sa aj pousmejete a chybu poľahky odstránite. Ak však máte databázu s miliónmi prípadov, úsmev vám rýchlo vytuhne.

Ako nájsť chybu v emailových adresách, keď pochybení je mnoho? A ako veľká je v skutočnosti nekvalita vo vašom konkrétnom prípade? Poviete si, urobím si vzorku, v nej zrátam chyby ručne a podľa toho odhadnem veľkosť problému. Nuž ale, ak máte v databáze milióny emailov, vzorka by musela mať aspoň niekoľko desiatok tisíc riadkov. To už prestáva byť v ľudských silách odhaliť. Ako si teda počať s týmto problémom?

V jednej z mojich minulých prác som bol postavený pred tento problém prvý krát. Najprv som skúsil uvedenú vzorkovú metódu, ale po niekoľko stovák riadkov som pochopil, že tadiaľ cesta naozaj nevedie. Nenechal som sa odradiť a povedal som si, že email predsa má určité pravidlá, ktoré musí splniť (napríklad musí obsahovať @ a minimálne jednu bodku, ideálne až za @). Takýmto spôsobom sa môžete dopracovať k sade určitých pravidiel. Dnes však už viem, že tým odhalíte len nepatrný zlomok problémových emailov.

Tak ako to už v živote býva, pohár môže byť polo-prázdny aj polo-plný. Obrovské množstvo emailov je teda prekliatím aj požehnaním. Čím viac podkladových dát, tým častejšie sa určitá chyba vyskytne. Nad obrovskou skupinou emailov tak môžete testovať strojom postupne všetky hypotézy a zároveň mať rýchlo spätnú väzbu, ako pravdepodobná daná chyba je. Aj pomerne zriedkavé chyby budú mať v tak obrovskej databáze aspoň pár kusov výskytov. A tu sa premieňa nevýhoda na výhodu. Keďže bizarné scenáre budú mať zopár výskytov, ak postupne testujete filtre na rozličné typy chýb, počty „podozrivých emailov“, ktoré vám jednotlivé návrhy filtrov vracajú sú dobrým signálom, či pravidlo naozaj odhaľuje chyby alebo je falošným poplachom, ktorý „neprávom obviňuje“ veľké množstvo „nevinných emailov“.

Nedávno sa mi podarilo uvedené cvičenie zopakovať na vzorke, kde sú desiatky miliónov emailových adries. Z uvedených skúseností môžem povedať, že toto sú najčastejšie chyby, ktorých sa ľudia dopúšťajú pri písaní vlastných emailov:

Dvojité preklepy

Do tejto kategórie spadajú emaily tvaru nieco@@niekde.com alebo nieco@niekde..com Odhaľovanie týchto dvojitých chýb je možné urobiť pomerne jednoducho, aj keď možno by vám vôbec nenapadlo, že ľudia dokážu urobiť aj takto triviálnu chybu.

Roztržité domény

Pri písaní adries sa ľudom občas stáva, že z roztržitosti napíšu správne takmer celú adresu, ale potom “domrvia” koncovku domény, ako napríklad niekto@yahoo.sk . Tento druh chýb už sa hľadá podstatne ťažšie, lebo freemailové servery niekedy majú špecifické koncovky v krajinách a tak @yahoo.xxx nemusí byť nutne nesprávne. Tu vám však opäť dokáže pomôcť BigData sila obrovskej databázy. Stačí overiť všetky kombinácie yahoo.xxx a skontrolovať tie, ktoré majú podozrivo nízke počty. Tento postup možno aplikovať pre ľubovoľné veľké domény, takže zistíte, že zoznam.jp tiež nie je úplne v poriadku. Samozrejme firmy môžu mať officy v menších firmách, takže keď vykročíte zo zóny freemail domén, môžete sa aj popáliť, ale v princípe sa dá dopracovať k solídnym výsledkom.

Skomoleniny v názvoch

Ďalšou skupinou relatívne ľahko detekovateľných problémov sú zjavné skomoleniny, predovšetkým domén (napr. niekto@gmai.com). Detekcia je opäť trochu komplikovanejšia, ale v princípe sa dajú použiť Levenshtein vzdialenosti od mien veľkých domén. Je to samozrejme ľad, po ktorom treba opatrne kráčať, ale ak nebudete prehnane horliví, dá sa s tým veľa problémov potlačiť.

Zjavne vynechané povinné znaky

Na moje prekvapenie, niektorí ľudia sú schopní napísať emailovú adresu aj bez zavináča, či dokonca bez jedinej bodky. Pri úprave takýchto chýb, už však je pomerne jednoduché vyrobiť false positive, teda ilúziu nesprávnej korekcie. Preto odporúčam “natvrdo” algoritmicky opravovať len zjavne prípady ako niektogmail.com alebo niekto@gmailcom. Skúšali sme experimentovať aj agresívnejšími technikami, ale miera falošných poplachov bola zúfalo vysoká. Ak totiž užívateľ zabudol napísať zavináč, určiť na ktorú pozíciu má byť vložený nie je vo všeobecnosti príliš jednoduché (napr. ambrozeset.sk bola v skutočnosti správne ambroze@set.sk nie ambroz@eset.sk , ako by si niektorí mohli myslieť)

Samostatnou vetvou sú ľudia, ktorí svoje email adresy píšu tak, aby neboli strojovo použiteľné. Tu musím uznať, že zlyháva najmä validáciu vstupu, lebo emaily ako niekto(at)niekde.com alebo niekto@niekde_dot_com by sa proste do databáz nemali ani dostať. Napriek tomu, to niektorí skúšajú.

< ďalšie pravidlá sú rozobrané v doplnkovom blogu pre členov komunity Mocnedata.sk >

Vo všeobecnosti je opravovanie chýb v emailoch taký zaujímavý kokteil alchýmie a tvrdých algoritmov. Preto pre členov  MocneData.sk komunity som pripravil k tejto téme doplnkový blog [Ako na to] Skripty na opravu chýb v emailoch, kde uvádzam aj vzorové kódy, ako vyššie uvedené (a niektoré ďalšie) chyby v emailoch priamo odstrániť. Skripty sú napísané v SQL konvenciách a teda môžu byť priamo aplikované na vaše databázy. Ak patríte medzi členov komunity MocneData.sk, použite heslo, ktoré ste obdržali emailom o registrácii. Ak doposiaľ nie ste členom komunity môžete sa bezplatne stať TU A TERAZ.

Tí z nás, čo si viac tykajú s programovacími jazykmi by mohli povedať, že chybám v ľuďmi zadávaných údajoch by sa dalo predísť patričnou validáciou (kontrolou) zadávaných emailov. Podľa tohto postoja by sa dalo v úvode citované príslovie upraviť na „chyby v databáze má iba ten, čo nič nerobí proti nim“. Hoci je pravda, že aplikované kontroly by dokázali odstrániť niektoré preklepy, stále existujú emailové adresy, ktoré “prelezú“ väčšinou základných testov, hoci zjavne nie sú správne. (napríklad a_b.c_d@efgh.ch) Postaviť filter na všetky možné chyby tak je v praxi takmer nemožné. Podľa mojich skúseností, aj po zavedení veľmi prísnych validačných pravidiel sa podarilo znížiť počet nekorektných emailov iba na úroveň okolo 1.4%.  Tento, približne 1%ný, posledný kúsok koláča zostáva len potvrdením prvej vety: Kto robí, urobí aj chyby.

Ďalšie [AKO NA TO] blogy, ktoré by vás mohli zaujímať:

[ako na to] – VÝBER PARAMETROV pre model

[ako na to] Ideme robiť MENINOVÉ KAMPANE

[ako na to] ANOMÁLIE v DÁTACH

[ako na to] Analyzujeme BORING DÁTA


Publikované dňa 20. 3. 2018.