Aspecte computaționale ale procesării textelor Coordonator științific : Absolvent: Prof. dr. Liviu P. Dinu Alina Măican 1 Cuprins 1 MOTIVAȚIE… [605010]
BUCUREȘTI 2019
UNIVERSITATEA BUCURE ȘTI
FACULTATEA DE MATEMA TICĂ ȘI INFORMATICĂ
SPECIALIZAREA INFORM ATICĂ
LUCRARE DE LICENȚĂ
Aspecte computaționale ale procesării textelor
Coordonator științific : Absolvent: [anonimizat] P. Dinu Alina Măican
1
Cuprins
1 MOTIVAȚIE ………………………….. ………………………….. ………………………….. ………………………….. …………………… 3
1.1 DIACRITICE ………………………….. ………………………….. ………………………….. ………………………….. ……………………….. 3
1.2 IMPORTANȚA DIACRITICE LOR ………………………….. ………………………….. ………………………….. ………………………….. …… 3
1.3 LUCRĂRI ÎN DOMENIUL R ESTAURĂRII DIACRITICELO R ………………………….. ………………………….. ………………………….. …….. 4
1.3.1 Metode de restaurare a diacriticelor la nivel de literă ………………………….. ………………………….. ……………. 5
1.3.2 Metode de restaurare a diacriticelor la nivel de cuvânt ………………………….. ………………………….. ………….. 6
2 ASPECTE TEORETICE ………………………….. ………………………….. ………………………….. ………………………….. ……….. 8
2.1 INTELIGENȚA ARTIFICIA LĂ ………………………….. ………………………….. ………………………….. ………………………….. ……….. 8
2.2 PROCESAREA LIMBAJULUI NATURAL ………………………….. ………………………….. ………………………….. ……………………….. 9
2.2.1 Scurt istoric ………………………….. ………………………….. ………………………….. ………………………….. ……………… 9
2.2.2 Definiție ………………………….. ………………………….. ………………………….. ………………………….. ………………… 10
2.2.3 Sintaxa ………………………….. ………………………….. ………………………….. ………………………….. ………………….. 10
2.2.4 Semantica ………………………….. ………………………….. ………………………….. ………………………….. ……………… 11
2.2.5 Domenii și aplicații ale procesării limbajului natural ………………………….. ………………………….. …………….. 11
2.3 REȚELE NEURALE ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 14
2.3.1 Rețele feed -forward ………………………….. ………………………….. ………………………….. ………………………….. … 15
2.4 N-GRAME ………………………….. ………………………….. ………………………….. ………………………….. …………………….. 18
2.5 WORD EMBEDDINGS ………………………….. ………………………….. ………………………….. ………………………….. ………….. 20
2.6 WORD2VEC ………………………….. ………………………….. ………………………….. ………………………….. ……………………. 20
2.6.1 C -BOW ………………………….. ………………………….. ………………………….. ………………………….. ………………….. 21
2.6.2 SKIP -GRAM ………………………….. ………………………….. ………………………….. ………………………….. ……………. 22
2.7 FASTTEXT ………………………….. ………………………….. ………………………….. ………………………….. ………………………. 23
3 IMPLEMENTARE ………………………….. ………………………….. ………………………….. ………………………….. ……………. 24
3.1 ASPECTE TEHNICE ………………………….. ………………………….. ………………………….. ………………………….. ………………. 24
3.2 SETUL DE DATE ………………………….. ………………………….. ………………………….. ………………………….. …………………. 25
3.3 PREPROCESARE ………………………….. ………………………….. ………………………….. ………………………….. …………………. 25
3.4 ALGORITMUL PROPUS ………………………….. ………………………….. ………………………….. ………………………….. …………. 26
3.5 ARHITECURA MODELELOR ………………………….. ………………………….. ………………………….. ………………………….. …….. 29
3.5.1 Model Word2Vec implementat în TensorFlow ………………………….. ………………………….. …………………….. 29
3.5.2 Model Word2Vec implementat în Gensim ………………………….. ………………………….. ………………………….. 31
3.5.3 Model FastText implementat în Gensim ………………………….. ………………………….. ………………………….. …. 33
3.6 REZULTATE ………………………….. ………………………….. ………………………….. ………………………….. ……………………… 35
4 CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. …………………… 37
2
Introducere
Lucrarea de față introduce un studiu realizat asupra procesului de restaurare a
diacriticelor în textele din limba română. Diacriticele sunt semne grafice folosite pentru a
schimba atât sensul cât și modul cum se pronunță unele cuvinte . Rolul pe care îl au în limba
română este deseori subestimat. Astfel, prezentăm un algoritm ce constă în trei pași pentru a
aborda problema diacritizării , pentru care ob ținem o acuratețe de până la 93, 9% pe datele de
testare .
Capitolul 1 aduce argumente solide pentru motivare a importanței folosirii diacriticelor.
De asemenea, sunt trecute în revistă lucrări în domeniu , relevante pentru problematica restaurării
diacriticelor.
În Capitolul 2 sunt prezentate noțiunile teoretice necesare pentru fundamentarea
implementării algorit mului de restaurare a diacriticelor. Prima parte face o introducere în câmpul
vast al inteligenței artificiale, al procesării limbajului natural, apoi trece la noțiuni legate de
rețele neurale, cele mai simple model e de limbaj ( n-gramele ), bine cunoscutele word embeddings
și nu în ultimul rând, modele de rețele neurale word2vec cu cele două variante skip -gram , c-bow
și modelul fasttext.
In Capitolul 3 este expus algoritmul principa l de restaurare a diacriticelor dar și cele trei
variante pentru crearea emb edding -urilor , cu motivarea pentr u folosirea unu i feature anume. În
final sunt prezentate și interpretate rezultatele alături de o comparație cu rezultatele altor lucrări
din domeniu.
Capitolul 4 prezintă concluziile referitoare la problematica restaurări i diacriticelor. Sunt
evidențiate rezultatele , făra a ignora limitările resurselor de timp, spațiu, dar și limitările setului
de date. Totodată , se menționează câteva perspective legate de viitoare îmbunătățiri și cercetare.
3
Capitolul 1
Motivație
1.1 Diacritice
„Dacă scrii fără diacritice, ești roman , nu român !” [1]
Potrivit definiț iei dată de dicționar, un semn diacritic este un semn grafic adăugat la
o literă pentru a indica o d iferență în pronunție sau pentru a deosebi sensurile a
două cuvinte altfel scrise identic.
Semnele diacritic e se plasează de obicei , deasupra sau dedesubtul unei litere, dar sunt
posibile și alte poziții.Termenul derivă din limba greacă , unde διακριτικός (diakratikos ) are
sensul d e cel „care distinge” [2].
1.2 Importanța diacriticelor
În ultimii ani, rețelele de socializare precum Facebook, Twiter sau Instagram au
înregistrat o creștere spectaculoasă în rândul tinerilor și nu numai , atât în ceea ce privește
numărul de utilizatori înregistrați cu conturi, cât și în ceea ce priveș te gradul de accesare . Prin
urmare , cercetătorii din toate domeniile au devenit foarte interesați de aceste platforme, deoarece
oamenii au început să își împărtășească părerile cu privire la diferite subiec te, oferind astfel o
sursă de date prețioasă pentru domenii p recum detectarea evenimentelor [3], detectarea
sentimentelor [4], det ectarea anomaliilor din trafic [5] sau chiar î n prezicerea crimelor [6].
Astfel , limba folosită în rețelele de socializare dif eră destul de mult față de cea formală, iar
prezența unor cantități mari de date cu zgomot îngreunează munca cercetătorilor.
Dezambiguizarea lexicală este centrul varietății sistemelor ș i tehnicilor din NLP, variind
de la corectoare de gramatică la sisteme de traducere automată.
4
Fig 1.1 Diacritice pentru limbi europene și asiatice
În limba română, ca și î n celelalte limbi , diacriticele joacă un rol important în distincția
sensului cuvi ntelor . Deși această problemă nu pare dif icilă pentru vorbitorii nativi sau cu un
nivel ridicat de educaț ie (aceștia bazându -se pe cunoș tințele lor de gramatică ), totuș i, pentru
cititorii/vorbitorii începători sau cu mai puține cunoștințe, pentru vorbitori i non -nativi, pentru
persoa nele care suferă de dislexie, care au probleme comportamentale și de comunicare (autism,
ADHD, Alzh eimer), un text fără diacritice devine o sursă de confuzie .
Luând în considerare motivele de mai sus, putem afirma cu încredere c ă diacriticele au un
rol important în înțelegerea orică rei limbi , iar reconstruirea acestora prin tehnicile/procedeele
prezentate î n lucrarea de față , este un subiect de actualitate în câmpul vast al procesării
limbajului natural. Astfel , crearea unui sist em automat de restaurare a diacriticelor, care poate
facilita înțelegerea corectă și rapidă a sensului unui cuvânt, este de o importanță majoră.
1.3 Lucrări în domeniul re staurăr ii diacriticelor
Există două mari abordări în procesul de re staurare a diacri ticelor: la nivel de literă și la
nivel de cuvânt .
5
În timp ce metodele la nivel de literă generalizează mai bine și nu au nevoie de multe
date de antrenare [7], metodele la nivel de cuvânt [8, 9], tind să ofere rezultate mai bune, mai
ales pentru limbile unde diacriticele au un rol gramatic și/sau semantic.
1.3.1 Metode de restaurare a diacriticelor la nivel de literă
În ceea ce privește re staurarea diacriticelor la nivel de literă, două lucrări din literatură ies
în evidență. Prima dintre ele, publicată în anul 2002, este intitulată “Letter Level Learning for
Language Independent Diacritic Restoration” , având ca autori pe Rada Mihalcea și Vivi Năstase
[10].
Metoda abordată este cea a unui algoritm de învățare bazat pe instanțe , deoarece s-a
demonst rat că uitarea excepțiilor nu este benefică pentru aplicațiile din procesarea limbajului
natural, iar algoritmii de învățare baza ți pe instanțe iau în considerare fiecare exemplu de
antrenare , atunci când iau o decizie pentru clasificare [11]. În al doilea rând, acest tip de algoritm
este eficient în ceea ce pr ivește timpul de antrenare și testare. Nu în ultimul rând, această metodă
nu necesită alte instrumente sau resurse adiționale de etichetare în afară de corpus în sine, ceea
ce face metoda să fie atractivă ma i ales pentru limbile care au putine resurse disponibile. Acest
algoritm a fost e valuat pe ntru patru limbi diferite (cehă , maghiară, p oloneză și română ),
observându -se o acuratețe de aproape 98%.
A doua lucrare , având ca autor tot pe Rada Mihalcea , are ti tlul“Diacritics Restoration:
Learning from Letters versus Learning from Words” [12]. Lucrarea se concentrează doar pe
resta urarea diacriticelor din limba r omână, folosind ac elași algoritm bazat pe instanțe , însă
încercând și altă variantă: arbor i de decizi e, mai precis C4.5 [13 ]. Rezultatele obținute cu ace astă
metodă sunt similare cu cele din prima metodă, însă C4.5 are capacitatea să genereze reguli
expresive, care sunt folositoare pentru implementările practice. Singurul dezavantaj este că faza
de învăța re a lui C4.5 este mai lentă față de cea a algoritmului de învățare cu instanțe. Această
metodă este în particular folositoare pentru limbile care nu au dicționare mari electronice și unde
este necesară generalizarea în afara cuvintelor. Cele mai bune rezul tate au avut o acuratețe de
aproape 99%.
6
1.3.2 Metode de restaurare a diacriticelor la nivel de cuvânt
Comparativ cu metodele la nivel de literă, metodele la nivel de cuvânt sunt mult mai
răspândite în literatura de speciali tate. Începând cu limbi pre cum t urca și alte limbi arabe ,
vietnameza, limbi slavice, limbi romanice până la limbi cu puțini vorbitori, cum ar fi i gbo,
cercetătorii au creat modele care produc rezultate bune cu o acuratețe mare.
Una din primele încercă ri de restaurare a diacriticelo r în mod automat , este sistemu l lui
Yarowsky [14], care compară câțiva algortimi : unul bazat pe etichetarea n -gramelor , folosind
decodarea Viterbi , unul folosind clasificarea Bayesian ă și unul bazat pe liste de decizii pentru
limbile franceză și s paniolă . Mai târziu, au apărut sisteme pentru diacritizare și pentru limbile
vietnameză [15], cehă [16], turcă [17], croată, s ârbă și slovenă [18], complexitatea sistemelor de
restaurare variind de la modele simple la modele mai complexe . Astfel, pornind de la sist eme
mai simple, în care pentru fiecare cuvânt se aplică traducerea cea mai frecventă din setul de
antrenare , a evoluat către sistem e care incorporează modele de limbaj, eti chete pentru părțile de
vorbire și rețele neural e recurente .
O altă lucrare relevan tă pentru problema restaurării diacriticelor la nivel de cuvânt este
cea a lui Cristian Grozea [19], publicată în anul 2012 . Abordarea aleasă este una îndreptată spre
statistică, astfel este implementată o adaptare a algoritmului V iterbi folosit pentru a c onstrui cea
mai probabilă secvență de cuvinte alternative pentru fiecare frază, fiind date statisticile legate de
bigramele din setul de antrenare . Experimentele au fost făcute pe trei corpusuri:
JRC – un subset al corpusului JRC -Aquis, care deși este un corpus de dimensiune mare,
stilul limbajului este unul formal, având mulți termeni juridici și tehnici, lim itând astfel
spectrul stilistic ;
ECON – alcătuit din textele jurnalului economic românesc , create pe parcursul a doi ani
(conține atât paragrafe cu diacritice cât și paragrafe fără diacritice, cele din urmă fiind
eliminate, iar în ceea ce privește stilul, conține mulți termeni din zona economiei,
având atât știri cât și dialoguri );
PAR – conține transcrierile dezbaterilor din Parlamentul României der ulate din anul
1996 până în anul 2007 ( stilul dezbaterilor variind de la discuții politice, sociale,
economice până la d iscuții istorice, despre poezie , despre Uniunea Europeană și alte
subiecte ).
7
În ceea ce privește rezultatele , autorul a obținut o acurat ețe de 99, 3% la nivel de cuvânt,
cu o reducere a erorii de pâna la 0, 70% pe corpusul PAR, iar la ni vel de literă o acuratețe de
99,6%, cu o r educere a erorii de 0, 39% pe corpusul PAR.
Unul din modelele recente cu rezultate foarte bune , este cel al lui Na plava et al . [20].
Modul de abordare al problematicii este prin folosire a rețelelor neur ale recurente, în urma cărora
se obține o acuratețe a sistemului de restaurare a diacriticelor de peste 97% , în medie , pentru
limbi le vietnameză, română, cehă, poloneză , maghiară, franceză, t urcă, spaniolă, croată și
slovacă .
Cel mai apropiat model de sistemul prezentat în această lucrare este sistemul dezvoltat de
Ozer et al. [21], ce folosește modelul Word2Vec , pentru a restaura diacr iticele tweet -urilor din
limba t urcă. Ei propun un model ce constă în trei pași pentru a rezolva problema diacritizării. La
primul pas, dintr -un genera tor de cuvinte candidat rezultă diferite forme ale unui cuvânt. În pasul
al doilea, analizorul morfologic verifică dacă formele cuvintelor rezultate la pasul anterior, sunt
cuvinte valide în limba turcă. Pasul al treilea folosește modelul Word2Vec , pentru a învăța
reprezentările cuvin telor într -un spatiu vectorial, apoi aleg e cuvântul final , prin evaluarea
similarității dintre cuvântul/cuvint ele cand idat și cuvintele vecine din stâ nga și dreapta. De
exemplu, propozi ția “Hakem bunu sut olarak degerlendirdi” are două cuvinte posib ile care pot
conține diacritice : “degerlendirdi” pentru care singura formă corectă în turcă este
“değerlendirdi” (trad. “a considerat ”) și cuvântul “sut” pentru care există două variante -“süt”
(trad. “ lapte”) și “șut ” (trad. “gol”). În acest caz, ex istă două propoziții posibile :
Exemplu 1:
“Hakem bunu süt olarak değerlendirdi. ”
(Arbitrul l -a considerat a fi lapte. )
“Hakem bunu șut olarak değerlendirdi. ”
(Arbitrul l -a considerat a fi un gol.)
Este evident c ă în acest context, forma corectă a cuvântului este “șut” (trad. “ gol”). În
cazul primului cuvânt, care are doar o formă validă, modelul corectează automat acel cuvânt din
propoziție, însă pentru al doilea cuvânt care are două forme corecte, se procedează în modul
următor: se calculează similaritățile celor două cuvinte față de cuvintele vecine din stanga și
dreapta și apoi se alege cuvântul pentru care similarit atea este mai mare.
8
Capitolul 2
Aspecte teoretice
2.1 Inteligența artificială
Inteligența a rtificială este o ramură a informaticii care are ca scop crearea mașinilor
inteligente. Aceasta a devenit o parte esențială a industriei tehnologice. Cercetar ea asociată
inteligenței artificiale este foarte tehnică și specializată. Principala preocupare a inteligenței
artificiale o reprezintă programarea calculatoarelor pentru diferite procese precum:
Cunoa ștere
Raționare
Rezolvare de probleme
Percepție
Învăța re
Planificare
Abilitatea de a manipula și mișca obiecte [22]
Sistemele bazate pe inteligență artificială pot fi exclusiv software, acționând în lumea
virtuală (ca de exemplu asistenți vocali, software de analiză a imaginilor, motoare de căutare,
sisteme de recunoaștere vocală și facială) sau inteligența artificială poate fi încorporată în
dispozitive hardware , ca de exemplu: roboți avansați, vehicule autonome, drone sau aplicații
pentru internetul obiectelor (IoT). Utilizăm inteligența artificială zilnic, de exemplu pentru a
traduce din diverse limbi, pentru a genera subtitrări în materiale video sau pentru a bloca
mesajele electronice nesolicitate (spam). Multe dintre tehnologiile inteligenței artificiale au
nevoie de date pentru a-și îmbunătăți performan țele. Odată ce se obțin performanțe bune, acestea
pot ajuta la îmbunătățirea și automatizarea procesului de luare a deciziilor din același domeniu.
De exemplu, un sistem cu inteligență artificială va fi instruit și apoi folosit pentru a detecta
atacurile cibernetice pe baza datelor din rețeaua sau sistemul în cauză.
Prin interpretarea unor cantități considerabile de date în scopul oferirii de soluții eficiente,
inteligența artificială poate contribui la îmbunătățirea produselor, proceselor și modelelor de
afaceri din toate sectoarele economice (industri e și serviciile financiare), dar și din sectorul
9
public (asistența medicală, transport și mobilitate, siguranța, securitatea și energia). Având în
centrul dezvoltării sale factorul uman și încurajând utilizare a acestei tehnologii “puternice”,
consider că prin intermediul sistemelor bazate pe inteligență artificială pot fi rezolvate unele din
cele mai importante probl eme la nivel mondial, precum: eradicarea bolilor, controlul și
combaterea schimbărilor climatice , anticiparea dezastrelor și cataclismelor naturale,
îmbunătățirea siguranței transporturilor (pentru că se estimează că aproximativ 90 % din
accidentele rutiere sunt cauzate de erori umane), combaterea criminalității și îmbunătățirea
securității ciberne tice.
Prin creșterea puterii de calcul, asigurarea disponibilității datelor ce intră în sistem și prin
progresele înregistrate în ceea ce privește algoritmii utilizați, inteligența artificială se va
transforma în una dintre cele mai importante tehnologii ale secolului XXI.
2.2 Procesarea limbajului natural
2.2.1 Scurt istoric
Abilitatea calculatoar elor de a procesa limbajul asemănă tor oamenilor , ne dă convingerea
că au fost create, în sfârș it, mașinile cu adevărat intelig ente. Aceasta convingere este b azată pe
faptul că folosirea efectivă a limbajului este împletită cu abilitățile noastre cog nitive. Printre
prim ii cercetă tori care au luat în considerare implicațiile computațio nale ale acestei conexiuni
între limbaj și funcția cognitivă , a fost Alan Turi ng.
În faimoasa lui lucrare [52], Turing a descris ceea ce noi cunoaștem astăzi ca Testul
Turing . El a sugerat un test empiric, un joc, în care folosirea limbajului de către calculator va
determina dacă acesta are capacitatea să gândească. Miza a cestui jo c era să demonstreze că dacă
mașina ar putea câștiga , atunci poate fi considerată inteligentă.
În jocul lui Turing sunt trei participanți : doi oameni și un calculator. Unul din cei doi
oameni este interogator ul. P entru a câștiga jocul, interogatorul trebuie să își dea seama care
dintre cei doi participanți rămași este mașina, punând o serie de întrebări. Mașina trebuie să
păcălească interogatorul prin răspunsurile pe care le dă, acestea fiind cât mai aproape de
răspunsurile unei ființe umane. Celălalt om trebuie să convingă interogatorul că celălalt
participant este mașina și că el este ființa umană [23].
10
Fig 2.1 Testul lui Turing
2.2.2 Definiție
Procesarea limbajului natura l (NLP) este o ramură a Inteligenței Artificiale, care se
axează pe înțelegerea și procesarea limbaju lui uman de către calculatoare. Așa cum știm ,
calculatoarele nu au aceeași capacitate precum oamenii , în ceea ce priveș te înțelege rea limbajul ui
natural . Mai bine zis, calculatoarele nu pot interpreta ceea ce noi exprimă m prin cuvinte . Totuș i,
recentele descoperiri î n domeniul î nvățării automate, au determinat apariția unor instrumente cu
ajutorul cărora calculatoarele dau noi valențe limbajul ui natural.
Tehnicile principale folosite pentru rezolvarea problemelor de procesare a limbajului
sunt: analiza sintactică și analiza semantică . Ele își au originea în tehn icile de ana liză din
lingvistica tradițională [24].
2.2.3 Sintaxa
Sintaxa studiază poziția cuvin telor în propoziție , astfel încât aceasta să aibă un sens
gramatical corect. Prin analiza sintactică , NLP studiază măsura în care limbajul natural respectă
regulile gramaticale. Tehnici le sintactice folosite cel mai des în NLP sunt:
lematizare – constă în reducerea tuturor formelor unui cuvânt la o singură formă ,
pentru o analiză mai simplă ;
11
segmentare morfologică – împărțirea cuvintelor în unități individuale , numite
morpheme ;
segmentare cuvintelor – împărțirea un ei mari bucăți continue de text în unități
distincte ;
identificarea părții de vorbire – reprezintă determinarea părții de vorbire a unui
cuvânt ;
parsare – constă în analiza gramaticală a unei propoziții ;
segmentarea propozițiilor – despărțirea unui text mare în propoziții ;
stemming – găsirea rădăci nilor pentru cuvintele derivate [25].
2.2.4 Semantica
Semantica studiaz ă originea și înțelesul unui cuvâ nt. În NLP, analiza semantică constituie
unul din aspectele dificile ale procesării limbajului natural, care nu a fost încă rezolvat în
întregime. Aceasta constă în aplicarea unor algoritmi pentru a înțelege sensul cuvintelor , precum
și modul în care sunt structurate propozițiile.
Tehnicile semantice utilizate î n NLP sunt:
recunoașterea entităților – determinarea părților un ui text care pot fi clasi ficate în
grupuri predefinite (i.e. nume de oameni, nume de locuri) ;
dezambiguizarea sensului cuvintelor – alegerea sensul ui unui cuvânt în funcție de
context ;
generarea de limbaj natural – generarea de limbaj natural plecând de la date
structurate [25].
2.2.5 Domenii și aplicații ale procesării limbajului natural
Majoritatea lucrărilor de cercetare din sfera procesării limbajului natural se concentreză pe
căutare , în mod special pe căutarea de tip enterprise. Acest tip de căutare permite utilizatorilor să
interogheze seturi de date sub forma unor întrebări care ar putea fi adresate unor alte persoane.
Mașina interpretează elementele importante d in întrebare, cum ar fi cele care corespund unor
trăsături specifice dintr -un set de date și , în final, întoarce u n răspuns [26].
12
Sentiment Analysis , cunoscut și ca Opinion Mining , este un alt domeniu de cercetare al
procesării limbajului natural care are ca scop construirea unor sisteme care încearcă să identifice
și să extragă opiniile dintr -un text. De obicei, pe l ângă identificare opiniilor, aceste sisteme
extrag și alte atribute ale textelor :
polaritatea : dacă opiniile sunt pozitive sau negative
subiectul
persoana care exprimă opinia
În prezent, analiza sentimentelor în contextul procesării limbajului natural este un subiect
de mare interes iar dezvoltarea e i este în creștere, deoarece poate avea multe aplicații practice.
Din moment ce informația , atât publică cât și privată , care se găsește pe internet este în continuă
creștere, o cantitate mare de texte care co nțin opinii sunt disponibile pe site -uri de recenzii,
forum -uri, blog -uri și rețele de socializare. Cu ajutorul sistemelor de analiză a sentimentelor,
informația nestructurată poate fi transformată automat în date structurate ce conțin opinii publice
despr e produse, brand -uri, politică sau alte subiecte despre c are oamenii ar putea avea păreri .
Aceste date pot fi foarte folositoare pentru aplicații comerciale precum analiza pieței, recenzii ale
produselor, re lații publice, serviciu clienți [27].
Traducerea automată (Machine translation) este d e asemenea o altă ramură a NLP și
reprezintă procesul de convertire automată a unei limbi într -o altă limbă, păstrând sensul textului
inițial și producând un text fluent în limba țintă. Cercetarea făcută în domeniul tra ducerii
automate nu este populară doar la nivel academic, ci și la nivel social, industrial și politic, acest
interes determinând dezvoltarea unor sisteme de traducere autoamată de calitate înaltă. Deși,
cercetările în acest domeniu au fost active în ultim ii 50 de ani, un sistem automat care să atingă o
performanță major ă este încă greu de implementat [28].
Unul din domeniile în care traducerea automată este folosită intens , este industria. Deși
există sisteme performante cum ar fi Google Translate sau Micr osoft Translate care au o
acuratețe destul de mare și oferă traducerile în timp real, unele ramuri ale industriei necesită date
de antrenare cu termeni și noțiuni specifice pentru acea ramură pentru a imbunătăți performanța
și relevanța traducerilor. Astfe l, sistemele de traducere generice nu ar ajuta foarte mult, deoarece
modele de învățare automată sunt antrenate pe date generice [29].
În ceea ce privește aplicațiile online de traducere, acestea fac o traducere instantă din
limba sursă în limba țintă atât pentru fișiere text, audio cât și pentru imagini ( imagini ale unor
cuvinte pe hârtie, ecrane, bannere, etc.) . Aceste aplicații sunt în general minimaliste, bazate pe
13
cloud sau chiar portabile, antrenate pe date crowd -sourced [30]. Sunt folosite în general de
utilizatori obișnuiți cum ar fi: studenți, străini, etc.
Există mai multe moduri de abordare a problematicii traducerii automate, însă cele mai
folosite sunt următoarele trei :
abordare bazată pe reguli – abordare lingvistică
abordare bazată pe date – abordare probabilistă
abordare hibridă – combină abordările anterioare
Sumarizarea textelor este tehnica de generare a unor rezumate concise și precise a unor
texte voluminoase, concentrându -se pe acele părți din text care oferă informații folositoare, făr ă a
pierde înțelesul textului inițial. Sumarizarea automată a textelor are ca scop transformarea
documentelor de dimensiuni ma ri în versiuni prescurtate, pro ces ce poate fi dificil și costisitor ,
dacă este făcut manual. Algoritmii de învățare automată po t fi antrenați pentru a procesa ac este
documente și pentru a identifica secțiunile care conțin informații și fapte importante, ca în final
să producă rezumatul documentului.
Nevoia de dezvoltare a acestor sisteme de sumarizare automată vin e odată cu exploz ia
masivă de date nestructurate care circulă în spațiul digital . În prezent ne bucurăm de acces rapid
și nelimitat la diferite informații, însă mare parte din acestea sunt redundante, nesemnificative și
uneori eronate. De aceea, folosirea unor sumarizatoar e automate capabile de a extrage informația
folositoare , care ignoră datele nees ențiale , a devenit vitală. Implementarea rezumatelor poate
face documentele mai citibile și poate reduce timpul petrecut în căutarea informației necesare.
Astfel , există două abordări principale ale sumarizării:
extractivă – implică extragerea secțiunilor esențiale din propoziții și combinarea lor
pentru a produce rezumatul final (dar rezumatele nu sunt întotdeauna corecte din punct
de vedere gramatical) ;
abstarctivă – sunt apli cate tehnici avansate de învățare profundă pentru a parafraza ș i a
scurta documentul original ( așa cum ar face o persoană) , acestea putând să genereze
fraze și propoziții noi care reprezintă partea cea mai importantă din textul inițial
(această abordare po ate ajuta la depă șirea greșelilor gramaticale ale tehnicilor
extractive) [31].
14
2.3 Rețele neura le
“Mașinile de acest fel se pot comporta într -o manieră foarte complicată atunci cand
numărul de unități este mare .” – Alan Turing [32].
Rețelele neur ale reprezintă o unealtă esențială și veche pentru procesarea limbajului
natural . Numele lor provine de la neuronul (perceptron) McCulloch -Pitts [33], un model
simplificat al neuronului uman, un element computațional ce poate fi descris prin logica
propozițională.
Fig 2.2 Perceptronul McCulloch -Pits
Un neuron ia suma ponderată a intrărilor lui, la care adaugă și un termen de regularizare
(bias), aplică o funcție neliniară (numită fun cție de activare ) asupra acestei sume, rezultând
ieșirea din neuron. Prezentă m mai jos cateva din cele mai folosite funcții de activare:
hardlim
hardlims
tanh
sigmoid
a = f ( Wp + b) (2.1)
Deși neuronul s -a dovedit a fi util în rezolvarea unor probleme de clasificare și nu numai,
acesta nu reprezintă însă, soluția universală . Minski și Papert [34] au demonstrat că un singur
neuron nu poate calcula corect câteva funcții simple. Printre acestea se găsește și binecunoscuta
funcție XOR.
15
Intuiția din spatele acestei demonstrații stă în înțelegerea faptului că neuronul este un
clasificator li niar. Pentru o intrare bidimensională x0 ș i x1, ecuația w1 *x1 + w2 *x2 + b = 0 este
ecuația unei drepte. Această dreaptă este linia de separare în spațiul bidimensional, unde ieșirea 0
este asignată tuturor intrărilor care se află de o parte a dreptei, iar ieșirea 1 este asignată pentru
intrările care se af lă pe cealaltă parte a dreptei [24].
Figura 2.3 . arată posibilele intrări pentru neuronul XOR (00,01,10,11). Se poate observa
ușor că nu putem desena o dreaptă de separare între cazurile pozitive ale funcț iei XOR (01,10) și
cele negative (11,00) , deci această funcție nu este liniar separabilă. Astfel, a fost necesară
introducerea unei noi arhitecturi de modelare a problemei , și anume , rețeaua neura lă.
Fig 2.3 Problema XOR
O rețea neural ă este o rețea alcătuită din mici unități computaționale (neuroni ), construită
pentru a recunoaște anumite tipare. Aceste tipare pe care le recunosc sunt numerice, conținute în
vectori, de aceea orice tip de dată reală, fie ea imagine, sunet sau text, trebuie să fie transformată
în formatul acesta [24].
2.3.1 Rețele feed -forward
Rețelele feed -forward reprezintă un model esențial al învățării profund e (deep learning).
Denumirea de “rețele” vine de la modul lor de reprezentare, adică compunere de diferite funcții.
Scopul lor este de a aproxima o funcție f*. Ele asigură baza multor aplicații comerciale
importante. De exemplu, rețelele convoluționale , folosite pentru recunoașterea obiectelor din
poze , constituie un tip specializat de rețele feed -forward. De asemenea, rețelele feed -forward
asigură fundamentul rețelelor recurente, care au multe aplicații în procesarea limbajului natural
16
(traducere automată, clasificare la nivel de cuvânt , clasificare la nivel de propoziție, modelarea
limbajului ).
f(x) = f(1)(f(2)(f((3)(x))) ( 2.2)
O rețea feed -forwa rd este o rețea multi -strat, în care unitățile (neuronii) sunt conectați
între ei , fară a exista cicluri. I eșirile unităților din fiecare strat sunt date mai departe ca intrări
unităț ilor din următorul strat, nici o ieșire nefiind trimisă straturilor dinain te. Rețelele feed –
forward simple au trei tipuri de noduri: unit ăți de intrare, unități ascunse și unități de ieșire.
Unitățile de intrare su nt pur și simplu valori scalare [24].
Aproape toți algoritmii de învățare profundă pot fi descriși p rintr-o rețetă d estul de simplă
care cuprinde : un set de date combinate cu o funcție de cost , o procedură de optimizare și un
model. De exemplu, algori tmul de regresie liniară combină:
un set de date ce conține X și etichetele y
funcția de cost: J(w,b) = -Ex,y~p^data log p model(y | x) (2.3)
specificația modelului : pmodel (y | x) = N(y ; xTw + b, 1)
Funcția de cost include de obicei cel puțin un termen , care determină ca procesul de
învățare să realizeze o estimare statis tică, precum și termeni adiționali, cum ar fi termenii de
regularizare . Cea mai des folosită funcție de cost este log-probabilitatea negativă , deoarece
minimizarea acesteia determină maximizarea estimării probabilităț ii. Dacă analiză m însă
modelele nelinia re, observăm că cele mai multe funcții de cost nu mai pot fi optimizate. Astfel,
este necesară alegerea unui proceduri de optimizare iterativă, cum ar fi coborârea pe gradient
[35].
Coborârea pe gradient este un algoritm de optimizare folosit pentru a mini miza funcț ia de
cost, prin mișcarea iterati vă în direcția definită de negativul gradientului. În învățarea automată,
folosim coborârea pe gradient pentru a updata parametrii modelului nostru.
17
Fig 2. 4 Coborârea pe gradient
Pentru a exemplifica mai bine algoritmul de coborâre pe gra dient, analiză m figura 2.5 .
Scopul nostru este acela de a ne muta din colț ul dreapta sus (cost mare) în marea de culoare
albastru închis din partea stângă jos (cost mic). Săgețile reprezintă direcția gradien tului negativ
din orice punct ( direcția care micșorează funcția de cost cât mai repede). Începând din vârful
muntelui, facem prima mișcare în josul dealului, în direcția spe cificată de gradientul negativ .
Mai departe, recalculăm gradientul negativ (dăm noile coordonate ale punctului) și apoi mai
facem încă o mișcare în direcția acestuia. Continuăm acest proces iterativ până când ajungem în
punctul dorit ( în ma rea de culoare a lbastru închis), sau când ajungem într -un punct în care nu
mai putem face nici o mișcare la vale (punct de minim local). Mărimea acestor pași pe care îi
facem se numește formal rata de învățare (learning rate). Cu o rată mare de învățare putem
acoperi mai mult spațiu cu fiecare pas, dar în același timp , riscăm să trecem peste punctul de
minim , din moment ce panta văii se schimb ă constant. Cu o rată de învățare foarte mică, putem
să ne mișcăm cu încredere în direcția gradientului negativ , din moment ce îl ca lculăm frecvent. O
rată de învățare mică este mai precisă, dar pentru a ajunge la punctul de minim, calcularea
gradientului este mare consumatoare de timp [36].
18
Fig 2.5 Exemplu didactic [36]
Atunci când folosim o rețea feed -forward pentru a accepta o intrare x și pentru a produce
o ieșire y, informația trece înainte prin rețea. Intrarea x reprezintă informația inițială care se
propagă apoi spre unitățile ascunse ale fiecărui strat și în fi nal produce ieșirea y. Această
propagare se numește propagarea înainte . În timpul antrenării, propagarea înainte poate
continua la nesfârșit , până ce produce un cost scalar J( θ). Algoritmul de propagare înapoi
(backpropagation – Rumelhart et al. [37]) lasă informația de la cost să circule înapoi prin rețea ,
pentru a calcula gradientul.
Termenul de propagare înapoi este de multe ori interpretat greșit , ca fiind tot algoritmul
de învățare pentru rețelele neural e multi -strat. De fapt, propagarea înapoi se referă doar la
metoda de calculare a gradientului , în timp ce alt algoritm, cum ar fi coborârea stocastică pe
gradient, este folosit pentru învățare. În algoritmii de învățare, gradientul de care avem cel mai
mult nevoie este cel al funcției de cost ∇θJ(θ). Multe alte probleme din învățarea automată
necesită calcularea altor derivate, fie ca parte a procesului de învățare, fie pentru analizarea
modelului învățat. Algoritmul de propagare înapoi poate fi folosit și în aceste situații, nefiind
restricționat de a calcula gradientul funcției de cost [38].
2.4 N-GRAME
Posibilitatea de a prezice viitorul este ceva dorit de multă lume. Încă din vremurile
străvechi, oamenii apelau la diverși vrăjitori sau medi um-uri, cu scopul de a afla ce se va
întâmpla cu ei pest e o zi, o săpt ămână, sau ani.
19
În domeniul procesării limbajului natural, predicțiile sunt la fel de importante. De
exemplu, în construcția lexicală „Am înotat în …” este clar că probabilitate a de a f i urmată de
cuvinte precum casă sau picioare , este foar te mică, pe când probabilitatea de a fi urmată de
cuvintel e mare, lac, râu, ocean , este foarte mare . În mod formal, fiecare cuvânt posibil, prin care
propoziția se poate continua, primește o probabilitate. Acest proces descris mai sus poartă
numele de mode l probabilistic. Acest model se poate extinde și la nivel de propoziție (i.e. putem
prezice ce propoziție poate să urmeze după una dată ). Motivul pentru care vrem să prezicem
următoarele cuvinte sau să asignăm probabilități propozițiilor , este faptul că pr obabilitățile sunt
esențiale în orice problemă în care vrem să identificăm cuvinte din intrări cu zgomot sau
ambigue. Astfel de probleme ar fi : recunoaștere a vocală, recunoașterea scrisului , corectare a
automată, traducerea automată [24].
Modelele care asig nează probabilități secvențelor de cuvinte se numesc modele de
limbaj (LM). Cel mai simplu LM este n -grama. O n -gramă este o secvență de n cuvinte, o 2-
gramă (bigramă) este o secvență de doua cuvinte (de exemplu „te rog ”), o 3-gramă (trigramă)
este o secve nță de trei cuvinte (de exemplu “te rog frumos”) [24].
Intuiția din spatele n -gramelor este aceea că , în loc să calculăm probabilitatea unui
cuvânt , dată fiind întreaga lui istorie, putem aproxima această istorie , doar prin ultimele cateva
cuvinte. De exem plu, presupun ând că știm „ cățelului îi este atât de sete” și vrem să aflăm care
este probabilitatea cuvântului „încât ”, vom avea urm ătoarea formulă :
P(încât | cățelului îi este atât de sete) (2.4)
Bigramele aproximează probabilitatea unui cuvânt fiind date toate cuvintele dinainte,
folosind doar probabilitatea penultimului cuvâ nt din secvență. Pentru exemplul de mai sus am
avea:
P(încât | sete) (2.5)
Această presupunere că probabilitatea unui cuvânt depinde doar de cuvântul dinainte , se
numește ipoteză Markov [39]. Modelele Markov reprezintă o clasă de modele probabilistice
care presupun că putem prezice probabilitatea a ceva din viitor , uitându -ne la câteva evenimente
din trecut. Putem generaliza bigrama care ia în considerare un singur cuvânt din urmă la
trigramă , care ia în considerare două cuvinte di n urmă și în final , la n-gramă, care ia în
considerare ultimele n -1 cuvinte dinainte [24].
P (w n| w1n-1) ~P (w n| wn-N+1n-1 ) (2.6)
20
2.5 Word embeddings
De-a lungul timpului s -a încercat construirea unui model computațional care să poată
face față diferitelor aspecte ale înțelegerii cuvintelor (sensul cuvintelor, similaritatea și
apropierea cuvintelor, câmpuri lexicale, conotații). Modelul perfect care ia în calc ul toate
aspectele înțelegerii cuvintelor prezentate mai sus este impalpabil. Cel mai bun model curent,
numit vector semantic , este inspirat din munca lingvistică și filosofică a anilor 1950.
În timpul acelei perioade, filosoful Ludwig Wittgenstein, sceptic fiind asupra posibilității
de a construi o teorie complet formală a definițiilor înțelesului fiecărui cuvânt, a sugerat că
„înțelesul unui cu vânt este de fapt folosirea lui în limba” [40]. Astfel, în loc să folosim un
limbaj logic pentru definirea fiecărui cuvânt, ar trebui să definim cuvintele printr -o reprezentare
a felului în care acesta a fost folosit de oameni în vorbire și înțelegere.
Lingviști ai acelei perioade c um a r fi Joos (1950), Harris (1954) și Firth ( 1957), c unoscuți
ca lingviștii distribuț ionali , au venit cu o idee specifică , pentru a realiza ceea ce au numit intuiția
lui Wittgenstein , și anume: definirea unui cuvânt prin mediul sau distribuția în care se află în
limbaj . Distribuția unui cuvânt reprezintă setul de conte xte în care acesta poate apărea: cuvintele
învecinate sau mediul gramatical . Ideea care reiese este că două cuvinte care apar în distribuții
similare au probabilitate foarte mare de a avea ac elași înțeles.
Ideea vectorului semantic este aceea de a reprezenta cuvântul ca un punct într -un spațiu
semantic multi -dimensional. Vectorii folosiți pentru reprezentarea cuvintelor se numesc în
general embedding -uri, deoarece cuvântul este situat într -un anumit spațiu vectorial [23].
2.6 Word2Vec
Word2vec este una din cele mai populare tehnici de a învăța word embeddings, folosind
rețele neura le. Aceasta a fost dezvoltată la Google, de către Thomas Mikolov [41], în 2013 .
Rețeaua are doar două straturi : ca intrare primește un corpus de text, iar ieșirea scoate un set de
vectori. Aplicațiile Word2Vec nu se limitează doar la parsarea textelor. Această tehnică poate fi
aplicată și genelor umane și animale , playlist -urilor si altor serii verbale sau simbolice , în care
pot fi vizibile tipare. Scopul acestei metode este acela de a grupa vectorii cuvintelor similare în
21
spațiul vectorial. Matematic, cosinusul unghiului dintre acești vectori ar trebui sa fie apropiat de
1, adică unghiul sa fie aproape 0.
Fig 2.6 Similaritatea dintre doi vectori
Word2vec crează vectori care sunt reprezentări numerice distribuite ale proprietăților
(features) cuvintelor, cum ar f i contextul lor. Dacă primește suficiente date și context, această
tehnică poate “ghici”, cu o acuratețe destul de mare, sensul unui cuvânt pe baza aparițiilor
trecute. Această metodă este similară cu un autoencoder, mapând fiecare cuvânt la un vector, da r
în loc să se antreneze ținând cont de cuvintele din intrare prin reconstrucția acestora, așa cum o
mașină Boltzmann restrictivă o face, Word2vec se antrenează pe baza cuvintelor care sunt vecine
cuvântului curent , din corpusul dat la intrare. Astfel, an trenarea se poate face în două moduri: fie
folosind contextul pentru a prezice cuvântul dorit , numită C-BOW (continuous bag of words),
fie folosind un cuvânt pentru a prezice contextul dorit, numită skip-gram [42].
2.6.1 C-BOW
Această metodă ia contextul fiecărui cuvânt ca intrare și încearcă să prezică cuvântul
corespunzător contextului. Stratul de intrare conține vectorii cuvintelor din context, î n stratul
ascuns avem n neuroni , iar stratul de iesire este vectorul cuvântului dorit. Vectorii din input su nt
conectați la stratul ascuns printr -o matrice de ponderi W , de dimensiune V x N, unde V este
lungimea vectorilor de input , iar N este numarul de neuroni din stratul ascuns. Mai departe,
stratul ascuns este conectat la stratul de ieșire printr -o matice d e ponderi W’ , de dimensiuni N x
V [42].
Exemplul 2.1 :
“Vreau să învăț limbajul Python. “
22
În această propoziție, „Python” este cuvântul țintă, care trebuie prezis, iar restul propoziției este
contextul.
2.6.2 SKIP -GRAM
După cum putem vedea în figurile 2. 7 și 2.8 , modelul skip -gram seamănă cu modelul C –
BOW în oglindă, însă nu funcționează chiar similar. Rețeaua primește ca intrare cuvântul dorit,
iar la ieșire scoate k distribuții de probabilitate, unde k este numărul cuvintelor din context pe
care vrem s ă le prezicem.
Exemplul 2.2 :
“Vreau să învăț limbajul Python. “
În această propoziție, “Vreau să învăț limbajul “ este construcția care trebuie prezis ă, iar
cuvântul „Python” este contextul.
Ambele modele prezintă avanta je dar și dezavantaje. Potrivit lui Thomas Mikolov,
modelul skip -gram dă randament la cantități mici de date și reprezintă destul de bine cuvintele
rare, în timp ce modelul C -BOW este mai rapid și are o reprezentare mai bună pentru cuvintele
mai frecvente [42].
Fig 2.7 Modelul C -BOW Fig 2.8 Modelul Skip -gram
23
2.7 FastText
Modelul FastTex t este o extensie a modelului Word2Vec , fiind propus de Facebook [43]
în anul 2016 . Acesta conține ambele variante C-BOW și skip-gram . În loc să primească ca
intrare cuvinte individuale, FastText sparg e cuvintele în câteva n -grame ( subcuvinte). De
exemplu, trigramele cuvântului “pâine” sunt: pâi, âin, ine . Vectorul de embedding -uri pentru
pâine va fi suma tuturor acestor n -grame . După antrenarea rețele i neura le, vom avea embedding –
uri pentru toate n -gramele din setul de antrenare. Cuvintele care apar mai rar , acum pot fi
reprezentate mult mai bine , din moment ce câteva din n -gramele lor pot apărea și în alte cuvinte.
Chiar dacă t impul de antrenare pentru modelul FastText este mai mare (numărul de n -grame este
mai mare ca numărul de cuvinte) , s-a demonstrat că în unele situații acesta are rezultate mai bune
decât modelul Word2Vec, iar cuvintele mai rare au o reprezentare mult mai bună.
24
Capitolul 3
Implementare
3.1 Aspecte tehnice
Modelele au fost antrenate pe un laptop cu procesor Intel I7 -8550U și 12 GB de RAM . În
ceea ce privește implementarea, am ales să folosesc limbajul Python, deoarece este un limbaj de
programare de nive l înalt folosit pentru toate tipurile de programare. În special, este un limbaj
preferat pentru învățarea automată pentru următoarele motive :
este u șor de învățat (sintaxa este mult mai simplă în comparație cu alte limbaje precum
C,C++, Java) ;
deși este ma i încet ca alte limbaje, capacitatea de prelucrare a datelor este uimitoare ;
este Open Source ;
are capacitatea de a interacționa cu aproape toate platfomele și limbajele “third party” ;
dispune de o mul țime de biblioteci open source în continuă dezv oltare precum:
tensorflow [44], numpy [45], gensim [46], nltk [47], scipy [48], matplotib [49],
sklearn [50], pytorch [51].
Primul model a fost creat folosind biblioteca TensorFlow (pentru antrenare, construirea
vectorilor de embedding -uri, inițializarea ponderilo r și a biasului, alegerea funcției de cost și a
algoritm ului de optimizare) și biblioteca N umpy (pentru creare a vectorilor de etichete și a batch –
urilor ).
Atât al doilea , cât și al treilea model folosesc biblioteca Gensim (pentru antrenare ) și
biblioteca NLTK (pentru împărțirea textului în propoziții ). Câteva din gra fice au fost generate
folosind Matplotlib și S klearn, iar evaluarea rezultatelor conform metricii “F1 score ” și a
acurateței a fost făcută tot cu biblioteca S klearn.
25
3.2 Setul de date
Setul de date ales atât pentru antrenare câ t și pentru testare este PAR (care conțin e
transcrieri ale dezbaterilor din Parlamentul României, respectiv 1779 fișiere în form at .txt ),
deoarece :
conform Grozea [19], s-au obținut rezultate bune (99,3% acuratețe)
stilul textelor variază pe diferite teme
este o sursă sigură și corectă
este relativ mare
Fig. 3.1 Numărul de fișiere din setul de date Fig. 3.2 Numărul de cuvinte din setul de date
Fig 3.3 Numărul de cuvinte folosite pentru antrenare
și numă rul de embedding -uri
3.3 Preprocesare
Pregătirea datelor este o fază importantă înaintea aplicării oricărui algoritm de învățare
automată. Același lucru este valabil și pentru datele în format text, care necesită o preprocesare.
Preprocesarea textului constă în patru pași:
curățare – reprezintă procesul de eliminare a părților nefolositoare din text , precum
eliminarea cuvintelor de legătură , a punctuației, capitalizarea literelor ;
26
adnotare – constă în aplicarea unei scheme asupra textului (poate să includă etichetare a
părților de vorbire);
normalizare – constă în reducere lingvistică prin intermediul lematizării și altor forme
de standardizar e;
analiză – constă în extragerea probelor statistice, manipularea și generalizarea datelor
din setul de date pentru analiza feature -urilor.
În ceea ce privește setul de date PAR , am ales să folosesc următorii pași de preprocesare:
1. am împărțit textul în c uvinte /propoziții (în funcție de model) ;
2. am eliminat cifrele (deoarece nu aduceau o informație relevantă în problema studiată );
3. am eliminat semnele de punctuație și alte caractere speciale ;
4. am transformat toate caracterele mari în caractere mici ;
5. caracter ele “Ț”, “ț” , “Ș”, “ș” (t și s cu sedila -diacritice folosite până în anul 1000) au
fost înlocuite cu diacriticele actuale „Ț”, „ț”, „Ș”, „ș” .
3.4 Algoritmul propus
Deși există câteva sistem e de restaurare a diacriticelor disponibile online cu o
perfo rmanță destul de bună , atunci când sunt puse în fața unui cuvânt precum „tata” apare o
situație de ambiguitate, deoarece cuvântul poate avea mai multe variante cu diacritice : „tată”,
„țață”, „țâță”. Așadar, cum putem face alegerea corectă a cuvântului? Răs punsul este contextul.
Dacă ținem cont de context atunci suntem siguri că varianta aleasă a acelui cuvânt este corectă în
acea situație.
Astfel, algoritmul propus pentru procesul de restaurare a dia criticelor unui text constă în
trei etape:
1. Generarea tutu ror posibilităților de cuvinte cu diacritice
2. Crearea și antrenarea embedding -urilor
3. Determinarea cel ui mai potrivit cuvânt în acel context
27
Fig 3.4 Algoritmul propus
1. Generarea tuturor posibilitățilo r de cuvinte cu diacritice reprezintă primul pas al
algoritmului propus și constă în următoarele: pentru un text fără diacritice, dat ca input , vom
construi perechi de cuvinte în următoarea manieră . Presupunem că avem următoarea propoziț ie:
„Studentul a lu at nota 10. ”. În acest caz, vom avea perechile de cuvinte în formatul :
[(stânga, dreapta),centru] ->{[(UNK,a),studentul], [(studentul,luat),a], [(a,nota),luat],
[(luat,UNK),nota]}, unde „centru” este cuvântul pe care vrem sa îl diacritizăm (cuvântul țint ă),
iar cuvintele din paranteză sunt vecinul din stânga și din dreapta al acestuia. După cum putem
observa, am eliminat numărul 10 , așa cum am făcut și în preprocesarea setului de date pentru
antrenare, deoarece nu aduce o informație în plus. De asemenea, pentru cuvintele care se află la
începutul și sfârșitul unei propoziții este clar că nu avem un vecin stânga , respectiv dreapta, de
aceea , am ales token -ul UNK , pentru a marca acest lucru. Astfel, după ce am construit toate
aceste perechi, trecem mai depar te pentru a găsi toate variantele posibile de diacritice pentru
cuvântul țintă.
După ce am descărcat baza de d ate din D EX și am salvat -o într -un fișier în format CSV
(Coma Separated Values), am parcurs acest fișier , iar pentru fiecare cuvânt am scos diac riticele
și l-am adăugat ca și cheie într -un dicționar din Pyth on (de tipul cheie valoare). V arianta cu
diacritice a acelui cuvânt am adăugat -o apoi în lista de valori . În final, pentru a găsi variantele
posibile , care sunt și cuvinte valide , pentru un cuvân t țintă , ne uităm pur și simplu la valorile din
dicționarul alcătuit anterior, în care cheia este cuvântul țintă. Dacă avem doar o variantă posibilă,
atunci acela este cuvântul final, altfel trecem la etapa următoare. De exemplu, cuvântul „pește”
va fi ad ăugat în dicționar ca valoare în lista cuvântului „peste” {peste : [peste, pește]}.
2. Crearea și antrenarea embedding -urilor reprezintă o etapă important ă în restaurarea
diacriticelor. Acest pas se realizează cu ajutorul modelelor Word2Vec/FastText , care vo r fi
discutate în detaliu în subcapitolele următoare. Scopul acestui pas este de a oferi un context
28
tuturor cuvintelor candidat , prin generarea unui vector de embedding , pentru ca în final să poată
fi ales cuvântul cel mai potrivit în funcție de context la pasul următor.
3. Determinarea celui mai potrivit cuvânt în acel context este ultima eta pă a procesului de
diacritizare . După ce am determinat toate variantele posibile de diacritice pentru un cuvânt țintă
și mai apoi vectorii de embedding -uri pentru ele , vom afla care este cuvântul cel m ai potrivit
pentru acel context , astfel : pentru fiecare cuvâ nt posibil vom calcula similaritatea cosinus dintre
vectorul de embedding al acestuia și vectorul cuvâ ntulu i vecin din stânga respectiv cuvâ ntului
vecin din dreapt a, le vom aduna și apoi împărț i la 2, pentru a calcula cât de potrivit este cuvântul
candidat în contextul oferit de cuvântul vecin din stânga și cel din dreapta. Cuvântul ales ca fiind
cel mai potrivit este cel care are similaritatea maximă, chiar dacă co nține sau nu diacritice.
Exemplu :
Propoziția “Am mancat peste la un restaurant.” .
Cuvântul țintă este “peste”, iar cuvintele posibile sunt “peste” și “pește” . Presupunem că pentru
cuvântul „mancat”, algoritmul a ales cuvântul corect cu diacritice : „ mân cat” .
Pentru „peste”:
SimilaritateCo sinus1 = (Simil aritateCosinus(mâ ncat,peste) + SimilaritateCosinus(peste,la)) / 2
Pentru „pește”:
SimilaritateCosinus2 = (SimilaritateCosinus(mâ ncat,pește) + SimilaritateCosinus(peș te,la)) / 2
Cuvânt final = max i=1,len(cuvPosibile) (SimilaritateCosinusi)
29
3.5 Arhitecura modelelor
3.5.1 Model Word2V ec implementat în TensorFlow
Învățarea automată este o disciplină complexă, însă implementarea modelelor a devenit
mult mai ușoară și mai eficientă datorită unori fram ework -uri cum ar fi TensorFlow – dezvoltat
de Google – care ușurează procesul de obținere a datelor, de antrenare a modelelor, de oferire a
predicțiilor și de rafinare a rezultatelor.
Creat de echipa Google Brain, TensorFlow este o bibliotecă o pen source pentru calcule
numerice și algoritmi de învățare automată la scară largă. Folosește limbajul Python pentru a
oferi un API pentru front -end convenient pentru construirea aplicațiilor, în timp ce execută
aceste aplicații în limbajul performant C+ +. Astfel, datorită acestor motive, modelul de la care
am plecat pentru găsirea embedding -urilor este unul implementat cu ajutorul acestei biblioteci.
După preprocesarea datelor , primul pas în construirea modelului a fost alcătuirea
dicționarului de cuvint e care apar în setul de antrenare. Deoarece antrenarea se face prini mini –
batch -uri iar varianta de algoritm aleasă a fost C-BOW , am creat o funcție care construiește atât
inputurile cât și etichetele , având ca parametri dimensiunea batch -ului și a ferestr ei de context.
Pentru acest model, am ales dimensiunea de 100 pentru b atch și o fereastră de lungime 2.
Următorul pas este crearea vectorilor de embedding -uri pentru fiecare cuvânt din dicționar, care
vor fi inițializați cu numere distribuite uniform între -1 și 1. Dimensiune a vectorilor de
embedding -uri este de 100.
În ceea ce privește funcția de cost, am ales funcția sampled softmax , cu un număr de 64
de exemple negative extrase , deoarece s -a demonstrat că este cea mai potrivită pentru modelul C –
BOW. Rat a de învățare pentru algoritmul de coborâre pe gradient este de 1, iar numărul de
iterații ales este de 100 , deoarece numărul de cuvinte folosite pentru antrenare nu este mare, iar
un număr mare de iterații poate conduce la overfitting [38]. Figura 3.5 arat ă evoluția funcției de
cost pe parcur sul celor 100 de iterații, și după cum putem vedea, aceasta își atinge minimul
undeva între iterațiile 90 și 100. Figurile 3.6 și 3.7 arată pozițiile în spațiu ale unor cuvinte din
setul de antrenare. Astfel, cuvinte di n aceeași sferă precum „președinte ”, „deputat ”, „ministru ”,
„senator ” s-au adunat în aceeași zonă, așa cum și declinările verbului „a fi” („sunt”, „suntem ” și
„sunteți ”) au gravitat în aceeași zonă.
30
Din cauza unor constrâ ngeri de memorie, antrenarea a putut fi făcută doar pe 4.000.000
de cuvinte. Astfel, pentru a vedea dacă rezultatele pot fi îmbunătățite și memoria să nu mai
reprezinte o problemă, am decis să aleg o altă bibliotecă , cunoscută pentru eficiența și
rapiditatea ei în antrenarea embeddin g-urilor.
Fig 3.5 Funcția de cost pe parcursul celor 100 de epoci
Fig 3.6 Vectorii cuvintelor în spaț iu Fig 3.7 Vectorii cuvintelor în spaț iu
31
3.5.2 Model Word2Vec implementat în Gensim
Gensim este o bibliotecă open source implementată în limbajul Python, specializată
în procesarea limbajului natural și m odelarea topicului . Deși sunt disponibile și alte
bibloteci ( scikit, R) în care atât modelele topic cât și embedding -urile sunt disponibile ,
Gensim oferă fac ilități pentru construirea și ev aluarea modelelor precu m și pentru
procesarea textelor . Un mare avantaj al acestei biblioteci îl reprezintă faptul că se pot
folosi fișiere foarte mari , fără a le încărca în totalitate în memorie.
Al doilea model abordat este tot un model Word2Vec, dar de data aceasta , este
implementat folosind biblioteca Gensim. În ceea ce privește preprocesarea, lucrurile diferă
puțin față de modelul Word2Vec implementat în Ten sorFlow , în sensul că modelul curent
nu primește ca input cuvinte , ci propoziții. Crearea modelului constă în apelarea funcției
Word2Vec, care are următorii parametri :
sentences – lista de propozi ții din setul de date ;
size – dimensiunea vectorilor de emb edding ;
window – distanț a maximă dintre cuvântul curent ș i cel prezi s în cadrul unei
propoziț ii;
min_count – modelul ignoră toate cuvintele c u frecvența în corpus mai mică ca
această valoare ;
workers – numă rul de thread -uri pentru antrenarea modelului ;
sg – este algoritmul de antrenare : 1 pentru SkipGram, 0 pentru C -BOW ;
hs – dacă parametrul este setat la 1 atunci funcția de cost este softmax ier arhică,
dacă e 0 și parametrul „ negative ” are o valoare mai mare ca 0 , atunci funcția de
cost folosită este nega tive sampling ;
32
negative – dacă e mai mare ca 0 atunci este folosită negative sampling, iar
numărul ales semnifică câte cuvinte cu zgomot trebuie alese (de obicei între 5 –
20), dacă e 0 atunci nu se folosește funcția de cost negative sampling ;
alpha – rata i nițială de învățare ;
min_alpha – rata de învățare va scădea liniar la această valoare pe parcursul
antrenării ;
compute_loss – dacă este setat la True atunci valoarea funcției de cost este
calculată și salvată ca mai apoi să poată fi folosită pentru alte op erații ;
iter – numărul de iterații ;
max_vocab_size – limitează memoria RAM în timpul construirii vocabularului dacă
sunt mai multe cuvinte unice decât numărul specificat, atunci le elimină pe ce care nu
sunt frecvente ;
sample – un prag pentru determinarea cuvintelor cu frecvență mare care vor fi
eliminate ;
callbacks – secvență de funcții callback care pot fi executate în diferite etape ale
antrenării .
Ceea ce se întâmplă mai exact în spatele acestui apel de funcție este că se antrenează o
rețea neurală cu un singur strat ascuns pentru a prezice cuvântul curent în funcție de context,
folosind arhitectura de bază prezentată în capitolul 2.6 . Spre deosebire de alte rețele care sunt
folosite după antrenare, scopul modelului Word2Vec este de a învăța ponderile stratului ascuns ,
deoarece aceste ponderi sunt în esență vectorii de embedding -uri pe care încercăm să îi învățăm.
Astfel, am ales următoarea configurație a modelului: ca mărime a vectorului de
embedding -uri am setat inițial valoarea 100, deoarece această valoarea era default , iar apoi
valoarea 200 pentru a vedea dacă rezultatele s -au îmbunătățit, însă acurateța chiar a scăzut cu un
procent, de aceea am păstra t valoarea 100, mai ales că antrenarea este mai rapidă cu o
dimensiune a vectorilor mai redusă. Ca funcție de cost , biblioteca Genism oferă două posibilități:
33
funcția softmax adaptiv sau negative sampling. Funcția softmax adaptiv s -a dovedit a da
rezultate mai bune cmparativ cu negative sampling, explicată prin faptul că funcția softmax se
descurcă mai bine cu cuvinte care nu sunt atât de frecv ente comparativ cu negative sampling. În
ceea ce privește algoritmul de învățare, am ales varianta SkipGram care, deși este mai lentă ca
varianta C -BOW, are rezultate mai bune pentru cuvinte nu atât de frecvent e. Ferea stra aleasă
inițial a fost de două cuvinte, iar creșterea numărului de cuvinte nu a însemnat neapărat o
îmbunătățire a rezultatelor. Rata de învățare aleasă a fost 0,03, care nu este o valoare nici prea
mică, nici prea mare, determinând algoritmul de coborâre pe gradient să ajusteze parametrii
rețelei , până când valoare a ratei de învățare ajunge la 0 ,0007. În final, constrângerea de timp și
de memorie a determinat alegerea unui număr de 200 de epoci pentru antrenarea rețelei, durata
antrenării ajungân d până la 4 ore. Deși în unele situații, un număr de epoci mai mare în unele dă
rezultate mai bune, în abordarea curentă, dublarea numărului de epoci nu a adus un plus rețelei.
Fig 3.8 Cele mai aprop iate cu vinte de cuvâ ntul „proiect”
3.5.3 Model FastText implementat în Gensim
În cele din urmă, am ales să implementez și varianta FastText pen tru determinarea
embedding -urilor , deoarece s -a demonstrat că în unele si tuații acest model poate să aibă rezultate
mai bune decat modelul Wor d2Vec. Așa cum este prezentat în subcapitolul 2.7 , modelul
34
FastText se folosește nu numai de cuvinte ci și de n-gramele acelor cuvinte , pentru a determina
vectorul de embedding -uri (vectorul cuv ântului fiind o sumă a vectorilor n -gramelor acelui
cuvânt).
În ceea ce privește implementarea propriu -zisă, pentru acest model se procedează exact
ca la modelul Word2Vec : se apelează o funcție cu aceeiași parametri , însă există și câțiva
parametri în plus :
min-n – lungimea minimă a n-gramel or folosite pentru antrenare ;
max-n – lungimea maximă a n -gramelor folosite pentru antrenare ;
word_ngrams – dacă este setată valoarea la 1 , atunci modelul va folosi informația dată
de n-grame, altfel modelul este echivalent cu Word2Vec .
Astfel, parametrii pe care i -am folosit sunt aceiași ca la modelul Word2Vec, deoarece s –
au dovedit a avea rezultatele cele mai bune. În plus, am setat următorii parametr i: min-n la 2 ,
max-n la 4, având n -grame de dimensiuni între 2 și 4, deoarece majoritatea cuvintelor di n limba
română au subcuvinte de lungime variind între 2 și 4. Parametrul word_ngrams este setat
bineînțeles la 1, deoarece vrem să folosim informația furnizată de n -grame.
Fig 3.9 Cele mai apropiate cuvinte de c uvântul „proiect”
35
3.6 Rezultate
Pentru a putea evalua performanța algoritmului propus, am decis să îl testez pe 10 fișiere
din setul de date inițial. Așa cum arată și figura 3.2, există 3.693 de cuvinte în aceste fișiere.
Deoarece fișiere le conțin deja diacritice, le -am eliminat și apoi am aplicat algoritmul propus
pentru aceste date. Problema curentă poate fi privită ca o problemă de clasificare multiplă, unde
etichetele adevărate sunt cuvintele cu diacritice inițiale (care sunt considerate a fi corecte ), iar
etichetele prezise sunt cuvintele restaurate de algoritmul propus. Astfel, m etrica specifică
clasificării folosită pentru evaluare este acuratețea și deoarece această metrică nu este mereu
considerată a fi suficientă , pentru a decide dacă modelul ales este de bun, am calculat și scorul
F1. În cazul nostru, acuratețea reprezintă numărul de cuvinte diacritizate corect din totalul lor, iar
scorul F1 este o medie armonică a preciziei și a recall -ului. Precizia este definită de numărul de
cuvinte restaura te corect , împărțit la numărul de cuvinte restaurate corect și cele care nu trebuiau
să fie corectate, dar au fost . Recall -ul este reprezentat de numărul de cuvinte restaurate corect ,
împărțit la numărul de cuvinte restaurate corect și numărul de cuvinte ca re trebuiau să fie
corectate, dar nu au fost.
(3.1)
Figura 3.10 prezintă cele trei arhitecturi implementate , sub aspectul a curateței și scorul ui
F1. Se poate observa că c el mai bun rezultat a fost obținut cu ajutorul modelul ui Word2Vec ,
implementat în Gensim , ajungâ nd la o acuratețe de până la 93, 9% și u n scor F1 de 85, 9%. Prin
implementare m odelul ui FastText ne-am apropiat de aceste rezulate, cu o acuratețe de 93,7% și
un scor F1 de 82, 3%. Modelul implementat în TensorFlow s-a dovedit a avea rezultate mai mici,
deoarece antrenarea a fos t făcută cu mai puține cuvinte, cu acurat ețe 74,8% și un scor F1 de
63,9% .
Figura 3.11 prezintă cel mai bun model al algoritmul ui propus comparativ cu alte metode
existente: site -uri de adăugare a diacriticelor [53], metoda DIAC+ propusă de Tufiș și Chițu în
2008 [7] care poate fi descărcată ca plug -in pentru suita Microsoft Office de pe site -ul RACAI
[54] și metoda dezvoltată de către Speed & Dialogue Research Laboratory , din cadrul
Universității Politehnica București [55].
După cum se observă, algoritmul propus are rezultate relativ bune, clasându -se printre
primele 5 soluții din cele enumerat e în figura 3.11 . Este de menționat faptul că, limitările de timp
și de hardware au avut un impact direct asupra performanței algoritmului propus . Totodată, știm
36
că performanțele unui model sunt influențate pozitiv de folosirea aceluiași set de date atât în
etapa de antrenare cât și în cea de testare. Din acest motiv, nu putem afirma cu certitudine că
metodele cu care m -am comparat nu au fost influențate de acest factor.
Exemplu :
Paragraf extras din cele 10 fișiere folosite pentru testare:
“Domnul Vasile L upu: Doamnelor și domnilor, R og deputații să rămână în sală (cu câteva
minute în urmă s -a încheiat ședința comună a Senatului și Camerei Deputaților), pentru a dezbate
și adopta ordinea de zi și programul de lucru pentru săptămâna următoare .”
Paragraf rest aurat cu algoritmul propus:
“Domnul Vasile Lupu: Doamnelor și domnilor, Rog deputații să rămână în sala (cu câteva
minute în urmă s -a încheiat ședința comună a Senatului și Camerei Deputaților), pentru a dezbate
și adoptă ordinea de zi și programul de lucr u pentru săptămâna următoare.”
Fig 3.10 Acuratețea și scorul F1 pentru cele mai bune modele implementate
Fig 3 .11 Acuratețea și scorul F1 în comparație cu alte metode
37
Capitolul 4
Concluzii
Restaurarea diacriticelor reprezintă o componentă importantă și de actualitate în câmpul
larg al procesării limbajului natural . În această lucrare am încercat să abordez problematica
restaurării diacriticelor din per spectiva contextului în care se găsesc cuvintele ce necesită a fi
corectate. De aceea, am ales ca modalitate de a surprinde aceste trăsături de cont ext, rețeaua
neurală cu două st raturi, numită Word2Vec. Am testat cele două arhitecturi : skip -gram și C-
BOW, cât și o altă arhitectură care folosește n -grame , pe lângă clasicul Word2Vec.
Am introdus un algoritm de resta urare a diacriticelor bazat pe trei pași: generarea tuturor
posibilităților de cuvinte cu diacritice pentru un cuvânt dat, crearea și antrenarea embedding –
urilor și în final determinarea celui mai potrivit cuvânt în acel context.
Deși nu am obținut rezultate state -of-the art , am reușit să arăt faptul că vectorii de
embedding -uri aduc o informație utilă pentru dezambiguiza rea sensului cuvintelor, r eușind astfel
să ajung la o acuratețe d e până la 93, 5% și un scor F1 de 85,9% .
În scopul îmbunătățirii rezultatelor, menționez câteva strategii: mărirea puterii de calcul
prin hardware, un set de date mai diversificat și mai amplu și poate chiar schimbarea
algoritmului de diacr itizare, încercând o abordare cu rețele neurale recurente.
În concluzie, consider că algoritmul propus precum și rezultatele obținute sunt
acceptabile, ținând co nt de limitările de timp și constrângerile hardware, iar posibilitățile
viitoare de îmbunătă țire a rezultatelor confirmă faptul că restaurarea diacriticelor este o ramură a
procesării limbajului natural care este în continuă dezvoltare și care merită să fie cercetată în
continuare.
38
Bibliografie
[1] https://republica.ro/ce -sunt-romanii -care-scriu -fara-diacritice – Isabela Nedelcu
[2] Editura Enciclopedică, ed. ( 1996 ). Dicționar Enciclopedic vol. II D —G.
București.pp. p. 85. ISBN 973-45-0144 -5.
[3] M. Hasan, M.A. Orgun, R. Schwitter Real-time event detection from the Twitter data stream
using the TwitterNews+ Framework Inf. Process. Manage. (2018)
[4] D. Vilares, M.A. Alonso, C. Gómez -Rodríguez Supervised sentiment analysis in multilingual
environmen tsInf. Process. Manage., 53 (3) (2017), pp. 595-607
[5] P. Giridhar, M.T. Amin, T.Abdelzaher, D. Wang, L. Kaplan, J.George, R. Ganti Clarisense+:
an enhanced traffic anomaly explanation service using social network feeds Pervasive Mob.
Comput., 33 (2016), p p. 140-155
[6] X. Wang, M.S. Gerber, D.E. Brown Automatic crime prediction using events extracted from
twitter posts International Conference on Social Computing, Behavioral -Cultural Modeling, and
Prediction, Springer, Berlin, Heidelberg (2012), pp. 231-238
[7] Tufiș D, Ceaușu A. DIAC+: A professional diacritics recovering system. Proceedings of
LREC 2008. 2008 May.
[8] Šantić N, Šnajder J, Bašić BD. Automatic diacritics restoration in Croatian texts.
INFuture2009: Digital Resources and Knowledge Sharing. 20 09 Jan 1:309 -18.
[9] Novák A, Siklósi B. Automatic diacritics restoration for hungarian. Association for
Computational Linguistics.2015
[10] R. Mihalcea, V. Nastase Letter level learning for language independent diacritics
restoration
Proceedings of the 6th Conference on Natural Language Learning -Volume, Association for
Computational Linguistics (2002), pp. 1-7
[11] Daelemans, W., Van Den Bosch, A. and Zavrel, J., 1999. Forgetting exceptions is harmful
in language learning. Machine learning , 34(1-3), pp. 11-41.
[12] Mihalcea, R.F.: Diacritics restoration: learning from letters versus learning from words. In:
Gelbukh, A. (ed.) CICLing 2002. LNCS, vol. 2276, pp. 339 -348. Springer, Heidelberg(2002)
[13] Quinlan, J. Ross. C4. 5: programs for machine learnin g. Elsevier, 2014.
39
[14] Yarowsky D.A comparison of corpus -based techniques for restoring accents in Spanish and
French text.InNatural language processing using very large corpora 1999 (pp. 99 -120).Springer,
Dordrecht.
[15] Nguyen KH, Ock CY. Diacritics r estoration in vietnamese: letter based vs. syllable based
model. InPacific Rim International Conference on Artificial Intelligence 2010 Aug 30 (pp. 631 –
636). Springer, Berlin, Heidelberg.
[16] Richter, M., Straňák, P. and Rosen, A., 2012. Korektor –a syste m for contextual spell –
checking and diacritics completion. Proceedings of COLING 2012: Posters , pp.1019 -1028.
[17] Adali, K. and Eryiğit, G., 2014. Vowel and diacritic restoration for social media
texts.In Proceedings of the 5th Workshop on Language Analy sis for Social Media (LASM) (pp.
53-61).
[18] Ljubešić, N., Erjavec, T. and Fišer, D., 2016, May. Corpus -based diacritic restoration for
south slavic languages. In Proceedings of the tenth international conference on language
resources and evaluation (LRE C 2016) (pp. 3612 -3616).
[19] Grozea, Cristian. "Experiments and results with diacritics restoration in Romanian."
In International Conference on Text, Speech and Dialogue , pp. 199 -206. Springer, Berlin,
Heidelberg, 2012.
[20] Náplava, J., Straka, M., St raňák, P. and Hajic, J., 2018. Diacritics restoration using neural
networks.In Proceedings of the Eleventh International Conference on Language Resources and
Evaluation (LREC -2018) .
[21] Ozer, Zeynep, Ilyas Ozer, and Oguz Findik. "Diacritic restoration of Turkish tweets with
word2vec." Engineering Science and Technology, an International Journal 21, no. 6 (2018):
1120 -1127.
[22] https://www.techopedia.com/definition/190/ar tificial -intelligence -ai
[23] Speech and Language Processing: An introduction to natural language processing,
computational linguistics, and speech recognition. Daniel Jurafsky & James H. Martin. Second
edition(2007)
[24] Speech and Language Processing: An Introduction to Natural Language Processing,
Computational Linguistics, and Speech Recognition Daniel Jurafsky & James H. Martin. Third
edition(2018)
[25] https://becominghuman.ai/a -simple -introduction -to-natural -language -processing –
ea66a1747b32
[26] https://searchbusinessanalytics.techtarget. com/definition/natural -language -processing -NLP
40
[27] https://monkeylearn.com/sentiment -analysis/
[28]https ://www.academia.edu/3887954/OVER_VIEW_THE_MACHINE_TRANSLATION_IN
_NLP
[29] https://emerj.com/ai -sector -overviews/machine -translation -14-current -applications -and-
services/
[30] Howe, Jeff. "The rise of crowdsourcing." Wired magazine 14, no. 6 (2006): 1 -4.
[31] https://blog.floydhub.com/gentle -introduction -to-text-summarization -in-machine -learning/
[32] Turing, A., 2004. Intelligent machinery (1948). B. Jack Copeland , p.395.
[33] McCulloch, W.S. and Pitts, W., 1943. A logical calculus of the ideas immanent in nervous
activity. The bulletin o f mathematical biophysics , 5(4), pp.115 -133.
[34] Minsky, M. and Papert, S., 1969. Perceptron: an introduction to computational
geometry. The MIT Press, Cambridge, expanded edition , 19(88), p.2.
[35] Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Deep Learning .
http://www.deeplearningbook.org. MIT Press, 2016.
[36] “https://ml -cheatsheet.readthedocs.io/en/latest/gradient_descent.html ”
[37] McClelland, J.L., Rumelha rt, D.E. and PDP Research Group, 1986. Parallel distributed
processing. Explorations in the Microstructure of Cognition , 2, pp.216 -271.
[38] Caruana, Rich, Steve Lawrence, and C. Lee Giles. "Overfitting in neural nets:
Backpropagation, conjugate gradient, and early stopping." In Advances in neural information
processing systems , pp. 402 -408. 2001.
[39] Rabiner, L.R., 1989. A tutorial on hidden Markov models and selected applications in
speech recognition. Proceedings of the IEEE , 77(2), pp.257 -286.
[40] Wittgenstein, L., 1953. 1958. Philosophical investigations , 3.
[41] Mikolov, T., Sutskever, I., Chen, K., Corrado, G.S. and Dean, J., 2013. Distributed
representations of words and phrases and their compositionality.In Advances in neural
information proce ssing systems (pp. 3111 -3119).
url: http://papers.nips.cc/paper/5021 -distributed -representationsof -words -and-phrases -and-their-
compositionality.pdf .
[42] https://skymind.ai/wiki/word2vec
41
[43] Joulin, A., Grave, E., Bojanowski, P. and Mikolov, T., 2016. Bag of tricks for efficient text
classification. arXiv preprint arXiv:1607.01759 .
[44] Abadi, M., Barham, P., Chen, J., Chen, Z., Davis, A., Dean, J., Devin, M., Ghemawat, S.,
Irving, G., Isard, M. and Kudlur, M., 2016. Tensorflow: A system for large -scale machine
learning. In 12th {USENIX} Symposium on Operating Systems Design and I mplementation
({OSDI} 16) (pp. 265 -283).
[45] Travis Oliphant. Guide to NumPy . Jan. 2006.
[46] Rehurek, R. and Sojka, P., 2011. Gensim –python framework for vector space
modelling. NLP Centre, Faculty of Informatics, Masaryk University, Brno, Czech Republ ic, 3(2).
[47] Christopher D. Manning et al. “The Stanford CoreNLP Natural Language Processing
Toolkit”. In: Association for Computational Linguistics (ACL) SystemDemonstrations . 2014, pp.
55–60. url : http://www.aclweb.org/anthology/P/P14/P14 -5010 .
[48] Jones, Eric, Travis Oliphant, and Pearu Peterson. "{SciPy}: Open source scientific tools for
{Python}." (2014).
[49] J. D. Hunter. “Matplotlib: A 2D graphics environment”. In: Computing In Science
& Engineering 9.3 (2007), pp. 90 –95.doi: 10.1109/MCSE.2007.55.
[50] Pedregosa, Fabian, Gaël Varoquaux, Alexandre Gramfort, Vincent Michel, Bertrand
Thirion, Olivier Grisel, M athieu Blondel et al. "Scikit -learn: Machine learning in
Python." Journal of machine learning research 12, no. Oct (2011): 2825 -2830.
[51] Adam Paszke et al. “Automatic differentiation in PyTorch”. In: NIPS -W. 2017.
[52] Alan, M. "Turing." Computing mach inery and intelligence. Mind 59, no. 236 (1950): 433 –
460.
[53] https://www.diacritice.ro/ , http://www.diacritice.com/ , http:/ /diacritice.opa.ro/
[54] http://www.racai.ro/en/tools/text/
[55] http://diacritics -restoration.speed.pub.ro/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aspecte computaționale ale procesării textelor Coordonator științific : Absolvent: Prof. dr. Liviu P. Dinu Alina Măican 1 Cuprins 1 MOTIVAȚIE… [605010] (ID: 605010)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
