Cum să deschizi comentarii și să nu te îneci în spam

Cum să deschizi comentarii și să nu te îneci în spam

Când treaba ta este să creezi ceva frumos, nu trebuie să vorbești prea mult despre asta, pentru că rezultatul este sub ochii tuturor. Dar dacă ștergi inscripțiile de pe garduri, nimeni nu va observa munca ta atâta timp cât gardurile arată decent sau până când ștergi ceva greșit.

Orice serviciu în care poți lăsa un comentariu, recenzie, trimite un mesaj sau încărca poze mai devreme sau mai târziu se confruntă cu problema spam-ului, fraudei și obscenității. Acest lucru nu poate fi evitat, dar trebuie tratat.

Numele meu este Mikhail, lucrez în echipa Antispam, care protejează utilizatorii serviciilor Yandex de astfel de probleme. Munca noastră este rar observată (și asta e un lucru bun!), așa că astăzi vă voi spune mai multe despre ea. Veți învăța când moderarea este inutilă și de ce acuratețea nu este singurul indicator al eficacității sale. Vom vorbi, de asemenea, despre înjurături folosind exemplul pisicilor și câinilor și de ce uneori este util să „gândești ca un înjurător”.

Din ce în ce mai multe servicii apar în Yandex, unde utilizatorii își publică conținutul. Puteți să puneți o întrebare sau să scrieți un răspuns în Yandex.Q, să discutați știrile din curte în Yandex.District, să împărtășiți condițiile de trafic în conversațiile de pe Yandex.Maps. Dar când publicul serviciului crește, acesta devine atractiv pentru escroci și spammeri. Ei vin și completează comentarii: oferă bani ușori, fac reclamă la remedii miraculoase și promit beneficii sociale. Din cauza spammerilor, unii utilizatori pierd bani, în timp ce alții își pierd dorința de a petrece timp pe un serviciu neîngrijit, plin de spam.

Și aceasta nu este singura problemă. Ne străduim nu numai să protejăm utilizatorii de escroci, ci și să creăm o atmosferă confortabilă pentru comunicare. Dacă oamenii se confruntă cu înjurături și insulte în comentarii, este posibil să plece și să nu se mai întoarcă niciodată. Aceasta înseamnă că trebuie să fii capabil să faci față acestui lucru.

Web curat

Așa cum este adesea cazul la noi, primele dezvoltări s-au născut în Căutare, în partea care luptă împotriva spamului în rezultatele căutării. În urmă cu aproximativ zece ani, a apărut acolo sarcina de a filtra conținutul pentru adulți pentru căutări de familie și pentru interogări care nu necesitau răspunsuri din categoria 18+. Așa au apărut primele dicționare scrise manual de porno și înjurături, acestea fiind completate de analiști. Sarcina principală a fost de a clasifica cererile în acelea în care este acceptabil să se afișeze conținut pentru adulți și unde nu este. Pentru această sarcină, au fost colectate markupuri, au fost construite euristici și au fost antrenate modele. Așa au apărut primele dezvoltări pentru filtrarea conținutului nedorit.

De-a lungul timpului, UGC (conținut generat de utilizator) a început să apară în Yandex - mesaje care sunt scrise de utilizatori înșiși și Yandex publică doar. Din motivele descrise mai sus, multe mesaje nu au putut fi publicate fără a căuta - era necesară moderarea. Apoi au decis să creeze un serviciu care să ofere protecție împotriva spamului și a atacatorilor pentru toate produsele Yandex UGC și să folosească evoluțiile pentru a filtra conținutul nedorit în Căutare. Serviciul se numea „Clean Web”.

Noi sarcini și ajutor de la împingători

La început, doar automatizarea simplă a funcționat pentru noi: serviciile ne trimiteau texte și rulam dicționare de obscenități, dicționare porno și expresii regulate pe ele - analiștii compilau totul manual. Dar, de-a lungul timpului, serviciul a fost folosit într-un număr tot mai mare de produse Yandex și a trebuit să învățăm să lucrăm cu probleme noi.

Adesea, în loc de o recenzie, utilizatorii publică un set de scrisori fără sens, încercând să-și sporească realizările, uneori își fac publicitate companiei în recenziile companiei unui concurent, iar uneori pur și simplu confundă organizațiile și scriu într-o recenzie despre un magazin de animale de companie: „ Pește perfect gătit!” Poate că într-o zi inteligența artificială va învăța să înțeleagă perfect sensul oricărui text, dar acum automatizarea se descurcă uneori mai rău decât oamenii.

A devenit clar că nu putem face acest lucru fără marcarea manuală și am adăugat o a doua etapă la circuitul nostru - trimiterea acestuia pentru inspecție manuală de către o persoană. Acolo au fost incluse acele texte publicate pentru care clasificatorul nu a văzut probleme. Vă puteți imagina cu ușurință amploarea unei astfel de sarcini, așa că nu ne-am bazat doar pe evaluatori, ci am profitat și de „înțelepciunea mulțimii”, adică am apelat la tolokers pentru ajutor. Ei sunt cei care ne ajută să identificăm ceea ce a ratat aparatul și, prin urmare, îl învață.

Cache inteligentă și hashing LSH

O altă problemă pe care am întâlnit-o când lucram cu comentarii a fost spam-ul, sau mai exact, volumul și viteza de răspândire a acestuia. Când audiența Yandex.Region a început să crească rapid, spammerii au venit acolo. Au învățat să ocolească expresiile regulate schimbând ușor textul. Spam-ul, desigur, a fost încă găsit și șters, dar pe scara Yandex, un mesaj inacceptabil postat chiar și pentru 5 minute a putut fi văzut de sute de oameni.

Cum să deschizi comentarii și să nu te îneci în spam

Desigur, acest lucru nu ni s-a potrivit și am făcut cache inteligentă de text bazată pe LSH (hashing sensibil la localitate). Funcționează astfel: am normalizat textul, am eliminat legăturile din el și l-am tăiat în n-grame (secvențe de n litere). Apoi, s-au calculat hash-urile n-gramelor și a fost construit vectorul LSH al documentului din acestea. Ideea este că textele similare, chiar dacă au fost ușor modificate, s-au transformat în vectori similari.

Această soluție a făcut posibilă reutilizarea verdictelor clasificatorilor și tolokerilor pentru texte similare. În timpul unui atac de spam, de îndată ce primul mesaj a trecut de scanare și a intrat în cache cu un verdict „spam”, toate mesajele similare noi, chiar și cele modificate, au primit același verdict și au fost șterse automat. Mai târziu, am învățat cum să antrenăm și să reantrenăm automat clasificatorii de spam, dar acest „cache inteligent” a rămas cu noi și ne ajută de multe ori.

Bun clasificator de text

Fără să avem timp să luăm o pauză din lupta împotriva spamului, ne-am dat seama că 95% din conținutul nostru este moderat manual: clasificatorii reacționează doar la încălcări, iar majoritatea textelor sunt bune. Încărcăm agenți de curățare care în 95 de cazuri din 100 acordă nota „Totul este OK”. A trebuit să fac o treabă neobișnuită - să fac clasificatoare de conținut bun, din fericire, s-a acumulat suficient markup în acest timp.

Primul clasificator arăta astfel: lematizăm textul (reducem cuvintele la forma lor inițială), aruncăm toate părțile auxiliare de vorbire și folosim un „dicționar de leme bune” pregătit în prealabil. Dacă toate cuvintele din text sunt „bune”, atunci întregul text nu conține nicio încălcare. Pe diferite servicii, această abordare a oferit imediat o automatizare de la 25 la 35% a marcajului manual. Desigur, această abordare nu este ideală: este ușor să combinam mai multe cuvinte inocente și să obținem o declarație foarte ofensatoare, dar ne-a permis să atingem rapid un nivel bun de automatizare și ne-a dat timp să antrenăm modele mai complexe.

Versiunile următoare ale clasificatoarelor de text bune au inclus deja modele liniare, arbori de decizie și combinațiile acestora. Pentru a marca grosolănia și insultele, de exemplu, încercăm rețeaua neuronală BERT. Este important să înțelegeți sensul unui cuvânt în context și legătura dintre cuvintele din diferite propoziții, iar BERT face o treabă bună în acest sens. (Apropo, recent colegii de la News a declarat, cum se folosește tehnologia pentru o sarcină non-standard - găsirea erorilor în anteturi.) Ca urmare, a fost posibilă automatizarea până la 90% din flux, în funcție de serviciu.

Acuratețe, completitudine și viteză

Pentru a dezvolta, trebuie să înțelegeți ce beneficii aduc anumite clasificatoare automate, modificările acestora și dacă calitatea verificărilor manuale este degradată. Pentru a face acest lucru, folosim metrici de precizie și reamintire.

Acuratețea este proporția de verdicte corecte dintre toate verdictele despre conținutul prost. Cu cât este mai mare acuratețea, cu atât mai puține false pozitive. Dacă nu acordați atenție acurateței, atunci, teoretic, puteți șterge toate spamurile și obscenitățile și, împreună cu acestea, jumătate din mesajele bune. Pe de altă parte, dacă te bazezi doar pe acuratețe, atunci cea mai bună tehnologie va fi cea care nu prinde pe nimeni deloc. Prin urmare, există și un indicator de completitudine: ponderea conținutului rău identificat în volumul total de conținut rău. Aceste două valori se echilibrează reciproc.

Pentru a măsura, eșantionăm întregul flux de intrare pentru fiecare serviciu și oferim eșantioane de conținut evaluatorilor pentru evaluare și comparare cu soluții de mașini.

Dar există un alt indicator important.

Am scris mai sus că un mesaj inacceptabil poate fi văzut de sute de oameni chiar și în 5 minute. Deci numărăm de câte ori le-am arătat oamenilor conținut rău înainte de a-l ascunde. Acest lucru este important pentru că nu este suficient să lucrezi eficient - trebuie și să lucrezi rapid. Și când am construit o apărare împotriva înjurăturilor, am simțit-o la maxim.

Antimatism folosind exemplul pisicilor și câinilor

O mică digresiune lirică. Unii ar putea spune că obscenitatea și insultele nu sunt la fel de periculoase precum linkurile rău intenționate și nici la fel de enervante ca spam-ul. Dar ne străduim să menținem condiții confortabile de comunicare pentru milioane de utilizatori, iar oamenilor nu le place să se întoarcă în locurile în care sunt insultați. Nu degeaba interzicerea înjurăturilor și insultelor este specificată în regulile multor comunități, inclusiv pe Habré. Dar divagam.

Dicționarele de înjurături nu pot face față întregii bogății a limbii ruse. În ciuda faptului că există doar patru rădăcini principale de jurământ, din ele puteți alcătui un număr nenumărat de cuvinte care nu pot fi prinse de niciun motor obișnuit. În plus, puteți scrie o parte dintr-un cuvânt în transliterație, puteți înlocui litere cu combinații similare, puteți rearanja litere, adăuga asteriscuri etc. Uneori, fără context, este practic imposibil să determinați că utilizatorul a vrut să spună o înjurătură. Respectăm regulile lui Habr, așa că vom demonstra acest lucru nu cu exemple vii, ci cu pisici și câini.

Cum să deschizi comentarii și să nu te îneci în spam

„Lege”, a spus pisica. Dar înțelegem că pisica a spus un alt cuvânt...

Am început să ne gândim la algoritmi de „potrivire neclară” pentru dicționarul nostru și la o preprocesare mai inteligentă: am oferit transliterație, spații lipite și semne de punctuație, am căutat modele și am scris expresii regulate separate pe ele. Această abordare a adus rezultate, dar deseori a redus acuratețea și nu a oferit completitatea dorită.

Apoi am decis să „gândim ca niște înjurători”. Am început să introducem noi înșine zgomot în date: am rearanjat literele, am generat greșeli de scriere, am înlocuit literele cu ortografii similare și așa mai departe. Markupul inițial pentru aceasta a fost luat prin aplicarea dicționarelor mat pe corpuri mari de texte. Dacă iei o singură propoziție și o răsuciți în mai multe moduri, ajungeți cu multe propoziții. În acest fel, puteți crește proba de antrenament de zeci de ori. Tot ce a rămas a fost să antrenăm pe pool-ul rezultat un model mai mult sau mai puțin inteligent care să țină cont de context.

Cum să deschizi comentarii și să nu te îneci în spam

Este prea devreme să vorbim despre decizia finală. Încă experimentăm abordări ale acestei probleme, dar putem deja să vedem că o simplă rețea convoluțională simbolică de mai multe straturi depășește semnificativ dicționarele și motoarele obișnuite: este posibil să creștem atât acuratețea, cât și amintirea.

Desigur, înțelegem că întotdeauna vor exista modalități de a ocoli chiar și cea mai avansată automatizare, mai ales atunci când problema este atât de periculoasă: scrieți în așa fel încât o mașinărie proastă să nu înțeleagă. Aici, ca și în lupta împotriva spam-ului, scopul nostru nu este de a eradica însăși posibilitatea de a scrie ceva obscen; sarcina noastră este să ne asigurăm că jocul nu merită lumânarea.

Deschiderea oportunității de a vă împărtăși opinia, de a comunica și de a comenta nu este dificil. Este mult mai dificil să obții condiții sigure, confortabile și un tratament respectuos al oamenilor. Și fără aceasta nu va exista nicio dezvoltare a vreunei comunități.

Sursa: www.habr.com

Adauga un comentariu