Ce este NLP (procesarea limbajului natural)?

Caroline Eppright | Strateg de conținut | 25 martie 2021

Definiția procesării limbajului natural (NLP)

Procesarea limbajului natural (NLP) este o ramură a inteligenței artificiale (AI), care permite calculatoarelor să înțeleagă, să genereze și să manipuleze limbajul uman. Procesarea limbajului natural are capacitatea de a interoga datele folosind text sau voce în limbaj natural. Aceasta se numește și „limbaj de intrare”. Majoritatea consumatorilor au interacționat, probabil, cu NLP fără a-și da seama. De exemplu, NLP este tehnologia cate stă la baza asistenților virtuali, cum ar fi Oracle Digital Assistant (ODA), Siri, Cortana sau Alexa. Când punem întrebări acestor asistenți virtuali, NLP le permite să înțeleagă nu numai cererea utilizatorului, dar și să răspundă în limbaj natural. NLP se poate utiliza atât pentru textul scris, cât și pentru limbajului oral, și poate fi aplicat tuturor limbilor vorbite de oameni. Alte exemple de instrumente cu suport NLP includ căutarea pe web, filtrarea mesajelor de e-mail spam, traducerea automată a textului sau a vocii, rezumarea documentelor, analiza sentimentelor și verificarea gramaticală/ortografică. De exemplu, unele programe de e-mail pot sugera automat un răspuns adecvat la un mesaj pe baza conținutului acestuia - aceste programe utilizează NLP pentru a citi, analiza și răspunde la mesaj.

Există și alți termeni aproximativ sinonimi cu NLP. Înțelegerea limbajului natural (NLU) și generarea limbajului natural (NLG) se referă la utilizarea computerelor pentru a înțelege și, respectiv, produce limbaj uman. NLG are capacitatea de a oferi descrieri verbale ale întâmplărilor. Acesta se numește și „limbaj de ieșire” rezumând prin informații semnificative în text, utilizând un concept cunoscut sub numele de „gramatică de grafică”.

În practică, NLU înseamnă NLP. Înțelegerea de către computere a structurii și semnificației tuturor limbajelor umane, permițând dezvoltatorilor și utilizatorilor să interacționeze cu computerele folosind propoziții naturale și comunicare. Lingvistica computațională (CL) este domeniul științific care studiază aspectele de calcul ale limbajului uman, în timp ce NLP este disciplina inginerească al cărei obiect este construirea de artefacte computaționale care înțeleg, generează sau manipulează limbajul uman.

Cercetările privind NLP au început la scurt timp după inventarea computerelor digitale în anii '50, iar NLP se bazează atât pe lingvistică, cât și pe AI. Însă marile descoperiri ale ultimilor ani au fost posibile datorite învățării automate, ramură a AI care dezvoltă sisteme care învață și generalizează pe baza datelor. Învățarea structurată este un fel de învățare automată, care poate învăța tipare foarte complexe din seturi mari de date, ceea ce înseamnă că este ideal pentru a învăța complexitățile limbajului natural din seturile de date provenite de pe web.

Aplicații ale procesării limbajului natural

Automatizați sarcinile de rutină: Roboții de chat bazați pe NLP pot procesa un număr mare de sarcini de rutină, efectuate în prezent de agenți umani, ceea ce permite angajaților să lucreze la sarcini mai dificile și mai interesante. De exemplu, roboții de chat și asistenții digitali pot recunoaște o mare varietate de cereri ale utilizatorilor, le pot asocia cu intrarea corespunzătoare dintr-o bază de date a companiei și pot formula un răspuns corespunzător pentru utilizator.

Îmbunătățiți căutarea: NLP poate îmbunătăți căutarea după cuvinte cheie, pentru preluarea de documente și întrebări frecvente, prin dezambiguizarea sensurilor cuvintelor pe baza contextului (de exemplu, „agent” are semnificații diferite în contexte biomedicale și tehnice), asocierea de sinonime (de exemplu, preluarea documentelor ce conțin termenul „autovehicul”, având în vedere căutarea după „automobil”) și luarea în considerare a variațiilor morfologice (ceea ce este important pentru interogările în altă limbă decât engleza). Sistemele eficiente de căutare academică bazate pe NLP pot îmbunătăți semnificativ accesul la cercetări relevante de ultimă oră pentru medici, avocați și alți specialiști.

Optimizarea motoarelor de căutare: NLP este un instrument excelent pentru companiile aflate pe poziții superioare în căutarea online, prin analizarea căutărilor pentru optimizarea conținutului. Motoarele de căutare folosesc NLP pentru a clasifica rezultatele - iar cunoașterea metodelor eficiente de utilizare a acestor tehnici, facilitează clasificarea pe poziții superioare concurenței. Aceasta lucru va duce la creșterea vizibilității pentru compania dvs.

Analiza și organizarea colecțiilor mari de documente: Tehnicile NLP, precum clusteringul de documente și modelarea subiectelor simplifică sarcina de a înțelege diversitatea conținutului în colecțiile mari de documente, cum ar fi rapoartele companiilor, știrile sau documentele științifice. Aceste tehnici sunt adesea folosite în investigații criminalistice.

Analizele mediilor de socializare: NLP poate analiza opiniile clienților și comentariile din mediile de socializare pentru a înțelege mai bine volume uriașe de informații. Analiza sentimentelor identifică comentarii pozitive și negative într-un flux de comentarii din mediile de socializare, oferind o măsură directă a sentimentului clienților în timp real. Aceasta poate avea beneficii considerabile, cum ar fi creșterea satisfacției clienților și a veniturilor.

Informații de piață: Cu NLP care lucrează pentru a analiza limbajul clienților companiei, veți gestiona mai bine ceea ce doresc și, de asemenea, veți avea o idee mai bună despre modul de comunicare cu aceștia. Analiza sentimentelor orientată spre aspect detectează sentimentul asociat cu anumite aspecte sau produse din social media (de exemplu, „tastatura este grozavă, dar ecranul este prea întunecat”), oferind informații practice pentru proiectarea și marketingul produselor.

Moderarea conținutului: Dacă businessul dvs. atrage volume mari de comentarii ale utilizatorilor sau ale clienților, NLP vă permite să moderați cele spuse, pentru a menține calitatea și un spirit civilizat, analizând nu doar cuvintele, ci și tonul și intenția comentariilor.

Sectoare de activitate care utilizează procesarea limbajului natural

NLP simplifică și automatizează o gamă largă de procese de business, în special cele care implică un volum mare de text nestructurat, precum e-mailuri, sondaje, conversații în mediile de socializare și multe altele. Datorită NLP, companiile își pot analiza mai bine datele, pentru a lua deciziile corecte. Iată câteva exemple de utilizări practice ale NLP:

  • Asistență medicală: pe măsură ce sistemele de sănătate din întreaga lume trec la fișe medicale electronice, se confruntă cu volume mari de date nestructurate. NLP poate fi utilizat pentru a analiza și a obține opinii avizate noi despre fișele medicale.
  • Drept: Pentru a pregăti un caz, avocații trebuie să petreacă deseori ore întregi examinând colecții mari de documente și căutând materiale relevante pentru un anumit caz. Tehnologia NLP poate automatiza procesul de investigații juridice, economisind timp și eliminând erorile umane, prin parcurgerea unor volume mari de documente.
  • Finanțe: Lumea financiară se mișcă extrem de rapid și orice avantaj față de concurență este important. În domeniul financiar, traderii utilizează tehnologia NLP pentru a mina automat informații din documentele companiilor și din comunicatele de știri pentru a extrage informații relevante pentru portofolii și deciziile de tranzacționare.
  • Servicii pentru clienți: Multe companii mari utilizează asistenți virtuali sau roboți de chat pentru a răspunde unor întrebări de bază ale clienților și la solicitări de informații (cum ar fi întrebările frecvente), transferând întrebările complexe personalului uman atunci când este necesar.
  • Asigurări: Companiile mari de asigurări utilizează NLP pentru a parcurge documentele și rapoartele legate de revendicări, într-un efort de a simplifica modul de derulare a activității.

Prezentare generală a tehnologiei NLP

Modele de învățare automată pentru NLP: Mai devreme am menționat faptul că NLP-ul modern se bazează mult pe o abordare a AI-ului numită învățare automată. Învățarea automată face predicții prin generalizarea exemplelor dintr-un set de date. Acest set de date poartă numele de date pentru instruire, iar algoritmii de învățare automată exersează pe aceste date pentru instruire pentru a genera un model de învățare automată ce efectuează o sarcină destinație.

De exemplu, datele de instruire pentru analiza sentimentelor constau în propoziții împreună cu sentimentul aferent (de exemplu, sentiment pozitiv, negativ sau neutru). Un algoritm de învățare automată citește acest set de date și produce un model care preia propozițiile ca date de intrare și returnează sentimentele corespunzătoare acestora. Acest tip de model, care preia propoziții sau documente ca date de intrare și returnează o etichetă pentru intrarea respectivă, este denumit model de clasificare a documentelor. Clasificatorii de documente pot fi utilizați și pentru clasificarea documentelor după subiectele pe care le menționează (de exemplu, sport, finanțe, politică etc.).

Un alt tip de model este utilizat pentru recunoașterea și clasificarea entităților din documente. Pentru fiecare cuvânt dintr-un document, modelul prognozează dacă acel cuvânt face parte dintr-o mențiune a entității și, dacă da, ce tip de entitate este implicată. De exemplu, în fraza „Acțiunile XYZ Corp s-au tranzacționat ieri la 28 USD”, „XYZ Corp” este o entitate companie, „28 USD” este o valoare monetară, iar „ieri” este o dată. Datele de exersare pentru recunoașterea entităților sunt o colecție de texte, unde fiecare cuvânt este asociat cu tipurile de entități la care se referă. Acest tip de model, care produce o etichetă pentru fiecare cuvânt din datele de intrare, este denumit model de etichetare a secvenței.

Modelele secvență-secvență constituie o adăugire foarte recentă la familia de modele utilizate în NLP. Un model secvență-secvență (sau seq2seq) preia o întreagă propoziție sau document ca date de intrare (ca într-un clasificator de documente), dar produce o propoziție sau o altă secvență (de exemplu, un program de computer) ca rezultat. (Un clasificator de documente produce un singur simbol ca rezultat). Exemple de utilizări ale modelelor seq2seq includ traducerea automată, care, de exemplu, ia o propoziție în limba engleză ca date de intrare și returnează propoziția în limba franceză; rezumarea documentelor (unde ieșirea este un rezumat al intrării); și analiza semantică (unde intrarea este o interogare sau o solicitare în limba engleză, iar rezultatul este un program de computer care implementează solicitarea respectivă).

Învățare structurată, modele pre-exersate și învățare prin transfer: Învățarea structurată este cel mai utilizat tip de învățare automată din NLP. În anii '80, cercetătorii au creat rețele neurale, în care un număr mare de modele primitive de învățare automată sunt combinate într-o singură rețea: prin analogie cu creierul, modelele simple de învățare automată se numesc uneori „neuroni”. Acești neuroni sunt dispuși în straturi, iar o rețea neuronală profundă conține mai multe straturi. Învățarea structurată este o învățare automată care utilizează modele de rețea neuronale profunde.

Datorită complexității sale, este nevoie, în general, de un volum mare date pentru a instrui o rețea neuronală profundă, iar pentru procesarea acesteia este nevoie de putere de calcul și timp. Modelele moderne de rețea neuronală profundă NLP sunt instruite dintr-o gamă diversă de surse, cum ar fi Wikipedia și date preluate de pe web. Datele de exersare ar putea ajunge de ordinul a 10 GB sau mai mult, și ar fi necesară o săptămână sau mai mult, pe un cluster de înaltă performanță, pentru a instrui rețeaua neuronală profundă. (Cercetătorii au observat că instruirea unor modele și mai profunde, din seturi de date și mai mari, are performanțe și mai mari, astfel încât în prezent există o cursă pentru instruirea de modele tot mai mari din seturi de date tot mai ample).

În aparență, cerințele vorace privind datele și puterea de calcul ale rețelelor neuronale limitează drastic utilitatea acestora. Cu toate acestea, învățarea prin transfer permite instruirea suplimentară a unei rețele neurale profunde instruite, pentru a realiza o nouă activitate, cu mult mai puține date de exersate și cu un efort de calcul mult mai redus. Cel mai simplu tip de învățare prin transfer se numește optimizare fină. Acesta constă pur și simplu în instruirea modelului pe un set mare de date generice (de exemplu, Wikipedia) și apoi în instruirea suplimentară („optimizare fină”) a modelului pe un set de date mult mai mic, specific sarcinii, etichetat cu sarcina țintă reală. Poate fi surprinzător, dar seturile de date cu optimizare fină pot fi extrem de mici, conținând doar sute sau chiar zeci de exemple de instruire, iar instruirea de optimizare fină necesită doar câteva minute pentru un singur CPU. Învățarea prin transfer facilitează implementarea modelelor de învățare structurată în întreaga companie.

În prezent, există un întreg ecosistem de furnizori, care oferă modele de învățare structurată pre-instruite, care sunt instruite oe diverse combinații de limbi, seturi de date și sarcini de pre-instruire. Aceste modele pre-instruite pot fi descărcate și reglate fin pentru o gamă largă de activități destinație diferite.

Aflați cum înființarea unui centru de excelență (CoE) AI vă poate stimula succesul cu tehnologiile NLP. Cartea noastră electronică oferă sfaturi pentru construirea unui CoE și utilizarea eficientă a modelelor avansate de învățare automată.

Exemplu de tehnici de preprocesare NLP

Tokenizare: Tokenizarea separă textul brut (de exemplu, o propoziție sau un document) într-o secvență de tokenuri, cum ar fi cuvinte sau componente de subcuvinte. Tokenizarea este deseori primul pas dintr-un pipeline de procesare NLP. Tokenurile sunt, frecvent, secvențe recurente de text tratate ca unități atomice în operații ulterioare de procesare. Acestea pot fi cuvinte, unități de subcuvinte denumite morfeme (de exemplu, prefixe precum „ne-” sau sufixe precum „-ism” în limba română) sau chiar caractere individuale.

Modelele „saci de cuvinte”: Modelele „saci de cuvinte” tratează documentele ca pe colecții neordonate de tokenuri sau cuvinte (un „sac” este ca un set, cu excepția faptului că urmărește de câte ori apare fiecare element). Pentru că ignoră complet ordinea cuvintelor, modelele de tip „sac de cuvinte” vor confunda o propoziție precum „câinele mușcă omul” cu „omul mușcă câinele”. Cu toate acestea, modelele de tip „saci de cuvinte” sunt deseori folosite din motive de eficiență pentru operații de anvergură de preluare de informații, cum ar fi motoarele de căutare. Acestea pot produce rezultate apropiate de cele moderne, cu documente mai lungi.

Eliminarea cuvintelor ignorate: Un „cuvânt ignorat” este un token ignorat la procesarea ulterioară. Acestea sunt de obicei cuvinte scurte, frecvente, cum ar fi „un”, „o” sau „și”. Modelele de tip „sac de cuvinte” și motoarele de căutare ignoră deseori cuvintele ignorate, pentru a reduce timpul de procesare și spațiul de stocare în baza de date. Rețelele neuronale profunde iau, de obicei, în considerare ordinea cuvintelor (adică nu sunt modele de tip „sac de cuvinte”) și nu elimină cuvintele ignorate, deoarece acestea din urmă pot transmite diferențe subtile între sensuri (de exemplu, „pește și pisică” și „pește pisică” nu înseamnă același lucru, chiar dacă textele sunt identice după eliminarea cuvântului ignorat).

Identificarea rădăcinii și lematizarea: Morfemele sunt cele mai mici elemente purtătoare de sens ale unei limbi. De obicei, morfemele sunt mai mici decât cuvintele. De exemplu, „revizitat” constă din prefixul „re-”, rădăcina „vizita” și sufixul „-at” aferent timpului trecut. Identificarea rădăcinii și lematizarea creează o corelație între cuvintele la formele rădăcină ale acestora (de exemplu, „revizita” + TRECUT). Identificarea rădăcinii și lematizarea sunt pași cruciali în modelele de învățare structurată, dar modelele de învățare structurată învață, în general, aceste regularități din datele lor de exersare și, prin urmare, nu necesită etape explicite de identificare a rădăcinii sau lematizare.

Recunoașterea părților de vorbire și analiză sintactică: Recunoașterea părților de vorbire (PdV) este procesul de asociere a fiecărui cuvânt cu partea de vorbire pe care o reprezintă (de exemplu, substantiv, verb, adjectiv etc.). Un analizor sintactic identifică modul în care se combină cuvintele pentru a forma fraze, propoziții incluse în fraze și propoziții întregi. Recunoașterea PdV este o sarcină de asociere secvențială, iar analiza sintactică este un tip extins de sarcină de asociere secvențială, iar rețelele neurale profunde sunt o tehnologie de ultimă generație atât pentru recunoașterea PdV, cât și pentru analiza sintactică. Anterior învățării structurate, recunoașterea PdV și analiza sintactică au fost pași esențiali în înțelegerea propozițiilor. Cu toate acestea, modelele NLP moderne de învățare structurată beneficiază în general doar în mod marginal (în cel mai bun caz) de PdV sau de informațiile sintactice, astfel încât nici recunoașterea PdV, nici analiza sintactică nu sunt utilizate pe scară largă în metodele NLP de învățare structurată.

Limbaje de programare NLP

Python:

Bibliotecile NLP și seturile de instrumente sunt, în general, disponibile în Python și, din acest motiv, marea majoritate a proiectelor NLP sunt realizate în Python. Mediul de dezvoltare interactiv de la Python facilitează dezvoltarea și testarea de coduri noi.

Java și C++:

Pentru procesarea unor volume mari de date, se preferă adesea C++ și Java, deoarece acceptă coduri mai eficiente.

Biblioteci NLP și medii de dezvoltare

Iată câteva exemple de biblioteci NLP cunoscute.

TensorFlow și PyTorch: Acestea sunt cele mai cunoscute seturi de instrumente pentru învățare structurată. Acestea sunt disponibile gratuit în scopuri comerciale și de cercetare. Deși acceptă mai multe limbaje, limbajul principal al acestora este Python. Acestea includ biblioteci ample de componente preintegrate, astfel încât chiar și modelele NLP de învățare aprofundată foarte sofisticate necesită deseori doar conectarea acestor componente. Se oferă suport și pentru o infrastructură de calcul cu performanțe ridicate, precum ar fi clusterele de sisteme cu acceleratoare pentru procesoare grafice (GPU). Dispun de o documentație și tutoriale excelente.

AllenNLP: Aceasta este o bibliotecă de componente NLP de nivel înalt (de exemplu, roboți de chat simpli) implementați în PyTorch și Python. Documentația este excelentă.

HuggingFace: Această companie distribuie sute de modele NLP pre-instruite de învățare structurată diferite, precum și un set de instrumente software plug-and-play în TensorFlow și PyTorch, care permite dezvoltatorilor să evalueze rapid cât de bine își îndeplinesc diferitele modele pre-instruite sarcinile specifice care le revin.

Spark NLP: Spark NLP este o bibliotecă open source de procesare a textelor pentru NLP avansat pentru limbajele de programare Python, Java și Scala. Obiectivul său este de a oferi o interfață de programare a aplicațiilor (API) pentru pipeline-urile de procesare a limbajului natural. Aceasta oferă modele de rețea neuronală pre-instruite, pipeline-uri și înglobări, precum și suport pentru instruirea de modele personalizate.

SpaCy NLP: SpaCy este o bibliotecă open source gratuită, pentru NLP avansat în Python, special concepută pentru a facilita crearea de aplicații care pot procesa și înțelege volume mari de text. SpaCy este cunoscut ca fiind extrem de intuitiv și poate gestiona multe dintre sarcinile necesare în proiectele NLP de uz frecvent.

Pe scurt, procesarea limbajului natural reprezintă un domeniu interesant de dezvoltare a inteligenței artificiale, care asigură baza pentru o gamă largă de produse noi, cum ar fi motoarele de căutare, roboții de chat, sistemele de recomandări și sistemele de conversie a vocii în text. Deoarece interfețele umane cu computerele devin tot mai independente de butoane, formulare și limbaje specifice domeniului, cererea de creștere în materie de procesare a limbajului natural își va continua trendul ascendent. Din acest motiv, Oracle Cloud Infrastructure s-a angajat să ofere performanțe on-premises, cu configurațiile și instrumentele noastre pentru NLP, optimizate pentru performanțe. Oracle Cloud Infrastructure oferă o gamă de configurații GPU care pot fi implementate în câteva minute, pentru a începe experimentarea NLP.

Oracle Chatbot
Disconnected