Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de...

40
1 UNIVERSITATEA „ALEXANDRU IOAN CUZA” IAŞI Facultatea de Informatică LUCRARE DE LICENȚĂ Sentiment Analyzer Propusă de AVRĂMOAEI IOAN ALEXANDRU Sesiunea: Februarie, 2017 Coordonator știinţific: Asistent, dr. Vasile Alaiba

Transcript of Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de...

Page 1: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

1

UNIVERSITATEA „ALEXANDRU IOAN CUZA” IAŞI

Facultatea de Informatică

LUCRARE DE LICENȚĂ

Sentiment Analyzer

Propusă de

AVRĂMOAEI IOAN ALEXANDRU

Sesiunea: Februarie, 2017

Coordonator știinţific: Asistent, dr. Vasile Alaiba

Page 2: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

2

Cuprins 1. Introducere ................................................................................................................................. 4

1.1 Motivație ............................................................................................................................... 4

1.2 Context .................................................................................................................................. 4

1.3 Cerințe funcționale ............................................................................................................... 5

1.4 Abordare tehnică .................................................................................................................. 6

2. Contribuții ................................................................................................................................... 7

3. Proiectare .................................................................................................................................... 8

3.1 Dezvoltarea interfeței, structura paginilor aplicației și funcționalitatea acestora ............... 8

3.1.1 Arhitectura aplicației ..................................................................................................... 8

3.1.2 Protocoale de comunicare client-server ...................................................................... 12

3.1.3 Intefața cu utilizatorul.................................................................................................. 12

3.2 Dezvoltarea funcției de analizare și structura dicționarului aferent .................................. 15

3.2.1 Structura dicționarului ................................................................................................. 16

3.2.2 Funcția de analizare ......................................................................................................... 17

4. Implementare ........................................................................................................................... 18

4.1 Pagina de administrare a dicționarului și funcționalitatea acesteia .................................. 18

4.1.1 Adăugarea unui termen ............................................................................................... 18

4.1.2 Filtrarea dicționarului .................................................................................................. 19

4.1.3 Editarea termenilor ...................................................................................................... 20

4.2 Funcționalitatea de analizare și încadrarea textului în clasa de sentiment identificată .... 22

4.2.1 Încărcarea dicționarului necesar ................................................................................. 22

4.2.2 Împărțirea textului în propoziții ................................................................................... 23

4.2.3 Identificarea expresiilor fixe și variabile și înlocuirea acestora în text ........................ 23

4.2.4 Împărțirea propozițiilor în cuvinte ............................................................................... 23

4.2.5 Determinarea scorului și identificarea clasei de sentiment ........................................ 23

4.3 Implementarea sistemului de notificare ............................................................................ 24

4.3.1 Partea vizuală ............................................................................................................... 24

Page 3: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

3

4.3.2 Partea funcțională ........................................................................................................ 25

5. Manualul utilizatorului .............................................................................................................. 28

5.1 Meniul aplicației .................................................................................................................. 28

5.2 Pagina principală ................................................................................................................. 31

5.3 Pagina de administrare a dicționarului ............................................................................... 32

5.3.1 Secțiunea de adăugare a unui nou termen ................................................................. 33

5.3.2 Secțiunea de filtrare a dicționarului ............................................................................ 33

5.3.3 Secțiunea de afișare a dicționarului ............................................................................. 34

5.4 Pagina de administrare a utilizatorilor ........................................................................... 35

5.5 Pagina ultimelor rulări efectuate ................................................................................... 36

5.6 Funcționalitatea de modificare a contului ..................................................................... 37

6. Concluzii .................................................................................................................................... 39

7. Bibliografie ................................................................................................................................ 40

Page 4: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

4

1. Introducere

1.1 Motivație

„Sentiment Analyzer” este o aplicație web ce încadrează un text în limba română sau

engleză, pe baza unui dicționar predefinit, în trei clase de sentiment: pozitiv, negativ și neutru.

În urma analizării textului se va obține sentimentul predominant al acestuia, procentul de

influență al claselor identificate și termenii ce au dus la obținerea rezultatului.

Consider importantă tema abordată deoarece tot mai multe companii se axează pe procese

automate de statistică, pe baza recenziilor obținute din partea clienților, în încercarea de a oferi

acestora un produs cât mai bun. Această aplicație reprezintă o soluție pentru realizarea acestui

lucru, oferind utilizatorului un punct de reper despre impactul emoțional transmis de datele

analizate.

Pe baza considerentelor menționate, o astfel de aplicație este utilă tuturor companiilor

interesate de serviciile oferite. Avantajele date de aplicație sunt următoarele:

- îmbunătățirea serviciilor oferite

- acumularea de informații despre publicul țintă al serviciilor oferite

- raportarea la competiție

1.2 Context

Analiza de sentiment se referă la utilizarea tehnicilor de procesare a limbajului natural

(limbajul folost de zi cu zi) și a algoritmilor computaționali în încercarea de extrage informații cu

caracter „emoțional” dintr-un material analizat. Infomațiile extrase pot sau nu să corespundă cu

intențiile transmise de autor, aici intervenind obiectivitatea și subiectivitatea. În principiu,

corectitudinea acestor informații se bazează pe interpretarea umană.

Odată cu creșterea platformelor de socializare online, precum rețele sociale și blog-uri, au

apărut tot mai multe interese în domeniu, dezvoltându-se produse, care prin aplicarea analizei

de sentiment pe recenziile utilizatorilor, oferă informații esențiale despre „calitatea produselor

oferite”.

De-a lungul timpului s-au dezvoltat și încercat mai multe procese de analizare, iar acestea

pot fi concretizate în trei categorii:

Page 5: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

5

- procese bazate pe un set de cunoștințe deja existente

- procese bazate pe statistici

- procese hibrid

Procesele bazate pe un set de cunoștințe deja existente utilizează de obicei un set de

resurse fizice, împărțite în clase de sentiment, căutând existența acestora în materialul analizat.

Pe baza resurselor găsite în material, se realizează încadrarea în clasa de sentiment.

Procesele bazate pe statistici folosesc metode de învățare automată efectuând o analiză

mai profundă a materialului analizat. Se încearcă nu doar identificarea sentimentului existent ci

și de cine si către cine este transmis.

Procesele hibrid înglobează cele două procese descrise mai sus în încercarea de a crea

concepte. Prin concepte se înțelege identificarea de situații care au între ele o anumită

legătură. Astfel se poate găsi o situație care nu este neapărat sugestivă pentru identificarea

sentimentului însă prin conceptul acesteia se poate ajunge la una care are o importanță mai

mare.

Aplicația abordează procesele bazate pe un set de cunoștințe deja existente, înglobând

tehnici ce permit extinderea resurselor folosite pentru a acoperi cât mai multe cazuri.

1.3 Cerințe funcționale

După cum sugerează și numele aplicației, funcționalitatea principală o constituie

posibilitatea de a rula analize de sentiment. Analiza de sentiment reprezintă încadrarea unui

text în limba română sau engleză în una din cele trei clase pe care le tratează aplicația și anume:

pozitiv, negativ sau neutru.

Aplicația permite crearea unui cont. Beneficiul acestuia, la modul general, este de a păstra

ultimele rulări efectuate, putând fi accesate și rulate din nou. Pe lângă aceasta, contul oferă

acces la o serie de funcționalități utilizatorilor ce dețin drepturile necesare.

Pentru administrarea aplicației există utilizatori ce dețin cont de administrator. Aceștia pot

administra atât dicționarul folosit de aplicație pentru realizarea analizelor de sentiment, cât și

anumite aspecte pentru ceilalți utilizatori.

Page 6: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

6

1.4 Abordare tehnică

Fiind o aplicație web, aceasta este constituită din două părți: interfața (client) și partea de

procesare (server). Pentru realizarea clientului am folosit tehnologii precum HTML, CSS și

JavaScript. Pentru realizarea funcționalității pe partea de server am folosit PHP, iar pentru

stocarea datelor, MySQL. Totodată am utilizat o serie de biblioteci cu scopul de a facilita

implementarea proiectului, de a oferi funcționalități atât pe partea de client cât și pe cea de

server, precum și un aspect dinamic ce se adaptează majorității dispozitivelor utilizate pentru

navigarea pe internet (telefoane, tablete, laptop-uri), în încercarea de a oferi utilizatorului un

mediu cât mai plăcut:

- PHP Romanian Stemmer: este o bibliotecă PHP cu suport pentru limba română, scopul

acesteia fiind de a reduce cuvintele la radăcina lor (ex.: pisicile devine pisic).

- Porter-Stemmer: este o bibliotecă PHP cu suport pentru limba engleză. Aceasta are

drept scop reducerea cuvintelor la rădăcina lor (ex.: walking devine walk).

- jQuery: este una dintre cele mai utilizate biblioteci de JavaScript, fiind disponibilă în

majoritatea browser-elor existente. Scopul acesteia este de a oferi funcționalități puternice

precum parcurgerea și modificarea arborelui DOM1, manipularea elementelor CSS sau cereri de

tip AJAX2, printr-o sintaxă cât mai simplă.

- Bootstrap: este o bibliotecă populară, open-source3, cu ajutorul căreia se poate crea

ușor interfața unei pagini web. Aceasta oferă un stil uniform pentru majoritatea elementelor de

bază din HTML asigurând astfel un aspect consistent și unitar. Pe langă stilurile oferite, conține

o serie de componente bazate atât pe CSS cât și pe JavaScript ce adaugă aspectului un plus de

funcționalitate și intuitivitate.

- DataTables: este o bilbliotecă bazată pe jQuery, flexibilă, ce oferă o serie de

funcționalități pentru orice tabel din HTML. Permite atât procesare în pagină, cât și procesare

pe partea de server, prin cereri AJAX, făcând ușor de manipulat un volum mare de date.

- Highcharts: este o bibliotecă bazată pe JavaScript ce oferă posibilitatea de reprezentare

a datelor sub forma unor grafice interactive cu numeroase funcționalități, totodată oferind un

aspect „prietenos” și dinamic pentru dispozitivul de pe care este accesată pagina ce conține

graficul.

- PHP: este unul din cele mai utilizate limbaje de programare pentru dezvoltarea paginilor

și a aplicațiilor web. Poate fi ușor incorporat în codul HTML, codul fiind interpretat de server.

Printre avantajele acestui limbaj de programare, menționez că este open-source având ediții

stabile disponibile pentru cele mai importante sisteme de operare.

1 DOM - https://www.w3.org/DOM/ 2 AJAX - https://en.wikipedia.org/wiki/Ajax_(programming) 3 Open-source - https://en.wikipedia.org/wiki/Open-source_software

Page 7: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

7

- MySQL: este cel mai popular SGBD4 open-source, aflându-se în strânsă legătură cu PHP,

prin interfața grafică phpMyAdmin. Acesta permite stocarea persistentă a datelor, oferind

funcționalitățile de citire, scriere, ștergere și editare ale acestora. Este considerat a fi „un sistem

rapid și stabil, ce permite utilizatori și fire de execuție multiple”.

- JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea

unor funcționalități în paginile web. Alături de HTML si CSS reprezintă una din cele trei

tehnologii fundamentale pentru crearea paginilor web, fiind incorporat de majoritatea browser-

elor moderne.

- CSS: este un standard pentru formatarea și stilizarea etichetelor HTML, ce permite

modificarea aspectului și a așezării în pagină a acestora, prin fișiere externe numite „pagini de

stil”.

- HTML: este un limbaj de marcare utilizat pentru crearea paginilor web. Scopul său este

de prezentare al informației prin etichete sau tag-uri specifice, ce permit atât funcționalități

minore precum îngroșarea sau sublinierea unui cuvânt, cât și funcționalități avansate cum ar fi

realizarea unui formular. Pentru a fi redat, HTML utilizează un soft specializat numit „agent

utilizator HTML” ce permite interpretarea informațiilor furnizate, cel mai bun exemplu fiind

browser-ul web.

2. Contribuții

În urma unui sondaj asupra celorlalte proiecte existente ce abordează domeniul tratat, am

constatat că există numeroase astfel de produse pentru limba engleză însă nu și pentru limba

română. Astfel, pot afirma ca una din noutățile oferite de proiect o constituie analizatorul de

sentiment pentru limba română.

O altă contribuție substanțială este reprezentată de structura și modul de implementare al

aplicației. Implementarea curentă permite extinderea analizatorului pentru majoritatea limbilor

prin adăugarea dicționarului aferent.

Am decis împărțirea lucrării în două capitole, motivând deciziile luate pe parcursul

procesului de dezvoltare, oferind detalii de implementare și argumente pentru tehnicile

utilizate:

Dezvoltarea interfeței, structura paginilor aplicației și funcționalitatea acestora

Structura dicționarului aferent și funcția de analizare

Pentru dezvoltarea interfeței și a funcționalităților aferente am luat în considerare

dinamicitatea și adaptarea aspectului indiferent de dispozitivul folosit, precum și dorința

4 SGBD - https://ro.wikipedia.org/wiki/Sistem_de_gestiune_a_bazelor_de_date

Page 8: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

8

clientului de a utiliza un produs fiabil și interactiv, ce oferă funcționalități rapide și un flux de

utilizare cât mai fluent, prin:

- implementarea unui aspect dinamic

- utilizarea de cereri asincrone pentru a realiza acțiunile în timp real

- un sistem de notificare ce înștiințează utilizatorul asupra rezultatului acțiunilor

efectuate

Pentru implementarea funcționalității de analizare, am luat în considerare utilizarea a cât

mai puține resurse și cereri, pentru a oferi server-ului un plus de eficiență. Același principiu l-am

aplicat și în stabilirea structurii dicționarului utilizat, oferind astfel un plus de eficiență pentru

diversitatea termenilor și a spațiului de stocare, prin:

- verificarea necesității retrimiterii unei cereri

- verificarea necesității de reîncărcare a dicționarului utilizat

- utilizarea librăriilor de stemming5

3. Proiectare

Această secțiune acoperă pe rând cele două capitole menționate anterior oferind detalii

despre proiectarea acestora.

3.1 Dezvoltarea interfeței, structura paginilor aplicației și funcționalitatea acestora

În acest capitol voi prezenta clientul aplicației. Clientul reprezintă un aspect important

deoarece prin intermediul acestuia, utilizatorul interacționează cu aplicația. Pe parcursul

dezvoltării am urmărit realizarea unui mediu rapid și ușor de utilizat, folosind anumite tehnici

descrise în subcapitolele următoare.

3.1.1 Arhitectura aplicației

Utilizatorul are la dispoziție o interfață grafică simplă și intuitivă, adaptabilă la dispozitivul

folosit de acesta, care utilizează pe cât posibil pictograme și elemente sugestive, pentru a face

interacțiunea cât mai ușoară. Interfața dispune de un sistem de notificare care interpretează

5 stemming - https://en.wikipedia.org/wiki/Stemming

Page 9: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

9

atât mesajele generate de client cât și cele primite de la server, cu rolul de a înștiința utilizatorul

asupra acțiunilor efectuate.

Specific unei aplicații web, componența clientului este dată de mai multe pagini ce

îndeplinesc funcții diferite, fiind legate între ele cu ajutorul hyperlink-urilor6. Pentru navigarea

între acestea, utilizatorul dispune mereu de un meniu de navigare. Pe langă funcția de navigare,

meniul deține și funcționalitățile de autentificare, înregistrare și ieșirea din contul aplicației.

De menționat este faptul că unele pagini nu sunt accesibile tuturor utilizatorilor, acestea

necesitând drepturi de acces (de administrator).

3.1.1.1 Pagina principală

Este pagina de start a aplicației. Aici utilizatorii pot efectua analizele de sentiment prin

selectarea limbii pentru care doresc analiza și introducerea textului corespunzător. Pagina este

alcătuită din două componente: prima reprezentată de formularul necesar pentru introducerea

textului analizat, și a doua reprezentată de rezultatul primit din partea server-ului și afișat în

pagină. Pentru reprezentarea rezultatului primit am ales afișarea acestuia atât sub formă de

grafic, utilizând Highcharts, cât și sub formă tabelară, menționând termenii ce au dus la

identificarea rezultatului.

3.1.1.2 Pagina ultimelor rulări efectuate

Este o pagină accesibilă tuturor utilizatorilor. Aici cei care dețin cont își pot regăsi ultimele

rulări efectuate, rezultatele obținute și posibilitatea de a le rula din nou.

3.1.1.3 Pagina de administrare a utilizatorilor

Această pagină este accesibilă doar utilizatorilor de tip administrator. Scopul său este de a

oferi informații despre ceilalți utilizatori, totodată permițând modificarea dreptului de

administrator de către utilizatorii care dețin această permisiune. Pentru un control eficient

asupra aplicației, am implementat un administrator permanent care nu poate fi modificat.

Astfel este asigurată o politică de securitate care permite corectarea posibilelor erori cauze de

alți utilizatori. În sprijinul politicii de securitate, am decis să rețin pentru fiecare utilizator cine a

efectuat modificarea drepturilor, acest lucru fiind afișat în pagină.

6 hyperlink - https://ro.wikipedia.org/wiki/Hiperlink

Page 10: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

10

Pentru a oferi un aspect „modern” elementului ce se ocupă de modificarea dreptului descris

anterior, am utilizat componenta Bootstrap Toggle7.

3.1.1.4 Pagina de administrare a dicționarului

Este o pagină accesibilă doar utilizatorilor cu drepturi de administrator. Aici, doar cei care

dețin acces, pot administra componența dicționarului utilizat de aplicație prin editarea,

ștergerea sau adăugarea de noi termeni. Pentru a manipula ușor volumul de date în timp real,

am folosit DataTables8 care prin intermediul cererilor de tip AJAX, permite un schimb asincron

de date cu server-ul. Utilizând aceeași bibliotecă am realizat paginația, căutarea, ordonarea și

filtrarea după anumite criterii. În urma modificărilor efectuate, pagina este actualizată imediat

fară a fi nevoie de reîncărcarea acesteia.

3.1.1.5 Funcționalitatea de autentificare

Permite utilizatorului accesul la contul acestuia în cazul in care deține unul. Pentru

autentificare nu am folosit o pagină separată ci un modal9, în ideea de a menține utilizatorul pe

pagina curentă, evitând astfel reîncărcarea paginii și a stilurilor aferente în cazul în care nu mai

dorește să efectueze autentificarea.

Pentru a finaliza procesul de autentificare utilizatorul trebuie să completeze câmpurile

modal-ului. Pentru a reduce numărul de cereri, datele sunt validate și pe partea de client, nu

doar pe partea de server, utilizând JavaScript. O tehnică aplicată aici pentru a ajuta la

minimizarea numărului de cereri este reținerea datelor introduse înainte de cerere și verificarea

dacă acestea diferă sau dacă raspunsul server-ului este unul negativ pentru datele curente,

înainte de următoarea cerere. În urma validării datelor de către server, în caz afirmativ, acesta

va seta un cookie10 de logare pentru o perioadă determinată de timp. Avantajul cookie-ului este

că permite utilizatorului să părăsească aplicația fără a fi nevoie de reautentificare la întoarcere,

dacă perioada de valabilitate a acestuia nu a expirat.

7 Bootstrap Toggle - http://www.bootstraptoggle.com/ 8 DataTables - https://datatables.net/ 9 modal - https://en.wikipedia.org/wiki/Modal_window 10 cookie - https://en.wikipedia.org/wiki/HTTP_cookie

Page 11: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

11

3.1.1.6 Funcționalitatea de înregistrare

Permite utilizatorului crearea unui cont. Funcționalitatea și structura acesteia este similară

cu cea de autentificare, acțiunea având loc tot într-un modal și nu pe o pagină separată, din

aceleași motive menționate anterior. Principii de eficiență pentru reducerea numărului de

cereri către server, au fost aplicate și aici, prin validarea datelor trimise, și pe partea de client.

La sfârșitul procesului de înregistrare, dacă acesta s-a finalizat cu succes, utilizatorul va fi

automat autentificat în contul creat.

3.1.1.8 Modificarea contului

Pentru această funcționalitate, ca și în cazul autentificării și a înregistrării, am utilizat un

modal, ce facilitează accesul la această opțiune indiferent de pagina pe care se află utilizatorul.

Structura acestei funcționalități este alcătuită din două componente: editarea informațiilor

contului, precum nume, email sau username și modificarea parolei.

Page 12: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

12

3.1.2 Protocoale de comunicare client-server

Pentru a realiza funționalitatea pe partea de client, acesta comunică cu server-ul prin cereri

asincron de tip AJAX. Pentru fiecare funcționalitate server-ul pune la dispoziție un API. Pentru

răspunsul server-ului am stabilit următoarele implementări:

- răspuns de tip text cu următoarea structură: {COD_RASPUNS}{SEPARATOR}{MESAJ}

- răspuns de tip obiect cu structura: { status -> ... , msg -> ... , data -> ...}

Pentru ambele forme de răspuns, clientul oferă o funție de interpretare care validează și

afișează răspunsul, utilizând astfel sistemul de notificare menționat anterior, acolo unde este

cazul.

Protocoale de comunicare 1: Comunicarea client-server

3.1.3 Intefața cu utilizatorul

În realizarea unei aplicații web unele opinii exprimă faptul că cel mai important lucru este

aspectul. Altele susțin că este timpul de procesare atunci când utilizatorul execută o acțiune.

Sunt de părere că ambele puncte de vedere sunt foarte importante și o aplicație bună le

incorporează pe amândouă, oferind utilizatorului atât un aspect plăcut cât și rapiditate în

realizarea funcționalităților.

Pentru a oferi cele menționate anterior, am utilizat Bootstrap, DataTables și Highcharts,

însoțite de cereri AJAX care fac experiența utilizatorului mai plăcută și mai interactivă.

Page 13: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

13

Voi prezenta în cele ce urmează schițele interfeței grafice, menționând cele mai importante

aspecte, acolo unde este cazul.

Pagina principală: permite utilizatorului introducerea unui text, în câmpul destinat acestui

lucru, selecția limbii și executarea acțiunii de analiză prin apăsarea butonului corespunzător.

Rezultatul primit este afișat atât sub formă grafică cât și sub formă tabelară.

Figura 1: Schiță pentru pagina principală

Pagina de administrare a dicționarului este cea mai complexă pagină, cu cele mai multe

funcționalități:

- adăugarea unui nou termen prin utilizarea formularului aferent

- filtrarea termenilor afișați prin opțiunile corespunzătoare

- editarea și ștergerea termenilor prin opțiunile afișate în tabel

- paginația termenilor

- actualizarea modificărilor în timp real

Page 14: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

14

Figura 2: Schiță pentru pagina de administrare a dicționarului

Pagina de administrare a utilizatorilor precum și cea a ultimelor rulări efectuate au o

structură asemănătoare, informația fiind afișată în format tabelar.

Figura 3: Schiță pentru pagina de administrare a utilizatorilor și a ultimelor rulări efectuate

Page 15: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

15

Interfața utilizatorului este una dinamică, rearanjând elementele în pagină în funcție de

dispozitiul folosit. Pentru a ilustra acestu lucra voi prezenta schițele meniului de navigare.

Figura 4: Schița meniului de navigare pentru dispozitivele mari (laptop, PC, tabletă)

Figura 5: Schița pentru meniul de navigare pe dispozitivele mici (telefon)

Analizând cele două schițe se poate observa transformarea elementului ilustrat de la un

dispozitiv la altul.

3.2 Dezvoltarea funcției de analizare și structura dicționarului aferent

În acest capitol voi descrie structura dicționarului utilizat de aplicație, principiile utilizate

pentru stocarea acestuia și tehnicile de eficiență aplicate.

Page 16: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

16

3.2.1 Structura dicționarului

Dicționarul utilizat de aplicație este reprezentat de un grup de cuvinte pe care am convenit

să le împart în două categorii: termeni și expresii. Acestea sunt specifice pentru fiecare limbă

disponibilă în cadrul aplicației. Atât termenii cât și expresiile dispun de unele proprietăți

comune:

- scor: rolul scorului este de a accentua impactul oferit de termen sau expresie în

identificarea sentimentului. Valorile acestuia sunt de la 1 la 5. Implicit orice termen și

expresie are scorul 1

- clasă: are rolul de a ajuta la identificarea sentimentului având valorile pozitiv, negativ

și neutru

După cum am menționat anterior, pentru eficiența spațiului de stocare și a numărului de

termeni adăugați am folost tehnici de minimizare pentru sporirea acestora, printre care și

procesul de stemming.

Stemming-ul reprezintă reducerea cuvintelor la rădăcina acestora. Astfel cuvinte precum

cărțile, lecțiilor sau lecturile sunt reduse la rădăcina lor, respectiv cart, lect și lectur.

Astfel, având în considerare cele menționate voi descrie în amănunt noțiunile de termeni și

expresii.

3.2.1.1 Termenii

Termenii sunt reprezentați printr-un singur cuvânt (ex.: bine, rău). Spre deosebire de

expresii, proprietatea clasă a acestora este extinsă prin două opțiuni suplimentare, pe care le-

am denumit:

- inițiatori de expresii negative: sunt acele cuvinte ale limbii care ajută la construirea

unui grup negativ (ex.: „nu” pentru grupul „nu e frumos”, „fără” pentru grupul ”fără

pic de bun simț”)

- conectori de expresii negative: sunt acele cuvinte care leagă inițiatorii de expresii

negative de restul grupului (ex.: „este” pentru grupul „nu este frumos”)

În momentul adăugării în dicționar sau al modificării, termenii sunt trecuți prin procesul de

stemming, excepție făcând termenii care fac parte din cele două clase menționate mai sus.

Acest lucru duce la un număr redus de intrări reținute în dicționar prin faptul că stemming-ul

acoperă toate cuvintele care conțin aceași rădăcină.

Page 17: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

17

3.2.1.2 Expresiile

Expresiile sunt grupuri formate din unul sau mai multe cuvinte. Spre deosebire de termeni,

expresiile nu trec prin procesul de stemming, chiar și cele formate dintr-un singur cuvânt.

Pentru a acoperi toate formele unei expresii am utilizat un procedeu similar cu cel folosit în

cadrul termenilor. Am decis păstrarea rădăcinii cuvântului și folosirea caracterului „_” pentru a

sugera faptul că un cuvânt este variabil. Astfel, pentru a acoperi expresiile „cel mai bun” și „cei

mai buni”, utilizând cele menționate mai sus, este suficientă expresia „ce_ mai bun_”.

Așadar, expresiile sunt împărțite astfel:

- expresii fixe: sunt expresiile care nu prezintă nicio formă variabilă în componența lor

(ex.: felicitări, voie bună)

- expresii variabile: sunt expresiile care prezintă forme variabile în componența lor (ex.:

ce_ mai frumos_ pentru cel mai frumos, cei mai frumoși, etc.)

- expresii dinamice: expresiile dinamice sunt expresii identificate în momentul rulării.

Acestea sunt alcătuite doar din termeni și respectă urmatoare structură:

o încep cu un termen inițiator de expresie negativă

o pot sau nu să conțină unul sau mai mulți termeni conectori de expresie

negativă

o continuă cu un termen ce are proprietatea clasă pozitiv sau negativ

În funcție de proprietatea clasă al ultimului termen din expresie, aceasta este negată. Astfel,

în cazul în care clasa este pozitivă, expresia devine negativă, iar în cazul în care clasa este

negativă, expresia devine pozitivă (ex.: „nu este bine” – expresie dinamică negativă unde „nu”

este termen inițiator de expresie negativă, „este” termen conector de expresie negativă, iar

„bine” termen ce are proprietatea clasă pozitiv; „nu era chiar rău” – expresie dinamică pozitivă

unde „nu” este termen inițiator de expresie negativă, „era” și „chiar” termeni conectori de

expresie negativă, „rău” termen ce are proprietatea clasă negativ).

3.2.2 Funcția de analizare

Funcția de analizare utilizează dicționarul aplicației, care este încărcat în memorie la

momentul rulării. Am structurat alocarea în memorie pe diverse nivele astfel încât căutarea în

conținutul acestuia să fie una cât mai ușoară și mai puțin consumatoare de resurse.

Textul primit din partea utilizatorului este transformat și împărțit în termeni care mai apoi

sunt analizați. În urma analizării un rezultat este trimis spre partea de procesare grafică care

utilizează informațiile primite pentru reprezentarea în pagina a acestuia. Rezultatul afișat este

Page 18: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

18

reprezentat atât sub formă grafică, utilizând cei mai relevanți termeni și cele mai relevante

expresii identificate, cât și sub formă tabelară fiind reprezentate trei nivele:

- nivelul expresiilor identificate

- nivelul termenilor identificați

- nivelul termenilor neidentificați (acest nivel fiind disponibil doar utilizatorilor cu drept

de administrator)

Fiecare termen sau expresie identificată apare în pagină o singură dată, însă este luată în

considerare, în cadrul rezultatului final, pentru fiecare apariție.

4. Implementare

În acest capitol voi prezenta câteva funcționalități pe care le consider reprezentative pentru

aplicație și care au avut, în opinia mea, un element cheie în modul de operare al acesteia:

- pagina de administrare a dicționarului și funcționalitatea acesteia

- funcționalitatea de analizare și încadrarea textului în clasa de sentiment identificată

- implementarea sistemului de notificare

4.1 Pagina de administrare a dicționarului și funcționalitatea acesteia

În opinia mea, pagina de administrare a dicționarului, reprezintă o pagină complexă

deoarece toate acțiunile existente se realizează în timp real, schimbările aplicându-se imediat,

fără reîncărcarea paginii. Voi descrie în continuare funcționalitățile existente oferind detalii de

implementare.

4.1.1 Adăugarea unui termen

Pentru adăugarea unui termen este necesară completarea formularului aferent. În urma

completării și a realizării acțiunii de adăugare, datele sunt validate pe partea de client, iar dacă

nu apar erori, este trimisă o cerere AJAX către server, unde datele sunt validate din nou (vezi

Secțiune Cod 1) și se verifică dacă termenul nu există deja în baza de date. În cazul în care noul

termen este adăugat cu succes, acesta este afișat în pagină prin trimiterea unei cereri AJAX care

actualizează termenii afișați.

Page 19: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

19

Secțiune Cod 1: Validarea adăugării unui termen pe partea de server

4.1.2 Filtrarea dicționarului

Filtrarea dicționarului se face printr-o serie de câmpuri disponibile. Fiecare câmp are atașat

un declanșator astfel încât în momentul modificării se trimite o cerere AJAX care are rolul de

actualizare a datelor afișate în funcție de criteriile selectate (vezi Secțiune Cod 2).

Secțiune Cod 2: Ancorarea declanșatorilor pentru a permite filtrarea rezultatelor

Cererile AJAX sunt trimise de către obiectul DataTables creat la încărcarea paginii. Pentru a

realiza dinamic trimiterea parametrilor aferenți câmpurilor modificate, am adăugat pentru

cererile trimise, o funcționalitate personalizată ce permite cu ușurință eliminarea sau

adăugarea de noi filtre (vezi Secțiune Cod 3) prin utilizarea atributului „data-filter” atribuit

elementelor HTML ce reprezintă câmpurile.

Page 20: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

20

Secțiune Cod 3: Adăugarea parametrilor de filtrare

4.1.3 Editarea termenilor

Din punct de vedere al implementării, editarea termenilor reprezintă cea mai complexă

funcționalitate a acestei pagini. Pentru a oferi eficiență am structurat funcționalitatea astfel:

- la încărcarea paginii, creez un obiect în JavaScript, unde rețin proprietățile specifice

termenului (conținutul, forma de stemming, clasa, etc.)

- la accesarea opțiunii de editare, utilizatorul primește dinamic posibilitatea de a salva

sau anula acțiunea curentă. Obiectul instanțiat la rulare este populat cu valorile

termenului modificat. Pentru fiecare valoare afișată, a fiecărei proprietăți, care până în

momentul actual este redată sub formă textuală, este generat dinamic, un câmp ce

poate fi modificat, populat cu valoarea curentă (vezi Secțiune Cod 4).

Page 21: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

21

Secțiune Cod 4: Transformarea valorilor unui termen în câmpuri editabile

- în cazul anulării, câmpurile generate sunt transformate în reprezentare textuală, cu

valorile inițiale ale termenului (vezi Secțiune Cod 5)

Secțiune Cod 5: Transformarea câmpurilor în valori textuale

- în cazul modificării, se verifică dacă valorile câmpurilor diferă de valorile inițiale ale

termenului. Dacă valorile nu diferă, acțiunea se consideră a fi de anulare, aplicându-se

aceiași pași menționați anterior. Dacă valorile diferă, acestea sunt trimise server-ului,

care verifică dacă noile date sunt valide. În cazul în care datele sunt valide, se

efectuează modificarea pe partea de server, care trimite drept răspuns, schimbările

efectuate. Câmpurile sunt transformate în reprezentare textuală, fiind actualizate cu

noile valori (vezi Secțiune cod 6).

Page 22: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

22

Secțiune Cod 6: Aplicarea modificărilor

4.2 Funcționalitatea de analizare și încadrarea textului în clasa de sentiment identificată

Execuția funcționalității de analizare are următorii pași:

- încărcarea dicționarului necesar

- împărțirea textului în propoziții

- identificare expresiilor fixe și variabile și înlocuirea acestora în text

- împărțirea propozițiilor în cuvinte

- determinarea scorului și identificarea clasei de sentiment

4.2.1 Încărcarea dicționarului necesar

La fiecare rulare, în funcție de limba textului, este încărcat în memorie, dicționarul necesar.

Înainte de încărcare, se verifică dacă dicționarul este deja în memorie și dacă este nevoie de

reîncărcarea acestuia, prin verificarea dății ultimei actualizări. Data ultimei actualizări este o

valoare reținută în baza de date și actualizată atunci când dicționarul suferă modificări, prin

utilizarea paginei de administrare a acestuia.

Page 23: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

23

4.2.2 Împărțirea textului în propoziții

Pentru a evita posiblitatea de identificare greșită a expresiilor dinamice, am ales împărțirea

textului în propoziții. Prin identificare greșită mă refer la identificarea părților necesare unei

expresii dinamice, separat, în două propoziții și procesarea lor ca facând parte din aceași

expresie. (exemplu de identificare greșită: Ionel cuminte nu este. Bine că ...)

4.2.3 Identificarea expresiilor fixe și variabile și înlocuirea acestora în text

Primele identificate în text sunt expresiile fixe și variabile. Expresiile identificate sunt

înlocuite cu un termen irelevant pentru procesare. Acest lucru este necesar pentru a permite

identificarea corectă a expresiilor dinamice.

4.2.4 Împărțirea propozițiilor în cuvinte

Pentru procesarea termenilor și identificarea expresiilor dinamice este necesară împărțirea

textului în cuvinte. După împărțire, sunt identificate expresiile dinamice și termenii regăsiți în

dicționar. Pentru fiecare se adună la clasa de sentiment din care face parte, scorul acestuia.

4.2.5 Determinarea scorului și identificarea clasei de sentiment

Scorul obținut pentru fiecare clasă este transformat în procente astfel încât însumarea

acestora să dea 100% (vezi Secțiune cod 7).

Pentru a efectua încadrarea corectă în clasa de sentiment, am realizat o serie de teste ce m-

au ajutat în determinarea și precizia acestui lucru. Astfel pentru clasele de sentiment pozitiv și

negativ, am stabilit că încadrarea în acestea este corectă, doar dacă procentul calculat pentru

clasa identificată este mai mare decât suma procentului celorlalte clase identificate (vezi

Secțiune cod 7).

Page 24: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

24

Secțiune Cod 7: Calcularea procentului și încadrarea în clasa de sentiment

4.3 Implementarea sistemului de notificare

Pentru a oferi utilizatorului o experință plăcută în urma realizării unei acțiuni, am decis

implementarea unui sistem de notificare ce înștiințează asupra rezultatului obținut.

Componența acestuia este alcătuită din două părți:

- partea viziuală

- partea funcțională

4.3.1 Partea vizuală

Partea vizuală este reprezentată de elementul HTML, pe care l-am denumit „alertă”, cu rolul

de a prezenta informațiile primite. Pentru realizarea și stilizarea acestuia am folosit unele

componente din biblioteca Bootstrap. În funcție de tipul mesajului reprezentat există trei tipuri

de alerte:

- alerte de succes

- alerte de eroare

- alerte de informare

Page 25: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

25

Figura 6: Tipurile de alerte

4.3.2 Partea funcțională

Partea funcțională a sistemului de notificare are rolul de a interpreta răspunsul primit din

partea server-ului, de a-l procesa și mai apoi de a-l transforma în parte vizuală. Răspunsul este

de forma celui descris în secțiunea „3.2.1 Protocoale de comunicare”. Pe lângă răspunsul primit,

sistemul permite modificarea anumitor aspecte printr-o serie de parametrii, aceștia fiind:

- elementul de ancorare – are rolul de a preciza unde în pagină este afișată alerta, în

funcție de elementele specificate. Prin trimiterea unui singur element de ancorare se

va realiza centrarea pe verticală, iar prin două elemente, centrarea pe verticală și

orizontală. Elementele sunt trimise prin selectorii folosiți de jQuery (ex.:

$(‘#id_element’))

- durata de afișare – inițial alerta este vizibilă pentru 4 secunde. Parametrul permite

modificarea acestei valori

- animație – specifică dacă alerta este sau nu scoasă în evidență prin scroll către aceasta

- titlul alertelor – permite modificarea titlului pentru fiecare tip de alertă

Page 26: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

26

Secțiune Cod 8: Exemplu de apelare a sistemului de notificare

Partea funcțională este realizată în JavaScript fiind structurată în următoarele etape:

- identificarea tipului de răspuns primit și verificarea structurii acestuia conform

protocolului stabilit

- încadrarea în tipul de alertă corespunzător

- afișarea notificării

4.3.2.1 Identificarea tipului și verificarea structurii răspunsului

Tipul răspunsului poate fi text sau obiect. În funcție de tipul acestuia se validează structura

răspunsului (vezi Secțiune Cod 9), care trebuie să respecte următorul șablon:

- răspuns de tip text {COD_RASPUNS}{SEPARATOR}{MESAJ} unde:

o COD_RASPUNS poate fi: 0 – eroare, 1 – succes, 2 – informare

o SEPARATOR este cel ce delimitează codul răspunsului de mesajul acestuia.

Separatorul utilizat este „#|#”

o MESAJ reprezintă mesajului răspunsului

- răspuns de tip obiect: { status -> ... , msg -> ... , data -> ...} unde:

o status – proprietate cu valorile: false – eroare, true – succes, orice altceva în

afară de valorile false și true este considerat status de informare

o msg – proprietate ce reprezintă mesajul răspunsului

o data – proprietate ce oferă posibilitatea de a extinde răspunsul primit prin

adăugarea unor date utilizate de client

Page 27: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

27

Secțiune Cod 9: Identificarea răspunsului și validarea structurii

4.3.2.2 Încadrarea în tipul de alertă corespunzător

În funcție de tipul răspunsului se generează o alertă personalizată prin culoare și titlul

acesteia, luând în considerare parametrii de configurare în cazul în care aceștia sunt prezenți

(vezi Secțiune Cod 10):

Secțiune Cod 10: Încadrarea în tipul de alertă corespunzător

Page 28: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

28

4.3.2.3 Afișarea notificării

Pentru afișare se ia în considerare dimensiunea alertei și elementele de ancorare specificate

(vezi Secțiune Cod 11).

Secțiune Cod 11: Afișarea alertei

5. Manualul utilizatorului

5.1 Meniul aplicației

Meniul (vezi Manualul utilizatorului figura 1) este mereu accesibil, indiferent de pagina pe

care se află utilizatorul și prezintă două stări: cea când utilizatorul nu este autentificat în

aplicație și cea când este.

Prima stare, când utilizatorul nu este autentificat, prezintă următoarele opțiuni:

Manualul utilizatorului figura 1: Meniul aplicației când utilizatorul nu este autentificat

Page 29: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

29

- 1: pagina principală

- 2: opțiunea de înregistrare

- 3: opțiunea de autentificare

În urma accesării opțiunii de înregistrare, se va afișa o fereastră cu următoarele elemente:

Manualul utilizatorului figura 2: Fereastra de înregistrare

- 1 - 5: câmpurile necesare pentru a finaliza procesul de înregistrare

- 6: butonul de execuție a înregistrării

- 7: butonul de închidere a ferestrei de înregistrare

În urma accesării opțiunii de autentificare, se va afișa o fereastră cu următoarele elemente:

Page 30: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

30

Manualul utilizatorului figura 3: Fereastra de autentificare

- 1 și 2: câmpurile necesare pentru a finaliza procesul de autentificare

- 3: butonul de execuție a autentificării

- 4: butonul de închidere al ferestrei de autentificare

Cea de-a doua stare a meniului, când utilizatorul este autentificat, prezintă următoarele

opțiuni:

Manualul utilizatorului figura 4: Meniul aplicației

- 1: pagina principală

- 2: pagina de administrare a dicționarului

- 3: pagina de administrare a utilizatorilor

- 4: pagina ultimelor rulări efectuate

- 5: funcționalitatea de modificare a contului

- 6: funcționalitatea de ieșire din cont

Page 31: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

31

5.2 Pagina principală

Aici se vor efectua analizele de sentiment. În figura de mai jos sunt prezentate elementele

necesare efectuării unei analize:

Manualul utilizatorului figura 5: Pagina principală, elementele necesare analizării

- 1 – câmpul ce permite selectarea limbii

- 2 – câmpul unde se introduce textul

- 3 – butonul pentru execuția analizei

In urma analizei se va afișa rezultatul acesteia, prezentat în figura ce urmează:

Manualul utilizatorului figura 6: Pagina principală, afișarea rezultatului

Page 32: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

32

- 4 – sentimentul principal identificat

- 5 – reprezentarea sub formă de grafic a proporțiilor identificate pentru fiecare clasă

- 6 – listarea termenilor ce au dus la identificarea sentimentului precizat la punctul 4

5.3 Pagina de administrare a dicționarului

Pagina de administrare a dicționarului prezintă următoarele secțiuni:

Manualul utilizatorului figura 7: Pagina de administrare a dicționarului

- 1: secțiunea de adăugare a unui nou termen

- 2: secțiunea de filtrare a dicționarului afișat în pagină

- 3: secțiunea de afișare a dicționarului

Page 33: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

33

5.3.1 Secțiunea de adăugare a unui nou termen

Secțiunea de adăugare a unui nou termen prezintă următoarele elemente:

Manualul utilizatorului figura 8: Pagina de administrare, secțiunea de adăugare a unui termen

- 1: conținutul noului termen

- 2: tipul noului termen

- 3: clasa noului termen

- 4: limba noului termen

- 5: scorul noului termen

- 6: butonul de adăugare

5.3.2 Secțiunea de filtrare a dicționarului

Secțiunea de filtrare a dicționarului prezintă următoarele elemente:

Manualul utilizatorului figura 9: Pagina de administrare, secțiunea de filtrare a dicționarului

- 1: opțiunea de filtrare după conținut

- 2: opțiunea de filtrare după tipul termenilor

- 3: opțiunea de filtrare după clasa termenilor

- 4: opțiunea de filtrare după limba termenilor

- 5: opțiunea de filtrare după scorul termenilor

- 6: butonul de înlăturare a filtrelor aplicate

Page 34: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

34

5.3.3 Secțiunea de afișare a dicționarului

Secțiunea de afișare a dicționarului, pe lângă informațiile afișate, prezintă următoarele

opțiuni:

Manualul utilizatorului figura 10: Pagina de administrare, secțiunea de afișare a dicționarului

- 1: editarea unui termen

- 2: ștergerea unui termen

În urma accesării opțiunii de editare, afișarea pentru termenul respectiv se va modifica,

permițând schimbarea valorilor:

Manualul utilizatorului figura 11: Pagina de administrare, modificarea unui termen

- 1: câmpul ce permite modificarea conținutului

- 2: câmpul ce permite modificarea tipului

- 3: câmpul ce permite modificarea clasei

- 4: câmpul ce permite modificarea scorului

- 5: câmpul ce permite modificarea limbii

- 6: opțiunea de salvare a modificărilor efectuate

- 7: opțiunea de anularea a modificărilor efectuate

În urma accesării opțiunii de ștergere, va fi afișată o fereastră ce va cere confirmarea

acțiunii efectuate:

Page 35: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

35

Manualul utilizatorului figura 12: Pagina de administrare a dicționarului, confirmarea sțtergerii unui termen

- 1: buton de anulare a ștergerii

- 2: buton de confirmare a ștergerii

5.4 Pagina de administrare a utilizatorilor

Pagina de administrare, pe lângă listarea utilizatorilor și a informațiilor aferente despre

aceștia, prezintă următoarele elemente funcționale:

Manualul utilizatorului figura 13: Pagina de administrare a utilizatorilor

- 1: buton ce permite modificarea tipului utilizatorului

- 2: modificarea numărului de intrări afișate

Page 36: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

36

- 3: câmp ce permite filtrarea după numele utilizatorilor

- 4: câmp ce permite filtrarea după adresa de email a utilizatorilor

- 5: câmp ce permite filtrarea după username-ului

- 6: câmp ce permite filtrarea după tipul utilizatorilor

- 7: buton ce permite înlăturarea filtrelor

5.5 Pagina ultimelor rulări efectuate

Aici sunt listate ultimele rulări efectuate, împreună cu informațiile aferente. Pagina prezintă

următoarele opțiuni:

Manualul utilizatorului figura 14: Pagina ultimelor rulări efectuate

- 1: opțiunea de a vedea întregul text atunci cand acesta este prea lung

- 2: opțiunea de a rula din nou analiza de sentiment

- 3: modificarea numărului de intrări afișate

- 4: câmp ce permite filtrarea intrărilor afișate după conținut

- 5: câmp ce permite filtrarea intrărilor afișate după limbă

- 6: buton ce permite înlăturarea filtrelor

Page 37: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

37

5.6 Funcționalitatea de modificare a contului

În urma accesării opțiunii de modificare a contului, se va afișa o fereastră cu următoarele

elemente:

Manualul utilizatorului figura 15: Funcționalitatea de modificare a contului

Page 38: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

38

- 1: câmp ce permite modificarea numelui

- 2: câmp ce permite modificarea adresei de email

- 3: câmp ce permite modificarea username-ului

- 4 și 9: butoane ce închid fereastra de modificare

- 5: buton ce salvează infomațiile modificate în câmpurile 1, 2 și 3

- 6: câmp ce necesită parola curentă în cazul schimbării parolei

- 7: câmp ce necesită o nouă parolă în cazul schimbării parolei

- 8: câmp ce necesită confirmarea noii parole în cazul schimbării parolei

- 10: buton ce modifică parola conform câmpurilor 6, 7 și 8

Page 39: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

39

6. Concluzii

Având în vedere evoluția mediului online și amploarea pe care acesta a dezvoltat-o, pot

spune că „Sentiment Analyzer” este o aplicație cu potențial, care vine în ajutorul celor ce sunt

interesați de impactul emoțional transmis de diferite materiale (comentarii, recenzii, etc.).

Scopul acestei lucrări este de a prezenta aplicația și procedeele utilizate pentru realizarea

acesteia atât pe partea de client, cât și pe partea de server.

Prin elementele utilizate pentru aspect și funcționalitate am asigurat aplicației o perspectivă

„modernă”, ușor de utilizat care prezintă un flux cursiv și intuitiv.

Prin procedeele folosite pentru arhitectura analizatorului de sentiment, am permis

extinderea acestuia pentru orice limbă, prin adăugarea dicționarului aferent.

Pentru viitor se pot dezvolta unele îmbunătățiri precum:

- îmbunătățirea procedeelor utilizate pentru identificarea sentimentelor

- adăugarea de noi reguli în cadrul analizatorului

- un API ce permite reprezentarea datelor sub un format ușor accesibil (JSON, XML)

Page 40: Sentiment Analyzeralaiba/pub/absolvire/2017... · 2017. 2. 6. · - JavaScript: este un limbaj de programare utilizat cel mai adesea pentru introducerea unor funcționalități în

40

7. Bibliografie

1. https://www.cs.uic.edu/~liub/FBS/Sentiment-Analysis-tutorial-AAAI-2011.pdf

2. http://www.cs.uic.edu/~liub/FBS/opinion-lexicon-English.rar

3. https://en.wikipedia.org/wiki/Sentiment_analysis

4. https://en.wikipedia.org/wiki/Stemming

5. Jon Duckett. HTML and CSS: Design and Build Websites. John Wiley & Sons, Inc.,

2011.

6. Douglas Crockford. JavaScript: The Good Parts. O’Reilly Media, Inc., 2008.

7. Sabin Buraga. Programarea în Web 2.0. Polirom, 2007

8. https://en.wikipedia.org/wiki/MySQL