Așa cum s-a văzut în capitolele de început ale lucrării, creșterea volumului de date în rețeaua Internet, a condus la studierea și implicit dezvoltarea unor sisteme de recomandare, menite să ajute utilizatorii în găsirea articolelor relevante pentru aceștia. Astfel pentru preîntâmpinarea acestei probleme a fost realizat un sistem de recomandare automat, care clasifică filmele și serialele ca fiind articole relevante sau irelevante pentru utilizatorul curent. Rolul acestui sistem, precum am menționat anterior, este de a ajuta utilizatorii în găsirea articolelor relevante pentru aceștia, reducând astfel timpul necesar căutării.
Sistemul de recomandare are la bază un algoritm bazat pe cel mai apropiat vecin (User -based Nearest Neighbors Algorithm) și utilizează un sistem alcătuit din agenți inteligenți care ajută la calculul recomandărilor, dar și la preluarea datelor necesare.
Acest capitol descrie contextul problemei de la care s-a pornit dezvoltarea aplicației, alături de o analiză a acesteia. Aplicația va fi descrisă în mod sistematic, prezentând atât design-ul cât și implementarea oferită de combinarea mai multor instrumente.
Precum am menționat anterior, scopul acestei aplicații este de a ajuta utilizatorii în depistarea filmelor sau serialelor, care ar putea crea un interes de vizionare pentru aceștia. Vom formula în continuare o posibilă cerință a problemei:
Să se creeze o aplicație care să preia informații despre filme și seriale și mai apoi să recomande unele dintre aceste articole bazându-se pe rating-urile oferite de utilizatorul curent altor filme, iar în caz de inexistență a acestor rating-uri, se vor recomanda cele mai vizionate articole. Pentru preluarea filmelor și serialelor utilizatorul trebuie sa completeze o cerere în acest sens, mai apoi putând să vizualizeze, cat și sa voteze articolele cerute. Aplicația va putea fi folosită de orice tip de utilizatori.
Utilizatorii neautentificați vor putea să vizioneze filmele și serialele existente, cât și să plaseze cereri pentru preluarea unor noi articole. Pentru a utiliza funcționalitățile care permit votarea articolelor și cererea recomandărilor, utilizatorii trebuie să se înregistreze în sistem și în prealabil să se autentifice. De asemenea utilizatorii pot folosi o bară de căutare și niște filtre speciale pentru a găsi anumite articole. Pentru solicitarea recomandărilor utilizatorul trebuie să completeze mai multe câmpuri referitoare la algoritmul utilizat pentru crearea indicilor de corelare dintre acesta și restul utilizatorilor (în această situație for fi două opțiuni: Pearson Correlation și Euclidean Distance), numărul recomandărilor care dorește să le primească, numărul corelărilor care dorește să fie utilizate în generarea recomandărilor (în acest caz -1 va reprezenta valoarea maximă), iar utimul câmp reprezintă valoarea scorului de corelare care vor fi incluse în recomandări (fiecare scor de corelare poate să oscileze între -1 și 1; -1 semnifică faptul că utilizatorii nu sunt deloc similari, iar 1 indică faptul că preferințele utilizatorilor sunt identice).
4.2 Abordarea propusă. Arhitectura sistemului și rolul agenților
În acest subcapitol vom descrie abordarea propusă spre dezvoltarea unei aplicații care să respecte cerințele descrise anterior, arhitectura acesteia cât și anumite avantaje în acest sens.
Platforma sistemului de recomandare propusă în această lucrare MovieRightAway(MRA), este implementată în Java, având utilitate generală, folosirea sa fiind posibilă prin utilizarea unor servicii web expuse de aceasta, care permit accesul de pe orice platformă sau tehnologie. În acest sens o aplicație web implementată în ASP .Net a fost dezvoltată.
Platforma de recomandare este concepută cu scopul de a oferi un motor de recomandare personalizat pentru fiecare utilizator, cât și posibilitatea de a prelua și întreține articolele necesare recomandărilor. Deși platforma a fost dezvoltată strict pentru preluarea și întreținerea filmelor și ale serialelor, aceasta poate fi extinsă spre orice tip de articol, recomandările fiind generate doar pe baza unor scoruri oferite de utilizator anumitor articole. Funcționarea sistemului de recomandare presupune existența unor interacțiuni între utilizatori și produse exprimate sub formă de preferințe, în particular scoruri. În funcție de aceste preferințe sistemul poate oferi N recomandări pentru un utilizator particular sau poate construi lista predicțiilor pentru acesta, adică predicții generate de sistemul de recomandare pentru scorurile produselor despre care utilizatorul nu și-a exprimat încă nicio preferință. De asemenea este foarte importantă interacțiunea utilizatorului cu sistemul în ceea ce privește articolele existente în sistem, deoarece sistemul pune la dispoziția utilizatorilor o funcționalitate prin care aceștia au posibilitatea de a plasa cereri acestuia cu scopul de a prelua filme sau seriale care nu există în baza de date a aplicației. După ce aceste articole vor fi preluate sistemul se va ocupa personal de întreținerea acestora.
Deoarece sistemul este unul distribuit și necesită decizii flexibile și autonome, a fost identificat ca un sistem multi-agent, prin urmare este logic să regăsim agenții ca cel mai înalt nivel de abstractizare în cadrul sistemului. Următoarele clase de agenți s-au distins la nivelul sistemului de recomandare:
-
Utilizatorii (agenții umani)
-
Agentul personal al utilizatorului (agenți de interfață software, notați cu PA – Personal Assistant)
-
Agentul coordonator
-
Agentul web
-
Agentul manager
-
Agentul recomandărilor
-
Agentul GateWay
Arhitectura platformei de recomandare pe care o propunem pentru un sistem generic decizional bazat pe agenți este prezentată în Figura 4.1.
GATEWAY AGENT
Figura 4.1 Arhitectura sistemului multi-agent
Vom prezenta în cele ce urmează rolul fiecărui agent din acest sistem.
Agentul personal al utilizatorului (User Personal Agent). Rolul acestui agent este de a intercepta fiecare solicitare plasată de utilizatorul căruia îi este asignat, fiind într-o stare de inactivitate până în momentul autentificării utilizatorului. Toate cererile pe care acesta le primește în urma interacțiunii cu utilizatorul sunt procesate și, dacă aceste cereri sunt adresate sistemului de recomandare sau sistemului de preluare a datelor, atunci ele sunt trimise spre coordonator. Deși sistemul nu implementează un algoritm de învățare a preferințelor utilizatorului, acest agent joacă un rol foarte important și poate oferi spre viitor posibilitatea de implementare a unei astfel de funcționalități.
Agentul coordonator (Coordinator Agent). Acest agent are rolul de a coordona toate cererile sistemului și de a plasa însăși cereri diferiților agenți aflați în sistem. Faptul că fiecare agent activ participant în sistem își înregistrează serviciile oferite de acesta, una dintre sarcinile coordonatorului este de a căuta aceste servicii necesare si de a trimite cereri. Este demn de menționat faptul că fiecare agent din acest sistem implementează o coadă cu priorități a solicitărilor, astfel fiecare solicitare este plasată în această coada, iar mai apoi agentul deținător procesează aceste cereri în funcție de prioritatea acestora (de exemplu: dacă coordonatorul primește două cereri de la agenții personali una marcată cu critical, iar cealaltă cu prioritate low, cea cu prioritate mai mare, adică critical, va fi tratată prima). Agentul coordonator implementează de asemenea un comportament de trimitere a solicitărilor către agenții răspunzători, așteptând mesajul de confirmare cererea fiind procesată cu succes, sau contrar. În cazul în care cererea nu a fost procesată cu succes de către agentul prestator de servicii, coordonatorul se ocupă si de partea de nereușită, trimițând încă o dată solicitarea, acest proces repetându-se de patru ori. Odată ce mesajul este primit și confirmarea a fost cu succes, acest agent răspunde cererii agentului personal, dacă cererea a fost primită de la acesta. Pe lângă faptul că rezolvă cererile primite de la agentul personal, coordonatorul se ocupă și de întreținerea articolelor din baza de date, aceasta însemnând că, periodic se verifică data la care articolul a fost salvat, iar dacă această dată marchează o săptămână atunci o cerere pentru actualizare este plasată agentului manager.
Agentul web (Web Movie Agent/Web Tv Series Agent). Agentul web are rolul de a procesa cererile primite de la coordonator în sensul extragerii de noi informații de pe rețeaua Internet. În momentul dezvoltării aplicației, funcționalitatea acestui agent a fost special implementată pentru preluarea de filme sau seriale, totuși, cu ajutorul implementării unor clase generale și a unei interfețe (GeneralRetriever și IRetriever) se pot implementa noi retrievere pentru preluarea diferitor alte articole. Acest agent utilizează un mecanism de preluare a datelor de pe site-ul TheMovieDb, aceste date fiind salvate într-un context. Dacă vreo operație a eșuat în timpul preluării datelor, la fel ca și agentul coordonator acesta implementează un mecanism de “nereușită”. În caz de succes, agentul trimite contextul cu informațiile despre film sau serial la agentul manager care se va ocupa de salvarea acestuia în baza de date.
Agentul manager (Manager Agent). Acest agent a fost special creat pentru a se ocupa de toate operațiile ce țin de accesarea bazei de date. Unul dintre motivele principale ale acestei decizii a fost și unul dintre bine cunoscutele principii ale programării orientate pe obiect, principiul separării responsabilităților, dar cu atât mai mult decizia a căzut și în privința faptului că având un sistem multi-agent (agenții care practic sunt văzuți ca fiind thread-uri), nu a fost dorită accesarea bazei de date într-un mod concurent. Scopul acestui agent este unul simplu, primește cereri pentru salvarea unui context primit de la agentul web, cereri pentru a actualiza informațiile (informații care de asemenea sunt recepționate de la agentul web) sau de a verifica existența unui articol, pentru a omite duplicatele.
Agentul recomandărilor (Recommender Agent). Recomandările sunt principalul motiv pentru dezvoltarea acestei aplicații, în consecintă prezența unui astfel nu a putut fi omisă. Cu toate că, în scopul performanțelor și a experimentelor, algoritmii de recomandare au fost implementați de partea bazei de date (algoritmi implementați în SQL), acest agent acceseasză este o piesă importantă în structura sistemului. Se poate observa că acest agent comunică direct cu baza de date rezervată utilizatorilor, unde se află toate filmele vizionate de utilizatori și filmele pentru care aceștia au oferit un vot. În acest sens pot să existe filme care au fost vizionate dar nu au fost votate, de aici putem deduce una dintre atribuțile acestui agent, aceea de a se asigura că recomandările sunt valide. Acesta la rândul său primește cereri de la agentul coordinator cu informații despre utilizator, numărul recomandărilor dorite și alte anumite setări în ceea ce privește calculul recomandărilor.
Agentul GateWay (GateWay Agent). Acest agent joacă cel mai important rol în sistemul descris anterior. Principala sa sarcină este de a face posibilă comunicare cu un sistem exterior. Sistemul pune la dispoziția dezvoltatorilor un web service prin care este posibilă comunicarea cu platforma agenților. Deoarece agenții au propriu lor “ecosistem”, interacțiunea directă cu aceștia este imposibilă, de aceea platforma JADE pune la dispoziție acest agent. Cu ajutorul unui sistem de tip BackBoard, când o solicitare sosește în web service, se creează un nou obiect de tip BlackBoard, care ulterior este atașat agentului GateWay. Acest agent trimite cererea agentului personal sau coordonatorului. Îm momentul în care cererea a fost rezolvată cu succes se eliberează obiectul creat și se răspunde solicitării primite de la client.
Am menționat anterior de existența unei aplicații web, dezvoltată cu scopul de a demonstra funcționalitățile sistemului multi-agent și cu atât mai mult de a demonstra interoperabilitate celor două platforme și paradigme de programare, pe de o parte comunicarea Java (server/prestator de servicii) cu .Net (client/consumator de servicii), iar pe de altă parte imbinarea paradigmei programării orientate pe obiect cu paradigma programării orientată pe agent. Această aplicație este direct conectată la baza de date cu infomații despre utilizatori cât și la informațiile despre filmele sau serialele preluate de sistem. De asemena aceasta pune la dispoziția utilizatorului funcționalități precum: înregistrarea, autentificarea, vizualizarea filmelor și a serialelor precum și filtrarea rezultatelor, plasarea cererilor pentru recomandări și plasarea cererilor pentru preluarea de noi articole.
Arhitectura aplicației web este bazată pe un bine cunoscut șablon de proiectare, Model-View-Controller (MVC), șablon care este des întâlnit mai ales cu precondiție în partea dezvoltării aplicațiilor web. Model - Această parte a controlatorului manipulează operațiunile logice și de utilizare de informație (trimisă dinainte de către rangul său superior) pentru a rezulta de o formă ușor de înțeles. View - Acestui membru al familiei îi corespunde reprezentarea grafică, sau mai bine zis, exprimarea ultimei forme a datelor: interfața grafică ce interacționează cu utilizatorul final. Rolul său este de a evidenția informația obținută până ce ea ajunge la controller. Controller - Cu acest element putem controla accesul la aplicația noastră. Pot fi fișiere, scripts sau programe, in general orice tip de informație permisă de interfață. În acest fel putem diversifica conținutul nostru de o formă dinamică și statică, în același timp.
Dostları ilə paylaş: |