TSM - Clasificarea automată a textelor folosind tehnici de procesare a limbajului natural

Adela Mureșan - Senior Big Data Developer @ VE Interactive


În strânsă legătură cu tehnologiile Big Data este domeniul inteligenței artificiale. Una dintre ramurile acestei discipline se ocupă cu studiul limbajului natural. Calculatoarele pot fi învățate să recunoască anumite șabloane din textele prelucrate și, pe baza acestora, pot clasifica automat propoziții, fraze sau chiar documente complete în grupuri predefinite. Folosind instrumente open source, putem configura cu ușurința un astfel de proiect, capabil să clasifice texte, bazându-se pe o învățare prealabilă, realizată în mod automat, folosind un set de date prestabilit.

Machine Learning în procesarea limbajului natural

https://abbyy.technology/en:features:classification

Mulți algoritmi de machine learning pentru procesarea limbajului natural folosesc un model statistic în care deciziile sunt luate folosind o abordare probabilistică, iar mai recent, tehnicile de deep learning au obținut de asemenea rezultate foarte bune. Datele de intrare sunt fragmente de text care pot fi văzute ca simple secvențe de cuvinte, fraze întregi sau chiar documente complete. Textul este transformat și ponderi sunt asignate diverselor atribute ale textului.

Modelele de machine learning sunt învățate pe baza datelor de intrare și ulterior pot fi folosite pentru date noi, nefamiliare. Algoritmii astfel creați pot învața din date și pot înțelege mai bine un set nou de date sau un text cu greșeli de scriere sau care conține cuvinte lipsă, comparativ cu modelele lingvistice. Acestea din urmă se bazează pe un set de reguli predefinite de gramatică care sunt predispuse la erori pentru intrări necunoscute sau incorecte și, în plus, sunt mai greu de întreținut atunci când este vorba de sisteme mari și complexe.

Modelele de machine learning au o precizie care depinde de mărimea datelor de intrare. Furnizarea de noi texte pe care modelul le poate învăța va îmbunătăți rezultatele de predicție ale noilor date prelucrate.

Procesul de prelucrare a limbajului natural are o diversitate de domenii, dintre care amintim: etichetarea părții de vorbire, recunoașterea unei entității (care încearcă să localizeze și să identifice entități numite cum ar fi persoane, locuri, organizații și altele), traducere automată, răspunsul la întrebări, analiza sentimentului, recunoașterea vorbirii și multe altele.

Clasificarea automată a documentelor

Unele capabilități de procesare a limbajului natural se concentrează pe segmentarea și recunoașterea subiectului textelor. Aceasta implică un set de date de intrare și unele modele de învățare automată care sunt capabile să clasifice textul în mai multe subiecte.

Problema poate avea două abordări: învățarea nesupervizată și supervizată. Învățarea supervizată utilizează datele care au fost etichetate cu clasele sau subiectele corecte, în timp ce algoritmii nesupervizați folosesc date de intrare care nu au fost adnotate manual cu clasa sau subiectul corect. În general, învățarea nesupervizată este mai complexă și oferă rezultate mai puțin precise decât învățarea supervizată. Cu toate acestea, volumul datelor care nu a fost etichetat este mult mai mare decât cele care au clasele corecte atribuite și în unele situații, un algoritm nesupervizat este singura opțiune.

https://blogs.technet.microsoft.com/machinelearning/2017/02/13/cloud-scale-text-classification-with-convolutional-neural-networks-on-microsoft-azure/

În contextul limbajului natural, algoritmii nesupervizați se bazează pe algoritmii de clustering pentru a separa datele în diverse grupuri și pentru a identifica clasa acelui grup.

Pe de altă parte, algoritmii supervizați necesită un set de date textuale care au clasele sau categoriile corecte completate în prealabil. Cum se obține textul etichetat? Folosind datele existente care au fost atribuite unei categorii cum ar fi filmele atribuite unui gen, categorii de produse, categorii de documente, subiecte de comentarii și așa mai departe.

Un algoritm supervizat de clasificare se va uita la datele de intrare și ar trebui să fie în măsură să indice subiectul sau clasa la care un text nou ar trebui să aparțină, subiect ales din clasele existente găsite în datele de învățare.

Nivelul de încredere este direct proporțional într-o oarecare măsură cu cantitatea de date de învățare disponibilă și cu similitudinea dintre noul text primit și cele folosite pentru realizarea modelului. Majoritatea algoritmilor indică, de asemenea, nivelul de încredere pentru o clasificare corectă, de obicei, în intervalul de la 0 la 1. Utilizatorul poate alege un prag privind precizia de utilizat pentru predicție și când să folosească sau să renunțe la rezultat. Acest rezultat poate veni cu una sau mai multe clase pe care modelul le-a ales.

Un flux complet pentru un algoritm supervizat de procesare a limbajului natural este format din colectarea datelor etichetate, pregătirea datelor, crearea modelului de clasificare și folosirea modelul pentru a prezice subiectul unui nou text.

https://cognitiveclass.ai/courses/data-science-methodology-2/

Pregătirea datelor

Clasificarea documentelor începe cu o listă de texte compuse din secvențe de cuvinte sau fraze complete. Ele nu pot fi folosite ca elemente de învățare în forma originală. Aceste documente trebuie împărțite și transformate astfel încât să devină atribute potrivite pentru un model de învățare.

N-gram

Textul este adesea împărțit în cuvinte sau grame. Gramele, care sunt adesea denumite n-grams, sunt o secvență de n cuvinte din text.

Punctuația și cuvintele de stop

Cuvintele de stop sunt cele mai frecvente cuvinte într-o limbă. În limba engleză, câteva cuvinte de stop sunt: ​​"and", "this", "all", "he", "is". Acest pas ar trebui să fie unul dintre primii pași pentru curățarea datelor, cu excepția dăților în care este necesară căutarea frazelor, caz în care sunt utile. Cuvintele de stop sunt adesea date de zgomot care pot reduce precizia.

Lemmatisation și Stemming

Cuvintele pot lua mai multe forme. De exemplu, în engleză, verbul "to run" poate fi găsit ca "running", "runs" și "ran". Cuvântul de bază, în acest caz "run", se numește lemma pentru cuvânt. Procesul de "lemmatization" încearcă să reducă cuvintele la forma de bază a lemmei, deoarece în esență ele reprezintă același lucru.

Procesul de "[lemmatisation](https://en.wikipedia.org/wiki/Lemmatisation )" este legat și deseori confundată cu "stemming". Ambele încearcă să reducă formele inflexionale la o bază comună. "Stemmingul" funcționează pe un singur cuvânt, fără contexte sau căutare vocabulară. Este un proces euristic care, de obicei, îndepărtează sfârșitul cuvântului pentru a elimina formele derivate și pluralurile. "Lemmatisation", pe de altă parte, ia întregul context în calcul. Deoarece același cuvânt poate avea semnificații diferite, "lemmatisation" implică o analiză morfologică a textului și necesită utilizarea unui vocabular sau a unui dicționar. De exemplu, în engleză, cuvântul "better" are "good" ca și lemmă și nu este capturat de procesul de "stemming", deoarece nu poate fi redus la altă formă. Cu toate acestea, "stemmingul" este mai ușor de implementat și de executat deoarece complexitatea sa este redusă. Acest lucru vine, de asemenea, cu o penalitate privind exactitatea care, în funcție de context, poate fi considerată acceptabilă în scopul de a accelera timpul de rulare și pentru a economisi resurse.

Învățarea modelului de machine learning

Există multe căi de urmat pentru a atinge acest obiectiv. Cerința este să existe un set de date instruite cu clasele sau subiectele corecte atribuite fiecărui text care este considerat o entitate. În funcție de implementarea aleasă, pregătirea datelor poate fi inclusă în etapa de creare a modelului, utilizând anumite funcții încorporate sau trebuie făcută în etapa anterioară.

O alternativă open-source pentru a realiza un model de machine learning pentru procesarea limbajului natural este utilizarea OpenNLP, un set de instrumente de învățare bazate pe Java. Pentru a le folosi, este pur și simplu necesar să importăm dependența jarului în proiect.

http://medicalfuturist.com/chatbots-health-assistants/

În contextul clasificării automate, OpenNLP are un clasificator de documente încorporat, bazat pe frameworkul entropiei maxime. Clasificările sunt specifice cerințelor și, prin urmare, nu există un model predefinit pentru clasificatorul de documente. Modelul trebuie creat având în vedere datele de intrare adnotate și limba textului. În mod implicit, clasificatorul de documente OpenNLP necesită un flux de date text cu subiectul(clasa) și textul separat de spații. Pe baza acestui set de date, va fi creat un model binar de machine learning ce va fi utilizat într-o etapă ulterioară pentru a prezice noi date primite.

Dacă Java nu este limbajul de programare preferat și cineva este mai familiarizat cu Python, NLTK (Natural Language Toolkit) oferă câteva interfețe ușor de utilizat. NLTK este o platformă pentru utilizatorii Python interesați să lucreze cu datele din limbajul natural. NLTK oferă numeroase librării de procesare a textului, inclusiv unele pentru clasificare. Clasificarea poate să fie o clasificare binară, fie o clasificare multi-clasă. Pentru o clasificare binară, textul este de așteptat să aparțină exact unei categorii, în timp ce pentru o clasificare multi-clasă, textul poate să aparțină la zero sau mai multe clase.

NLTK definește mai mulți clasificatori printre care se găsesc următoarele:

Cum rămâne cu Sparkhttps://spark.apache.org/? Spark are cea mai mare comunitate open source din lumea Big Data, dar ar putea fi folosit în contextul procesării limbajului natural și al clasificării textului? Da, ar putea fi. În comparație cu celelalte două exemple menționate mai sus, nu are un clasificator de documente specific, dar oferă câteva clase de transformare care pot fi de ajutor, cum ar fi:

După transformarea datelor de text, se pot aplica clasificatori binari și multi-clase obișnuiți (care nu sunt specifici pentru NLP) pentru a obține etichetele dorite.

Clasificarea automată a textelor

Modelul care a fost creat anterior trebuie încărcat din nou dacă este o componentă separată. Pentru ca o nouă intrare să fie clasificată, aceasta trebuie transformată pentru a se potrivi cu forma datelor utilizate pentru generarea modelului. Același set de transformări care au fost aplicate pe datele de învățare, trebuie să fie aplicate textului care trebuie clasificat. Ulterior, modelul poate prezice una sau mai multe clase pentru noile date de text.

Câteva exemple de utilizare a auto-categorizării folosind procesări ale limbajului natural constau în clasificarea comentariilor și textului în subiecte, în predicția genurilor de filme, în alocarea automată a produselor unui departament corect, în stabilirea categoriilor pentru cărți sau documente, în clasificarea anunțurilor și e-mailurilor în categorii, detectarea de spam și multe altele.

Tipul de date care trebuie incluse în procesul de instruire este condiționat de cazul de utilizare. Pentru exemplul filmului, descrierea poate fi un bun indicator, actorii și compania de producție. Pentru exemplul comentariilor, corpul comentariilor ar trebui să fie suficient. Pentru cazul de identificare a departamentelor produselor, pot fi luate în considerare mai multe elemente, cum ar fi numele produsului, descrierea sau marca.

Fiecare exemplu este unic în felul său. Selectarea celor mai bune caracteristici depinde de caz și este de datoria persoanei care implementează procesul să le aleagă pe cele mai potrivite. Pentru clasificarea automată, instrumentele sunt disponibile, sunt open-source și așteaptă să fie utilizate.