Măsurarea popularității rețelelor sociale a paginilor cu DEA în JAVA PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Măsurarea popularității social media a paginilor cu DEA în JAVA

În articolul precedent am discutat despre Analiza de acoperire a datelor tehnică și am văzut cum poate fi folosită ca algoritm eficient de clasare neparametrică. În această postare de blog vom dezvolta o implementare a Analizei învelișului de date în JAVA și o vom folosi pentru a evalua popularitatea în social media a paginilor web și a articolelor de pe web. Codul este open source (sub licență GPL v3) și îl puteți descărca gratuit de la Github.

Actualizare: Datumbox Machine Learning Framework este acum open-source și gratuit Descarca. Consultați pachetul com.datumbox.framework.algorithms.dea pentru a vedea implementarea analizei învelișului de date în Java.

Implementarea analizei învelișului de date în JAVA

Codul este scris în JAVA și poate fi descărcat direct de la Github. Este licențiat conform GPLv3, așa că nu ezitați să îl utilizați, să îl modificați și să îl redistribuiți liber.

Codul implementează Analiza de acoperire a datelor algoritm, folosește biblioteca lp_solve pentru a rezolva problemele de programare liniară și folosește datele extrase din Web SEO Analytics index pentru a construi o valoare compozită a popularității rețelelor sociale pentru paginile web, pe baza cotelor lor pe Facebook, Google Plus și Twitter. Toate părțile teoretice ale algoritmului sunt acoperite în articolul anterior, iar în codul sursă puteți găsi comentarii javadoc detaliate cu privire la implementare.

Mai jos oferim o descriere la nivel înalt a arhitecturii implementării:

1. biblioteca lp_solve 5.5

Pentru a rezolva diferitele probleme de programare liniară, folosim o bibliotecă open source numită lp_solve. Librația specială este scrisă în ANSI C și folosește un wrapper JAVA pentru a invoca metodele bibliotecii. Astfel, înainte de a rula codul, trebuie să instalați lp_solve pe sistemul dumneavoastră. Binarele bibliotecii sunt disponibile atât pentru Linux și Windows și puteți citi mai multe informații despre instalare pe lp_solve documentația.

Vă rugăm să vă asigurați că biblioteca respectivă este instalată pe sistemul dumneavoastră înainte de a încerca să rulați codul JAVA. Pentru orice problemă legată de instalarea și configurarea bibliotecii, consultați documentația lp_solve.

2. Clasa DataEnvelopmentAnalysis

Aceasta este clasa principală a implementării algoritmului DEA. Implementează o metodă publică numită estimateEfficiency() care preia o hartă a înregistrărilor și returnează scorurile DEA ale acestora.

3. Obiect DeaRecord

DeaRecord este un Obiect special care stochează datele înregistrării noastre. Deoarece DEA necesită separarea intrării și ieșirii, obiectul DeaRecord stochează datele noastre separat, într-un mod în care DEA le poate gestiona.

4. Clasa SocialMediaPopularity

SocialMediaPopularity este o aplicație care utilizează DEA pentru a evalua popularitatea unei pagini pe rețelele de social media pe baza like-urilor Facebook, Google +1 și Tweets. Implementează două metode protejate calculatePopularity() și estimatePercentiles() împreună cu două metode publice loadFile() și getPopularity().

CalculatePopularity() folosește implementarea DEA pentru a estima scorurile paginilor pe baza numărului lor de rețele sociale. Metoda estimatePercentiles() obține scorurile DEA și le convertește în percentile. În general, percentilele sunt mai ușor de explicat decât scorurile DEA; astfel, când spunem că scorul de popularitate al unei pagini este de 70% înseamnă că pagina respectivă este mai populară decât 70% dintre pagini.

Pentru a putea estima popularitatea unei anumite pagini, trebuie să avem un set de date cu numărul de rețele sociale ale altor pagini. Acest lucru are sens, deoarece pentru a prezice ce pagină este populară și care nu, trebuie să o poți compara cu alte pagini de pe web. Pentru a face acest lucru, folosim un mic eșantion anonimizat din indexul Web SEO Analytics furnizat în format txt. Vă puteți construi propria bază de date extragând numărătoarea rețelelor sociale din mai multe pagini de pe web.

Metoda loadFile() este folosită pentru a încărca statisticile menționate mai sus pe DEA, iar metoda getPopularity() este o metodă ușor de utilizat care obține aprecierile Facebook, +1-urile Google și numărul de Tweeturi ale unei pagini și evaluează popularitatea acesteia pe rețelele sociale. .

Utilizarea implementării JAVA pentru analiza învelișului de date

În clasa DataEnvelopmentAnalysisExample, ofer 2 exemple diferite de utilizare a codului.

Primul exemplu folosește în mod direct metoda DEA pentru a evalua eficiența unităților organizaționale pe baza rezultatelor lor (EMISE, PRINCĂRI, CERERI) și a intrărilor (STOCURI, SALARII). Acest exemplu a fost luat dintr-un articol din DEAzone.com.

        Map<String, DeaRecord> records = new LinkedHashMap<>();
        
        records.put("Depot1", new DeaRecord(new double[]{40.0,55.0,30.0}, new double[]{3.0,5.0}));
        //...adding more records here...
        
        DataEnvelopmentAnalysis dea = new DataEnvelopmentAnalysis();
        Map<String, Double> results = dea.estimateEfficiency(records);
        System.out.println((new TreeMap<>(results)).toString());

Al doilea exemplu folosește aplicația noastră Social Media Popularity pentru a evalua popularitatea unei pagini folosind date din Social Media, cum ar fi Facebook Likes, Google +1s și Tweets. Toate rețelele sociale sunt marcate ca ieșire și îi transmitem DEA un vector de intrare gol.

        SocialMediaPopularity rank = new SocialMediaPopularity();
        rank.loadFile(DataEnvelopmentAnalysisExample.class.getResource("/datasets/socialcounts.txt"));
        Double popularity = rank.getPopularity(135, 337, 9079); //Facebook likes, Google +1s, Tweets
        System.out.println("Page Social Media Popularity: "+popularity.toString());

Extensii necesare

Codul furnizat este doar un exemplu al modului în care DEA poate fi utilizat ca algoritm de clasare. Iată câteva extinderi care trebuie făcute pentru a îmbunătăți implementarea:

1. Accelerarea implementării

Implementarea DEA particulară evaluează scorurile DEA ale tuturor înregistrărilor din baza de date. Acest lucru face ca implementarea să fie lentă, deoarece avem nevoie să rezolvăm tot atâtea probleme de programare liniară câte numărul de înregistrări din baza de date. Dacă nu este necesar să se calculeze scorul tuturor înregistrărilor, atunci putem accelera semnificativ execuția. Astfel, o mică extindere a algoritmului ne poate oferi un control mai bun asupra înregistrărilor care trebuie rezolvate și care ar trebui folosite doar ca constrângeri.

2. Extinderea bazei de date Social Media Counts

Baza de date furnizată de Social Media Counts constă din 1111 mostre din indexul Web SEO Analytics. Pentru a putea estima un scor de popularitate mai precis, este necesar un eșantion mai mare. Vă puteți crea propria bază de date prin estimarea numărului de rețele sociale din mai multe pagini de pe web.

3. Adăugarea mai multor rețele de social media

Implementarea folosește Like-urile Facebook, +1-urile Google și numărul de Tweeturi pentru a evalua popularitatea unui articol. Cu toate acestea, valorile din alte rețele sociale pot fi luate în considerare cu ușurință. Tot ce trebuie să faceți este să construiți o bază de date cu numărătoarea rețelelor sociale din rețelele care vă interesează și să extindeți clasa SocialMediaPopularity pentru a le gestiona în consecință.

Comentarii finale privind implementarea

Pentru a putea extinde implementarea, trebuie să înțelegeți bine cum Analiza de acoperire a datelor lucrări. Acest lucru este tratat în articolul anterior, așa că vă rugăm să vă asigurați că citiți tutorialul înainte de a trece la orice modificări. Mai mult, pentru a utiliza codul JAVA trebuie să aveți instalată în sistemul dumneavoastră biblioteca lp_solve (vezi mai sus).

Dacă utilizați implementarea într-un proiect interesant dă-ne o linie și vă vom prezenta proiectul pe blogul nostru. De asemenea, dacă vă place articolul, vă rugăm să luați un moment și să îl distribuiți pe Twitter sau Facebook.

Timestamp-ul:

Mai mult de la Datumbox