În acest post și în posturile de mai jos, vreau să descriu pe degete procesul de creare a unui simplu clasificator de documente text, precum și să vorbim despre unele abordări atipice din perspectiva filistină utilizată în clasificarea documentelor.
Un clasificator este un algoritm care corelează anumite date de intrare cu una sau mai multe clase. Spre deosebire de algoritmii de grupare, aceste clase trebuie definite în prealabil.
Poate că cineva această definiție pare prea generală sau academică, așadar este mai bine să luați în considerare problema clasificării prin exemple. Și exemple de mai mult decât suficient.
Sunt peste tot
Poate că cel mai frapant exemplu de clasificare automată este filtrarea spamului. În fiecare zi, zeci de email-uri spam nu se încadrează în cutia mea, care sunt filtrate automat din căsuța de e-mail.
Sistemele comerciale moderne sunt capabile să filtreze spam cu o precizie de peste 99%. Un alt exemplu destul de tipic de clasificare este definirea automată a obiectului unui anumit text. Unii agenți de știri utilizează această abordare pentru a grupa știri în domeniile economiei, politicii, vieții sociale etc.
Adesea, clasificarea este fundamentul pe care sunt construite algoritmi pentru rezolvarea problemelor complexe. De exemplu, clasificarea este utilizată atunci când se creează sisteme de consultanță și în special când se implementează filtrarea colaborativă.
Modul Safari Reader este un alt exemplu în care algoritmii de clasificare sunt folosiți pentru a atinge scopul final. Esența acestui mod al browserului este că vă permite să eliminați automat din pagină toate filele care nu au legătură cu conținutul paginii 2.
De asemenea, clasificarea este utilizată în detectarea feței și problemele de recunoaștere a feței.
Clasificarea este folosită ca instrument pentru rezolvarea multor alte sarcini:
- eliminarea omonimiei în prelucrarea limbajelor naturale;
- în motoarele de căutare - să limiteze domeniul de căutare pentru a îmbunătăți acuratețea (căutare verticală);
- detectarea automată a limbii în care este scris textul;
- analiza tonului (definiția colorării emoționale a textului).
Această listă poate fi continuată o perioadă lungă de timp. De exemplu, în medicină, algoritmii de clasificare sunt folosiți pentru a reconstrui un model 3D al creierului din seria imaginilor MRI 3. și, de asemenea, pentru a diagnostica pacienții care suferă de sindromul Alzheimer 4.
Abordări tradiționale
Regulă bazată pe reguli
Dacă vorbim despre sarcina de a clasifica texte, atunci probabil soluția sa tradițională este clasificarea bazată pe reguli. Implementați regulile pentru definirea unei clase de documente din textul său sub formă de expresii if-then-else (cod de pe Scala).
Această abordare poate fi o opțiune bună dacă lucrați cu o mică colecție de documente pe care sunteți capabili să o acoperiți și să o analizați cu atenție. Pur și simplu pentru că controlați în mod clar regulile prin care clasificatorul ia decizii. Dar există dezavantaje evidente pentru această abordare:
- Pentru a selecta cuvintele importante pentru clasificare, trebuie să aveți cunoștințe de specialitate în domeniul respectiv. Aveți, de exemplu, considerații privind cuvinte cheie care se disting bine prin documentele dedicate subiectelor financiare din documentele economice? La mine foarte vagă;
- nu este întotdeauna faptul că prezența sau absența oricărui cuvânt este factorul decisiv pentru luarea unei decizii.
Permiteți-mi să-i explic ultimul punct. Dacă ne întoarcem la problema determinării spamului și ne gândim la ce cuvinte sunt caracteristici bune de clasificare, devine clar că nu există niciun astfel de cuvânt a cărui prezență ar garanta că mesajul este spam. Poate că în cadrul companiei care produce sildenafil la scară industrială, cuvântul "viagra" nu indică un mesaj spam, cine știe.
În general, esența este aceasta: oricare dintre cuvintele de spam cunoscute poate fi rar întâlnit în viața de zi cu zi. Prin urmare, pentru a lua o decizie finală bazată pe prezența sau absența oricărui cuvânt, ideea este contraproductivă. Putem complica regulile prin adăugarea unor elemente imbricate. Dar destul de repede veți înțelege că capacitățile umane în formularea unor astfel de reguli sunt foarte limitate, deoarece complexitatea regulilor crește exponențial cu numărul de cuvinte alese pentru clasificare.
Clasificarea bazată pe greutate
Putem merge în altă direcție. Putem alege pentru fiecare cuvânt o anumită greutate, ceea ce va însemna probabilitatea ca mesajul cu acest cuvânt să fie spam (0 - niciodată spam, 1 - întotdeauna spam).
Acest tabel enumeră greutățile ipotetice pentru patru cuvinte. Suma valorilor din rând trebuie să fie egală cu una. Apoi clasificarea noastră poate arăta astfel:
Luăm fiecare cuvânt și determinăm greutatea totală a documentului separat pentru clasa "spam" și clasa "nu este spam". Greutatea totală este definită ca fiind produsul greutăților tuturor cuvintelor cunoscute din document. Cuvintele pentru care nu avem nici o greutate, sămânțăm la clasificare. Ce greutate totală a fost mai mare decât acea clasă și câștigă.
Aceasta este o abordare mai rezonabilă, deoarece este mai flexibilă și face o decizie bazată pe toate cuvintele cunoscute din text. Este, de asemenea, mult mai ușor să însoțești decât pânzele.
Metoda de învățare în mașină
Și acum o remarcă foarte importantă. Dacă avem o modalitate de a alege automat greutatea optimă a cuvintelor, atunci această abordare poate fi considerată o metodă de învățare în mașină. Foarte simplificată, poate chiar hipertrofată, dar în esență este tocmai metoda de învățare a mașinilor.
Pentru a fi mai precis, metoda descrisă este germenul unui clasic bayesian naiv. Dar nu lăsați numele să vă înșele, NBC (Classifierul Naïve Bayes) dacă nu cel mai mult, apoi unul dintre clasificatorii cei mai frecvent utilizați. Există o serie de motive pentru aceasta:
- este simplu în implementare și testare;
- Procesul de învățare este destul de eficient în comparație cu alți clasificatori mai complexi;
- pe miezurile de documente mici, diferența dintre NBC și alți algoritmi de clasificare mult mai complicate este adesea nesemnificativă și uneori NBC se dovedește a fi mai precisă 5.
În următoarele note, voi descrie în detaliu problemele legate de crearea și testarea unui astfel de clasificator. Abonați-vă la RSS.