SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
Folosirea instumentului Zemanta ˆ
                                           ın
                recomandarea de continut
                                    ¸

                 Elena-Oana T˘b˘ranu ¸i Anna-Maria Metzak
                             a a     s

                            Facultatea de Informatic˘
                                                    a
                      Universitatea “Alexandru I. Cuza” Ia¸i
                                                          s
                  {elena.tabaranu,anna.metzak}@info.uaic.ro



      Abstract. Instrumentul Zemanta poate fi folosit ˆ recomandarea de
                                                           ın
      continut relevant utilizatorului ˆ cadrul unor aplicatii Web sociale (e.g.,
          ¸                            ın                  ¸
      blog-uri). Platforma este disponibil˘ sub form˘ de extensie pentru ma-
                                           a          a
      joritatea navigatoarelor web.

      Key words: Zemanta, extensie Firefox, recomandare de continut, web
                                                              ¸
      social, Faviki, Common Tag, Zemify


1   Introducere
Zemanta este o platform˘ ce ajut˘ utilizatorul s˘ produc˘ continut on-line. Orice
                         a       a              a        a     ¸
text creat de utilizator (o postare pe blog, un articol sau o pagina web) este
citit direct de c˘tre Zemanta pentru identificarea contextul acestuia. Zemanta
                 a
caut˘ apoi pe web cele mai relevante imagini, link-uri, cuvinte cheie sau texte ¸i
     a                                                                          s
ofer˘ instantaneu aceste rezultate utilizatorului pentru a-i ˆ
     a                                                       ımbogati continutul.
                                                                    ¸     ¸
Platforma este disponibil˘ sub form˘ de extensie pentru majoritatea naviga-
                           a          a
toarelor web (Firefox, Internet Explorer), dar ¸i pentru platforme de publicare
                                                s
de continut.
         ¸
    Cˆteva recomand˘ri pentru cei ce folosesc Zemanta:
       a              a
 – textul introdus de utilizator trebuie s˘ contin˘ propozitii complete ¸i corecte
                                          a    ¸ a           ¸           s
   atˆt din punct de vedere gramatical, cˆt ¸i ortografic;
     a                                      a s
 – Zemanta d˘ rezultate mai bune atunci cand utilizatorul folose¸te un limbaj
               a                                                      s
   natural;
 – se recomand˘ scrierea a cel putin un paragraf ˆ
                 a                 ¸                ınainte de a lua ˆ considerare
                                                                     ın
   rezultatul ˆ
              ıntors de c˘tre Zemanta;
                         a
 – se recomand˘ ca ˆ
                 a    ıntr-un articol s˘ se fac˘ referire la un num˘r limitat
                                        a        a                      a
   de subiecte, pentru ca rezultatele ˆ ıntoarse s˘ fie cˆt mai relevante pentru
                                                   a      a
   continutul articolului respectiv.
       ¸


2   API-ul Zemanta
Instrumentul Zemanta pune la dispozitie un API ce poate fi folosit de orice uti-
                                     ¸
lizator ˆ situl s˘u web sau pentru construirea propriului sistem de gestiune a
        ın       a
2      Folosirea instumentului Zemanta ˆ recomandarea de continut
                                       ın                   ¸




                        Fig. 1. Schema API-ului Zemanta.




continutului. Serviciul web Zemanda este un serviciu web clasic baza pe pro-
   ¸
tocolul standard HTTP ¸i metoda POST. Astfel, clientul trimite o cerere prin
                            s
portul 80 c˘tre api.zemanta.com ¸i prime¸te r˘spunsul encodat ˆ format XML,
            a                        s      s a                    ın
JSON, wnjson ¸i RDF/XML. Clientul este identificat de o cheie API (¸ir de ca-
                 s                                                       s
ractere care identific˘ ˆ mod unic instante specifice ale aplicatiei ce folosesc
                        a ın                 ¸                       ¸
serviciul). De exemplu, extensia Firefox stocheaz˘ cheia API ˆ configuratia sa
                                                   a             ın          ¸
permanent˘ ¸i folose¸te aceast˘ cheie API la fiecare cerere c˘tre serviciul Ze-
            a s         s        a                               a
manta, indiferent de platforma de blog pe care o viziteaz˘ utilizatorul (acela¸i
                                                             a                  s
lucru este valabil ¸i pentru extensia Internet Explorer). Se limiteaz˘ num˘rul de
                   s                                                   a   a
cereri pe zi, precum ¸i num˘rul de cereri pe secund˘, ˆ functie de tipul de cont
                       s      a                      a ın      ¸
pe care utilizatorul ˆ detine. Contul implicit pentru un dezvoltator permite 1000
                     ıl ¸
mesaje pe zi ¸i 1 post pe secund˘. Dac˘ aceste limite sunt dep˘¸ite, utilizatorul
               s                   a     a                        as
va primi un mesaj de eroare adecvat.

    Exist˘ dou˘ moduri prin care se pot obtine chei API: unul vizeaz˘ dez-
         a      a                                 ¸                         a
voltatorii de aplicatii, iar celalalt aplicatiile ce ata¸eaz˘ automat chei utiliza-
                    ¸                       ¸           s a
torilor lor. Dezvoltatorii ¸i testerii primesc initial doar o cheie. Dezvoltator
                            s                        ¸
trebuie s˘ se ˆ
          a    ınregistreze ˆ cadrul portalului Zemanta destinat lor la adresa
                             ın
http://developer.zemanta.com. Platforma ofer˘ o metod˘ de asignare de chei
                                                      a        a
separate pentru fiecare utilizator ˆ cazul ˆ care Zemanta este integrat˘ cu sis-
                                    ın        ın                          a
teme de gestiune a continutului sau alte platforme asem˘n˘toare.
                         ¸                                  a a

    API-ul are o documentatie oficial˘ ˆ cadrul portalului destinat dezvolta-
                              ¸        a ın
torilor de aplicatii ¸i poate fi accesat la adresa http://developer.zemanta.
                 ¸ s
com-docs.
Folosirea instumentului Zemanta ˆ recomandarea de continut
                                                 ın                   ¸                3

3     Exemple de aplicatii construite folosind Zemanta
                       ¸
3.1     Editorul WYSIWYG Zemanta
Produsul de baz˘ oferit de Zemanta este editorul WYSIWYG. Acesta este disponi-
                a
bil sub form˘ de extensii sau plugin-uri pentru platforme precum: Gmail, Yahoo!
            a
Mail, ScribeFire, Blogger, Wordpress, Reblog, Drupal, Tumblr, Ning, Myspace,
Facebook, Last.fm, etc.




Fig. 2. Wordpress: textul unei post˘ri ˆ limba englez˘ ˆ
                                   a ın              a ımbog˘¸it folosind Zemanta.
                                                            at




3.2     Etichetare “social˘” cu Faviki
                          a
Faviki este un instrument ce permite etichetarea “social˘”1 a paginilor web
                                                             a
folosind termeni de pe DBpedia2 . Astfel, utilizatorii pot folosi drept tag-uri
acela¸i set de termeni extras din cea mai mare baz˘ de cuno¸tinte din lume. Da-
      s                                            a          s ¸
torit˘ DBpedia informatia structurat˘ de pe Wikipedia este reprezentat˘ folosind
     a                  ¸             a                                  a
un model de date flexibil, iar tag-urile propuse de Zemanta vor fi referinte la ¸
obiecte catalogate ˆ mod automat. Tag-urile obi¸nuite nu au un ˆ ¸eles bine
                    ın                              s                  ınt
definit, de aceea identificarea sensului unei tag nu este u¸oar˘. De exemplu,
                                                              s a
“java” poate face referire atˆt la insula din Indonezia, la specialitatea de cafea,
                             a
dar ¸i la limbajul de programare.
     s
    Faviki permite etichetarea multilingv˘: sunt sugerate concepte disponibile pe
                                          a
Dbpedia ˆ 14 limbi.
          ın
1
    Termen tradus ˆ limba englez˘ prin “social bookmarking”.
                     ın            a
2
    Proiect ce ˆsi propune s˘ extrag˘ informatii structurate din baza de cuno¸tinte con-
                ı¸          a       a          ¸                              s
    struit˘ prin proiectul Wikipedia. Datele sunt ˆ format RDF ¸i pot fi accesate folosind
          a                                       ın            s
    limbajul de interogare SPARQL.
4       Folosirea instumentului Zemanta ˆ recomandarea de continut
                                        ın                   ¸




    Fig. 3. Gmail: textul unui email ˆ limba englez˘ ˆ
                                     ın            a ımbog˘¸it folosind Zemanta.
                                                          at




    Fig. 4. Gmail: textul unui email ˆ limba romˆn˘ ˆ
                                     ın         a a ımbog˘¸it folosind Zemanta.
                                                         at
Folosirea instumentului Zemanta ˆ recomandarea de continut
                                                 ın                   ¸                 5

    Ultima versiune ˆsi propune s˘ u¸ureze folosirea formatului Common Tag3 ¸i
                    ı¸           a s                                           s
s˘ dep˘¸easc˘ limit˘rile Wikipedia cu privire la vocabularul controlat de tag-uri
 a     as   a      a
semantice. Functionalit˘¸i importante oferite de ultima versiune:
                ¸       at

 – alegerea unui nume personalizat pentru tag-uri: utilizatorul ajut˘ Faviki s˘
                                                                      a         a
   ˆ ¸e tag-uri noi prin dezambiguizarea termenilor necunoscuti;
   ınvet                                                          ¸
 – tag-urile sunt asocieri subiective ˆ ıntre concepte definite ˆ mod unic, iar
                                                               ın
   ultima versiune permite folosirea motorul de c˘utare Google pentru a g˘si
                                                    a                         a
   URL-uri ce reprezint˘ aceste concepte;
                          a
 – posibilitatea de a utiliza tehnologia OpenID prin intermediul serviciului RPX
   ce reune¸te diferite implementari OpenID oferite de Google, Yahoo, AOL sau
            s
   Microsoft.




             Fig. 5. Exemplu de etichetare a textului unei post˘ri cu Faviki
                                                               a



   API-ul Faviki permite gestionarea u¸oar˘ a tag-urilor ˆ cadrul aplicatiilor
                                      s a                ın             ¸
web cu urm˘toarele observatii:
          a               ¸

 – limita superioar˘ pentru serviciile expuse de Faviki este de 1000 de cereri pe
                   a
   zi;
 – tag-urile sunt delimitate de caracterul ’;’, iar cele formate din mai multe
   cuvinte pot folosi ˆ loc de spatiu atˆt ’%20’ cˆt ¸i ’ ’;
                      ın          ¸      a         a s
3
    Format deschis de tagging ce ˆsi propune s˘ faciliteze interconectarea ¸i descoperirea
                                  ı¸            a                          s
    de nou continut. Spre deosebire de tag-urile obi¸nuite, cele ˆ format Common Tag
                ¸                                    s            ın
    sunt referinte la concepte bine defnite, cu metadate ata¸ate ¸i propriul URL. Siturile
                ¸                                            s   s
    ce folosesc Common Tag au avantaje precum: ˆ       ımbog˘¸irea continutului cu text,
                                                              at        ¸
    imagini ¸i extensii sau promovarea multi-platform˘.
             s                                          a
6         Folosirea instumentului Zemanta ˆ recomandarea de continut
                                          ın                   ¸

    – termenii ˆ limba englez˘ pot fi amestecati cu termeni ˆ alte limbi. De exem-
                ın             a              ¸              ın
      plu, dac˘ limba este “de” (german˘), atunci etichetele “Nachrichten” (“¸tiri”
               a                         a                                   s
      ˆ limba german˘) ¸i “Semantic Web” (web semantic ˆ limba englez˘) pot
      ın               a s                                    ın            a
      fi folosite ˆ
                 ımpreun˘;
                         a
    – textul tag-urilor trebuie encodat.


3.3     Comanda Zemify pentru Ubiquity

Ubiquity este o extensie pentru Firefox ce permite utilizatorilor s˘ dea comenzi
                                                                      a
navigatorului, introducˆnd cuvinte ˆ
                         a           ıntr-un cˆmp special. Comenzile sunt scur-
                                                a
t˘turi pentru actiuni efectuate ˆ mod constant de utilizator pe Web. Ele pot
  a              ¸                ın
elimina sarcini repetitive obtinˆnd astfel acelea¸i rezultate ˆ
                             ¸ a                  s           ıntr-un timp mult mai
scurt. Interesant pentru Ubiquity este faptul c˘ oricine poate scrie o comand˘
                                                   a                              a
pe care apoi s˘ o partajeze cu restul lumii, ˆ acela¸i mod ˆ care Web-ul ˆ sine
              a                              ın       s       ın             ın
permite partajarea de informatii.
                                ¸
    Ubiquity permite utilizatorilor s˘ insereze h˘rti, s˘ traduc˘ buc˘¸i din con-
                                     a              a¸ a           a    at
¸inutul unei pagini, s˘ evidentieze text sau multe alte functionalit˘¸i. Printre
t                      a        ¸                                ¸       at
acestea se num˘r˘ ¸i integrarea cu API-ul Zemanta. Comanda Zemify permite
                aas
interogarea dinamic˘ a serviciului Zemanta pentru o anumit˘ secvent˘ de text
                     a                                            a       ¸a
selectat˘ de c˘tre utilizator.
        a     a




       Fig. 6. Exemplu pentru comanda Zemify: integrarea Zemanta cu Ubiquity




3.4     Researchr: del.icio.us ¸i Zemanta
                               s

Researchr este un prototip ce interogheaz˘ del.icio.us cu privire la subiecte de pe
                                         a
Wikipedia, dar ¸i analizeaz˘ continutul paginilor web folosind Zemanta pentru a
               s           a     ¸
Folosirea instumentului Zemanta ˆ recomandarea de continut
                                                 ın                   ¸          7

g˘si articole, imagini ¸i link-uri asem˘n˘toare. Rezultatele g˘site ˆ mod automat
 a                     s               a a                    a     ın
de Zemanta sunt comparate cu etichetele g˘site pe del.icio.us.
                                              a

3.5     Linked Galaxy
Linked Galaxy este un instrument ce folose¸te entit˘¸ile semantice identificate
                                              s       at
de Zemanta ˆ textul dat ¸i le intersecteaz˘ cu DBpedia ¸i Freebase urm˘rind
             ın             s                a               s                a
descoperirea de leg˘turi ascunse ˆ
                   a             ıntre acestea. Rezultatele sunt oferite sub forma
unui graf.


4      Zemanta API ˆ practic˘
                   ın       a
Programatorii au nevoie de cont ˆ cadrul portalului pentru a-¸i genera propria
                                  ın                          s
cheie API necesar˘ atunci cˆnd se face o cerere c˘tre serviciile expuse de Ze-
                   a         a                    a
manta. Interog˘rile folosesc protocolul HTTP ¸i metoda POST, iar end point-ul
                a                            s
unei cereri c˘tre API este http://api.zemanta.com/services/rest/0.0.
             a
   Metodele expuse de API-ul Zemanta sunt:
 – zemanta.suggest - permite interogarea Zemanta cu privire la metadate con-
   textuale ale unui text dat, iar r˘spunsul are patru componente principale:
                                      a
   articole, cuvinte cheie, link-uri ˆ interiorul textului ¸i categorii de compo-
                                     ın                    s
   nente optionale;
             ¸
 – zemanta.suggest_markup - permite interogarea Zemanta cu privire la meta-
   date contextuale ale unui text dat, iar comparativ cu zemanta.suggest,
   aceast˘ metod˘ returneaz˘ doar link-uri c˘tre entit˘¸i semantice;
          a       a            a               a         at
 – zemanta.preferences - permite doar interogarea Zemanta cu privire la
   preferintele unui anumit utilizator, dar nu ¸i schimbarea acestora.
            ¸                                   s
      Parametrii trimi¸i API-ului la efectuarea unei cereri:
                      s
 – method - numele metodei;
 – api_key - cheia API;
 – text - textul utilizatorului (text simplu sau HTML) - este obligatoriu doar
   pentru metodele de tip “suggest”;
 – format - formatul ˆ care vor fi ˆ
                        ın              ıntoarse datele (xml, json, wnjson sau
   rdfxml);
 – optional pot fi trimi¸i ¸i alti parametri (pentru metodele de tip “suggest”) :
                        s s ¸
   return_rdf_links, return_categories, return_images, emphasis,
   personal_scope, markup_limit, images_limit,
   articles_limit, articles_max_age_days, image_max_w, image_max_h.
      Structura unui r˘spuns pentru o metod˘ de tip “suggest”:
                      a                    a
 – status - starea r˘spunsului poate fi ok sau fail;
                     a
 – rid - id unic al cererii;
 – articles - o list˘ de obiecte: url (URL-ul articolului), title (titlul articolu-
                    a
   lui), published_datetime (data cˆnd aricolul a fost publicat), confidence
                                       a
   (un num˘r subunitar ce reprerint˘ gradele de ˆ
            a                         a            ıncredere);
8           Folosirea instumentului Zemanta ˆ recomandarea de continut
                                            ın                   ¸




                    Fig. 7. Exemplu de interogare a API-ului Zemanta.


    – keywords - o list˘ de obiecte ce contin urm˘toarele informatii: name (cuvˆn-
                         a                 ¸      a                 ¸            a
      tul cheie, poate contine spatii, dar nu poate contine virgule), confidence
                             ¸     ¸                       ¸
      (un num˘r subunitar ce reprezint˘ gradele de ˆ
                a                        a              ıncredere), schema (originea
      cuvˆntului cheie);
          a
    – images - o list˘ de obiecte, fiecare dintre ele continˆnd informatii despre
                       a                                     ¸ a            ¸
      URL-ul imaginii (ˆ diferite formate: mic, mediu ¸i mare), dimensiunile imag-
                          ın                             s
      inii, descrierea imaginii, URL-ul paginii de unde a fost luat˘ imaginea;
                                                                    a
    – markup - obiect ce reprezint˘ marcajul: text (text HTML ce contine link-
                                    a                                       ¸
      uri), links (o list˘ de obiecte)
                          a
    – categories - o list˘ de obiecte ce contin urm˘toarele informatii: name (nu-
                            a                ¸        a                 ¸
      mele categoriei), confidence (un num˘r subunitar ce reprezint˘ gradele de
                                              a                           a
      ˆ
      ıncredere), categorization (c˘rei metode ˆ apartine aceast˘ categorie);
                                       a           ıi      ¸          a
    – signature - semn˘tura folosit˘.
                           a          a

        Structura unui r˘spuns pentru o metod˘ de tip “preferences”:
                        a                    a

    –   status - starea r˘spunsului (ok sau fail);
                         a
    –   config_url - URL ce permite editarea preferintelor utilizatorului respectiv;
                                                       ¸
    –   doctype - doctype pentru codul HTML;
    –   image_position - pozitia imaginii ( 0 - pentru stˆnga / 1 - pentru dreapta);
                              ¸                          a
    –   email - adresa de email a utilizatorului;
    –   name - numele complet al utilizatorului (atunci cˆnd acesta este disponibil).
                                                         a

Exemplu de cerere c˘tre API-ul Zemanta folosind Javascript.
                   a

------ jscodesample.html -------
    <script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
Folosirea instumentului Zemanta ˆ recomandarea de continut
                                           ın                   ¸       9

</script>
    <!-- copy these to your own server and minimize before use -->
    <script type="text/javascript" src=
"http://friedcellcollective.net/js/jQuery.windowName/jQuery.windowName.plugin.js">
</script>

   <script type="text/javascript" src="http://www.json.org/json2.js"></script>

    <script type="text/javascript">
            function prepareZemantaData(apikey, text) {
                return {
                    method: ’zemanta.suggest’,
                    format: ’wnjson’,
                    api_key: apikey,
                    text: text
                    // for more options
// check http://developer.zemanta.com/docs/suggest/
                };
            }
            function getZemantaAPI(data, callback) {
                $.ajax({
                    url: ’http://api.zemanta.com/services/rest/0.0/’,
                    type: ’POST’,
                    data: data,
                    success: function (data, type) {
                         callback(JSON.parse(data));
                    }
                });
            }
        </script>
    <!-- this is needed to run the example -->
        <script type="text/javascript">
            jQuery(function ($) {
                var keyRx = /[a-z0-9]{24}/;
                $(’#control’).submit(function (ev) {
                    var key = $(’#key’).val(),
                         text = $(’#text’).val();
                    if (key && key.length === 24 && key.match(keyRx) && text) {
                         getZemantaAPI(
                             prepareZemantaData(key, text),
                             function (data) {
                                 $(’#result’).empty().text(JSON.stringify(data,
null, 2));
                             }
                         );
10     Folosirea instumentului Zemanta ˆ recomandarea de continut
                                       ın                   ¸

                       }
                       ev.preventDefault();
                });
            });
        </script>
------ end jscodesample.html -------

Exemplu de r˘spuns oferit de API-ul Zemanta.
            a

{
  "status":"ok",
  "articles":[{
        "url":
"http://popbytes.com/archive/2009/11/
pop_nosh_jude_law_doesnt_like_being_spied_on.shtml",
        "confidence":0.005382,
        "published_datetime":"2009-11-20T21:10:49Z",
        "zemified":0,
        "title":" pop nosh: jude law doesn’t like being spied on "
     },
  ],
  "markup":{
     "text":"michael jackson",
     "links":[]
  },
  "images":[{
        "url_m_h":95,
        "confidence":0.5,
        "url_s_h":75,
        "attribution":"Image by
<a href="http://www.daylife.com/source/Getty_Images">
Getty Images</a> via <a href="http://www.daylife.com">
Daylife</a>",
        "description":"LOS ANGELES, CA - JULY 07: (L-R) Brooke Shields,
Janet Jackson, Michael Jackson’s son Prince Michael Jackson II
(also known as Blanket), LaToya Jackson, Michael Jackson’s
daughter Paris-Michael Katherine, an unidentified singer
and Michael Jackson’s oldest son Michael Joseph Jackson, Jr.
(also known as "Prince") attend the Michael Jackson public
memorial service held at Staples Center on July 7, 2009
in Los Angeles, California. Jackson, the iconic pop star,
died at the age of 50 at UCLA Medical Center after going into
cardiac arrest at his rented home on June 25 in Los Angeles.",
        "license":"Low resolution use allowed when backlinking",
        "url_l_w":150,
        "url_s":
Folosirea instumentului Zemanta ˆ recomandarea de continut
                                              ın                   ¸           11

"http://cache.daylife.com/imageserve/0bm7eZPc4B4pA/75x75.jpg",
        "source_url":
"http://www.daylife.com/image/0bm7eZPc4B4pA?utm_source=zemanta
&utm_medium=p&utm_content=0bm7eZPc4B4pA&utm_campaign=z1",
        "url_m":
"http://cache.daylife.com/imageserve/0bm7eZPc4B4pA/150x95.jpg",
        "url_l":
"http://cache.daylife.com/imageserve/0bm7eZPc4B4pA/150x95.jpg",
        "url_l_h":95,
        "url_s_w":75,
        "url_m_w":150
     }
  ],
  "signature":"<div class="zemanta-pixie">
  <a class="zemanta-pixie-a" href=
"http://reblog.zemanta.com/zemified/cb616a96-2210-4c7a-939b-34483ec8ad41/"
title="Reblog this post [with Zemanta]"><img
class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?
x-id=cb616a96-2210-4c7a-939b-34483ec8ad41" alt=
"Reblog this post [with Zemanta]" /></a></div>",
  "keywords":[{
        "confidence":0.155657,
        "scheme":"general",
        "name":"michael jackson"
     },
     {
        "confidence":0.037475,
        "scheme":"general",
        "name":"Jackson Andrew"
     },
     {
        "confidence":0.033337,
        "scheme":"general",
        "name":"History"
     }
  ],
  "rid":"cb616a96-2210-4c7a-939b-34483ec8ad41",
  "categories":[],
  "rich_objects":[]
}


5   Concluzii
Majoritatea serviciilor de procesare a continutului ˆ
                                          ¸         ıncearc˘ s˘ identifice cele mai
                                                           a a
reprezentative cuvinte sau nume proprii dintr-un text. Spre deosebire de acestea,
12     Folosirea instumentului Zemanta ˆ recomandarea de continut
                                       ın                   ¸

Zemanta ofer˘ atˆt tag-uri bazate pe cuvinte, cˆt ¸i tag-uri pentru conceptele
              a a                              a s
identificate ˆ text.
            ın


6    Bibliografie
1. Common Tag, http://commontag.org/Home
2. Pagin˘ demo pentru integrarea Zemanta cu platforma Ubiquity, http://code.
        a
   zemanta.com/bostjan-ubiquity
3. Zemnata Developer Network, http://developer.zemanta.com/
4. Zemanta Blog, http://www.zemanta.com/fruitblog/

Mais conteúdo relacionado

Semelhante a Folosirea instumentului Zemanta in recomandarea de continut

Prezentare site Coafor Virtual
Prezentare site Coafor VirtualPrezentare site Coafor Virtual
Prezentare site Coafor Virtual
Andreea Usatenco
 
Despre agregatoarele rss 17.iun
Despre agregatoarele rss 17.iunDespre agregatoarele rss 17.iun
Despre agregatoarele rss 17.iun
Etiquette
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare Web
Adela Bran
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare web
ala2200
 
Project Smart - DefCamp 2012
Project Smart  - DefCamp 2012Project Smart  - DefCamp 2012
Project Smart - DefCamp 2012
DefCamp
 

Semelhante a Folosirea instumentului Zemanta in recomandarea de continut (20)

Licenta web aplicatie.pptx
Licenta web aplicatie.pptxLicenta web aplicatie.pptx
Licenta web aplicatie.pptx
 
Prezentare site Coafor Virtual
Prezentare site Coafor VirtualPrezentare site Coafor Virtual
Prezentare site Coafor Virtual
 
Catalog online
Catalog onlineCatalog online
Catalog online
 
Capitolul 3
Capitolul 3Capitolul 3
Capitolul 3
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
Despre agregatoarele rss 17.iun
Despre agregatoarele rss 17.iunDespre agregatoarele rss 17.iun
Despre agregatoarele rss 17.iun
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare Web
 
Galerie
GalerieGalerie
Galerie
 
Galerie
GalerieGalerie
Galerie
 
Felicitari personalizate
Felicitari personalizateFelicitari personalizate
Felicitari personalizate
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Prezentare aplicatie elev
Prezentare aplicatie elevPrezentare aplicatie elev
Prezentare aplicatie elev
 
Audi
AudiAudi
Audi
 
Modulul 7 web
Modulul 7   webModulul 7   web
Modulul 7 web
 
Civilizatia Egipteana
Civilizatia EgipteanaCivilizatia Egipteana
Civilizatia Egipteana
 
Web Browser Extension Development
Web Browser Extension DevelopmentWeb Browser Extension Development
Web Browser Extension Development
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare web
 
Webappdev
WebappdevWebappdev
Webappdev
 
Project Smart - DefCamp 2012
Project Smart  - DefCamp 2012Project Smart  - DefCamp 2012
Project Smart - DefCamp 2012
 
Moosik
MoosikMoosik
Moosik
 

Folosirea instumentului Zemanta in recomandarea de continut

  • 1. Folosirea instumentului Zemanta ˆ ın recomandarea de continut ¸ Elena-Oana T˘b˘ranu ¸i Anna-Maria Metzak a a s Facultatea de Informatic˘ a Universitatea “Alexandru I. Cuza” Ia¸i s {elena.tabaranu,anna.metzak}@info.uaic.ro Abstract. Instrumentul Zemanta poate fi folosit ˆ recomandarea de ın continut relevant utilizatorului ˆ cadrul unor aplicatii Web sociale (e.g., ¸ ın ¸ blog-uri). Platforma este disponibil˘ sub form˘ de extensie pentru ma- a a joritatea navigatoarelor web. Key words: Zemanta, extensie Firefox, recomandare de continut, web ¸ social, Faviki, Common Tag, Zemify 1 Introducere Zemanta este o platform˘ ce ajut˘ utilizatorul s˘ produc˘ continut on-line. Orice a a a a ¸ text creat de utilizator (o postare pe blog, un articol sau o pagina web) este citit direct de c˘tre Zemanta pentru identificarea contextul acestuia. Zemanta a caut˘ apoi pe web cele mai relevante imagini, link-uri, cuvinte cheie sau texte ¸i a s ofer˘ instantaneu aceste rezultate utilizatorului pentru a-i ˆ a ımbogati continutul. ¸ ¸ Platforma este disponibil˘ sub form˘ de extensie pentru majoritatea naviga- a a toarelor web (Firefox, Internet Explorer), dar ¸i pentru platforme de publicare s de continut. ¸ Cˆteva recomand˘ri pentru cei ce folosesc Zemanta: a a – textul introdus de utilizator trebuie s˘ contin˘ propozitii complete ¸i corecte a ¸ a ¸ s atˆt din punct de vedere gramatical, cˆt ¸i ortografic; a a s – Zemanta d˘ rezultate mai bune atunci cand utilizatorul folose¸te un limbaj a s natural; – se recomand˘ scrierea a cel putin un paragraf ˆ a ¸ ınainte de a lua ˆ considerare ın rezultatul ˆ ıntors de c˘tre Zemanta; a – se recomand˘ ca ˆ a ıntr-un articol s˘ se fac˘ referire la un num˘r limitat a a a de subiecte, pentru ca rezultatele ˆ ıntoarse s˘ fie cˆt mai relevante pentru a a continutul articolului respectiv. ¸ 2 API-ul Zemanta Instrumentul Zemanta pune la dispozitie un API ce poate fi folosit de orice uti- ¸ lizator ˆ situl s˘u web sau pentru construirea propriului sistem de gestiune a ın a
  • 2. 2 Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ Fig. 1. Schema API-ului Zemanta. continutului. Serviciul web Zemanda este un serviciu web clasic baza pe pro- ¸ tocolul standard HTTP ¸i metoda POST. Astfel, clientul trimite o cerere prin s portul 80 c˘tre api.zemanta.com ¸i prime¸te r˘spunsul encodat ˆ format XML, a s s a ın JSON, wnjson ¸i RDF/XML. Clientul este identificat de o cheie API (¸ir de ca- s s ractere care identific˘ ˆ mod unic instante specifice ale aplicatiei ce folosesc a ın ¸ ¸ serviciul). De exemplu, extensia Firefox stocheaz˘ cheia API ˆ configuratia sa a ın ¸ permanent˘ ¸i folose¸te aceast˘ cheie API la fiecare cerere c˘tre serviciul Ze- a s s a a manta, indiferent de platforma de blog pe care o viziteaz˘ utilizatorul (acela¸i a s lucru este valabil ¸i pentru extensia Internet Explorer). Se limiteaz˘ num˘rul de s a a cereri pe zi, precum ¸i num˘rul de cereri pe secund˘, ˆ functie de tipul de cont s a a ın ¸ pe care utilizatorul ˆ detine. Contul implicit pentru un dezvoltator permite 1000 ıl ¸ mesaje pe zi ¸i 1 post pe secund˘. Dac˘ aceste limite sunt dep˘¸ite, utilizatorul s a a as va primi un mesaj de eroare adecvat. Exist˘ dou˘ moduri prin care se pot obtine chei API: unul vizeaz˘ dez- a a ¸ a voltatorii de aplicatii, iar celalalt aplicatiile ce ata¸eaz˘ automat chei utiliza- ¸ ¸ s a torilor lor. Dezvoltatorii ¸i testerii primesc initial doar o cheie. Dezvoltator s ¸ trebuie s˘ se ˆ a ınregistreze ˆ cadrul portalului Zemanta destinat lor la adresa ın http://developer.zemanta.com. Platforma ofer˘ o metod˘ de asignare de chei a a separate pentru fiecare utilizator ˆ cazul ˆ care Zemanta este integrat˘ cu sis- ın ın a teme de gestiune a continutului sau alte platforme asem˘n˘toare. ¸ a a API-ul are o documentatie oficial˘ ˆ cadrul portalului destinat dezvolta- ¸ a ın torilor de aplicatii ¸i poate fi accesat la adresa http://developer.zemanta. ¸ s com-docs.
  • 3. Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ 3 3 Exemple de aplicatii construite folosind Zemanta ¸ 3.1 Editorul WYSIWYG Zemanta Produsul de baz˘ oferit de Zemanta este editorul WYSIWYG. Acesta este disponi- a bil sub form˘ de extensii sau plugin-uri pentru platforme precum: Gmail, Yahoo! a Mail, ScribeFire, Blogger, Wordpress, Reblog, Drupal, Tumblr, Ning, Myspace, Facebook, Last.fm, etc. Fig. 2. Wordpress: textul unei post˘ri ˆ limba englez˘ ˆ a ın a ımbog˘¸it folosind Zemanta. at 3.2 Etichetare “social˘” cu Faviki a Faviki este un instrument ce permite etichetarea “social˘”1 a paginilor web a folosind termeni de pe DBpedia2 . Astfel, utilizatorii pot folosi drept tag-uri acela¸i set de termeni extras din cea mai mare baz˘ de cuno¸tinte din lume. Da- s a s ¸ torit˘ DBpedia informatia structurat˘ de pe Wikipedia este reprezentat˘ folosind a ¸ a a un model de date flexibil, iar tag-urile propuse de Zemanta vor fi referinte la ¸ obiecte catalogate ˆ mod automat. Tag-urile obi¸nuite nu au un ˆ ¸eles bine ın s ınt definit, de aceea identificarea sensului unei tag nu este u¸oar˘. De exemplu, s a “java” poate face referire atˆt la insula din Indonezia, la specialitatea de cafea, a dar ¸i la limbajul de programare. s Faviki permite etichetarea multilingv˘: sunt sugerate concepte disponibile pe a Dbpedia ˆ 14 limbi. ın 1 Termen tradus ˆ limba englez˘ prin “social bookmarking”. ın a 2 Proiect ce ˆsi propune s˘ extrag˘ informatii structurate din baza de cuno¸tinte con- ı¸ a a ¸ s struit˘ prin proiectul Wikipedia. Datele sunt ˆ format RDF ¸i pot fi accesate folosind a ın s limbajul de interogare SPARQL.
  • 4. 4 Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ Fig. 3. Gmail: textul unui email ˆ limba englez˘ ˆ ın a ımbog˘¸it folosind Zemanta. at Fig. 4. Gmail: textul unui email ˆ limba romˆn˘ ˆ ın a a ımbog˘¸it folosind Zemanta. at
  • 5. Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ 5 Ultima versiune ˆsi propune s˘ u¸ureze folosirea formatului Common Tag3 ¸i ı¸ a s s s˘ dep˘¸easc˘ limit˘rile Wikipedia cu privire la vocabularul controlat de tag-uri a as a a semantice. Functionalit˘¸i importante oferite de ultima versiune: ¸ at – alegerea unui nume personalizat pentru tag-uri: utilizatorul ajut˘ Faviki s˘ a a ˆ ¸e tag-uri noi prin dezambiguizarea termenilor necunoscuti; ınvet ¸ – tag-urile sunt asocieri subiective ˆ ıntre concepte definite ˆ mod unic, iar ın ultima versiune permite folosirea motorul de c˘utare Google pentru a g˘si a a URL-uri ce reprezint˘ aceste concepte; a – posibilitatea de a utiliza tehnologia OpenID prin intermediul serviciului RPX ce reune¸te diferite implementari OpenID oferite de Google, Yahoo, AOL sau s Microsoft. Fig. 5. Exemplu de etichetare a textului unei post˘ri cu Faviki a API-ul Faviki permite gestionarea u¸oar˘ a tag-urilor ˆ cadrul aplicatiilor s a ın ¸ web cu urm˘toarele observatii: a ¸ – limita superioar˘ pentru serviciile expuse de Faviki este de 1000 de cereri pe a zi; – tag-urile sunt delimitate de caracterul ’;’, iar cele formate din mai multe cuvinte pot folosi ˆ loc de spatiu atˆt ’%20’ cˆt ¸i ’ ’; ın ¸ a a s 3 Format deschis de tagging ce ˆsi propune s˘ faciliteze interconectarea ¸i descoperirea ı¸ a s de nou continut. Spre deosebire de tag-urile obi¸nuite, cele ˆ format Common Tag ¸ s ın sunt referinte la concepte bine defnite, cu metadate ata¸ate ¸i propriul URL. Siturile ¸ s s ce folosesc Common Tag au avantaje precum: ˆ ımbog˘¸irea continutului cu text, at ¸ imagini ¸i extensii sau promovarea multi-platform˘. s a
  • 6. 6 Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ – termenii ˆ limba englez˘ pot fi amestecati cu termeni ˆ alte limbi. De exem- ın a ¸ ın plu, dac˘ limba este “de” (german˘), atunci etichetele “Nachrichten” (“¸tiri” a a s ˆ limba german˘) ¸i “Semantic Web” (web semantic ˆ limba englez˘) pot ın a s ın a fi folosite ˆ ımpreun˘; a – textul tag-urilor trebuie encodat. 3.3 Comanda Zemify pentru Ubiquity Ubiquity este o extensie pentru Firefox ce permite utilizatorilor s˘ dea comenzi a navigatorului, introducˆnd cuvinte ˆ a ıntr-un cˆmp special. Comenzile sunt scur- a t˘turi pentru actiuni efectuate ˆ mod constant de utilizator pe Web. Ele pot a ¸ ın elimina sarcini repetitive obtinˆnd astfel acelea¸i rezultate ˆ ¸ a s ıntr-un timp mult mai scurt. Interesant pentru Ubiquity este faptul c˘ oricine poate scrie o comand˘ a a pe care apoi s˘ o partajeze cu restul lumii, ˆ acela¸i mod ˆ care Web-ul ˆ sine a ın s ın ın permite partajarea de informatii. ¸ Ubiquity permite utilizatorilor s˘ insereze h˘rti, s˘ traduc˘ buc˘¸i din con- a a¸ a a at ¸inutul unei pagini, s˘ evidentieze text sau multe alte functionalit˘¸i. Printre t a ¸ ¸ at acestea se num˘r˘ ¸i integrarea cu API-ul Zemanta. Comanda Zemify permite aas interogarea dinamic˘ a serviciului Zemanta pentru o anumit˘ secvent˘ de text a a ¸a selectat˘ de c˘tre utilizator. a a Fig. 6. Exemplu pentru comanda Zemify: integrarea Zemanta cu Ubiquity 3.4 Researchr: del.icio.us ¸i Zemanta s Researchr este un prototip ce interogheaz˘ del.icio.us cu privire la subiecte de pe a Wikipedia, dar ¸i analizeaz˘ continutul paginilor web folosind Zemanta pentru a s a ¸
  • 7. Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ 7 g˘si articole, imagini ¸i link-uri asem˘n˘toare. Rezultatele g˘site ˆ mod automat a s a a a ın de Zemanta sunt comparate cu etichetele g˘site pe del.icio.us. a 3.5 Linked Galaxy Linked Galaxy este un instrument ce folose¸te entit˘¸ile semantice identificate s at de Zemanta ˆ textul dat ¸i le intersecteaz˘ cu DBpedia ¸i Freebase urm˘rind ın s a s a descoperirea de leg˘turi ascunse ˆ a ıntre acestea. Rezultatele sunt oferite sub forma unui graf. 4 Zemanta API ˆ practic˘ ın a Programatorii au nevoie de cont ˆ cadrul portalului pentru a-¸i genera propria ın s cheie API necesar˘ atunci cˆnd se face o cerere c˘tre serviciile expuse de Ze- a a a manta. Interog˘rile folosesc protocolul HTTP ¸i metoda POST, iar end point-ul a s unei cereri c˘tre API este http://api.zemanta.com/services/rest/0.0. a Metodele expuse de API-ul Zemanta sunt: – zemanta.suggest - permite interogarea Zemanta cu privire la metadate con- textuale ale unui text dat, iar r˘spunsul are patru componente principale: a articole, cuvinte cheie, link-uri ˆ interiorul textului ¸i categorii de compo- ın s nente optionale; ¸ – zemanta.suggest_markup - permite interogarea Zemanta cu privire la meta- date contextuale ale unui text dat, iar comparativ cu zemanta.suggest, aceast˘ metod˘ returneaz˘ doar link-uri c˘tre entit˘¸i semantice; a a a a at – zemanta.preferences - permite doar interogarea Zemanta cu privire la preferintele unui anumit utilizator, dar nu ¸i schimbarea acestora. ¸ s Parametrii trimi¸i API-ului la efectuarea unei cereri: s – method - numele metodei; – api_key - cheia API; – text - textul utilizatorului (text simplu sau HTML) - este obligatoriu doar pentru metodele de tip “suggest”; – format - formatul ˆ care vor fi ˆ ın ıntoarse datele (xml, json, wnjson sau rdfxml); – optional pot fi trimi¸i ¸i alti parametri (pentru metodele de tip “suggest”) : s s ¸ return_rdf_links, return_categories, return_images, emphasis, personal_scope, markup_limit, images_limit, articles_limit, articles_max_age_days, image_max_w, image_max_h. Structura unui r˘spuns pentru o metod˘ de tip “suggest”: a a – status - starea r˘spunsului poate fi ok sau fail; a – rid - id unic al cererii; – articles - o list˘ de obiecte: url (URL-ul articolului), title (titlul articolu- a lui), published_datetime (data cˆnd aricolul a fost publicat), confidence a (un num˘r subunitar ce reprerint˘ gradele de ˆ a a ıncredere);
  • 8. 8 Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ Fig. 7. Exemplu de interogare a API-ului Zemanta. – keywords - o list˘ de obiecte ce contin urm˘toarele informatii: name (cuvˆn- a ¸ a ¸ a tul cheie, poate contine spatii, dar nu poate contine virgule), confidence ¸ ¸ ¸ (un num˘r subunitar ce reprezint˘ gradele de ˆ a a ıncredere), schema (originea cuvˆntului cheie); a – images - o list˘ de obiecte, fiecare dintre ele continˆnd informatii despre a ¸ a ¸ URL-ul imaginii (ˆ diferite formate: mic, mediu ¸i mare), dimensiunile imag- ın s inii, descrierea imaginii, URL-ul paginii de unde a fost luat˘ imaginea; a – markup - obiect ce reprezint˘ marcajul: text (text HTML ce contine link- a ¸ uri), links (o list˘ de obiecte) a – categories - o list˘ de obiecte ce contin urm˘toarele informatii: name (nu- a ¸ a ¸ mele categoriei), confidence (un num˘r subunitar ce reprezint˘ gradele de a a ˆ ıncredere), categorization (c˘rei metode ˆ apartine aceast˘ categorie); a ıi ¸ a – signature - semn˘tura folosit˘. a a Structura unui r˘spuns pentru o metod˘ de tip “preferences”: a a – status - starea r˘spunsului (ok sau fail); a – config_url - URL ce permite editarea preferintelor utilizatorului respectiv; ¸ – doctype - doctype pentru codul HTML; – image_position - pozitia imaginii ( 0 - pentru stˆnga / 1 - pentru dreapta); ¸ a – email - adresa de email a utilizatorului; – name - numele complet al utilizatorului (atunci cˆnd acesta este disponibil). a Exemplu de cerere c˘tre API-ul Zemanta folosind Javascript. a ------ jscodesample.html ------- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
  • 9. Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ 9 </script> <!-- copy these to your own server and minimize before use --> <script type="text/javascript" src= "http://friedcellcollective.net/js/jQuery.windowName/jQuery.windowName.plugin.js"> </script> <script type="text/javascript" src="http://www.json.org/json2.js"></script> <script type="text/javascript"> function prepareZemantaData(apikey, text) { return { method: ’zemanta.suggest’, format: ’wnjson’, api_key: apikey, text: text // for more options // check http://developer.zemanta.com/docs/suggest/ }; } function getZemantaAPI(data, callback) { $.ajax({ url: ’http://api.zemanta.com/services/rest/0.0/’, type: ’POST’, data: data, success: function (data, type) { callback(JSON.parse(data)); } }); } </script> <!-- this is needed to run the example --> <script type="text/javascript"> jQuery(function ($) { var keyRx = /[a-z0-9]{24}/; $(’#control’).submit(function (ev) { var key = $(’#key’).val(), text = $(’#text’).val(); if (key && key.length === 24 && key.match(keyRx) && text) { getZemantaAPI( prepareZemantaData(key, text), function (data) { $(’#result’).empty().text(JSON.stringify(data, null, 2)); } );
  • 10. 10 Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ } ev.preventDefault(); }); }); </script> ------ end jscodesample.html ------- Exemplu de r˘spuns oferit de API-ul Zemanta. a { "status":"ok", "articles":[{ "url": "http://popbytes.com/archive/2009/11/ pop_nosh_jude_law_doesnt_like_being_spied_on.shtml", "confidence":0.005382, "published_datetime":"2009-11-20T21:10:49Z", "zemified":0, "title":" pop nosh: jude law doesn’t like being spied on " }, ], "markup":{ "text":"michael jackson", "links":[] }, "images":[{ "url_m_h":95, "confidence":0.5, "url_s_h":75, "attribution":"Image by <a href="http://www.daylife.com/source/Getty_Images"> Getty Images</a> via <a href="http://www.daylife.com"> Daylife</a>", "description":"LOS ANGELES, CA - JULY 07: (L-R) Brooke Shields, Janet Jackson, Michael Jackson’s son Prince Michael Jackson II (also known as Blanket), LaToya Jackson, Michael Jackson’s daughter Paris-Michael Katherine, an unidentified singer and Michael Jackson’s oldest son Michael Joseph Jackson, Jr. (also known as "Prince") attend the Michael Jackson public memorial service held at Staples Center on July 7, 2009 in Los Angeles, California. Jackson, the iconic pop star, died at the age of 50 at UCLA Medical Center after going into cardiac arrest at his rented home on June 25 in Los Angeles.", "license":"Low resolution use allowed when backlinking", "url_l_w":150, "url_s":
  • 11. Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ 11 "http://cache.daylife.com/imageserve/0bm7eZPc4B4pA/75x75.jpg", "source_url": "http://www.daylife.com/image/0bm7eZPc4B4pA?utm_source=zemanta &utm_medium=p&utm_content=0bm7eZPc4B4pA&utm_campaign=z1", "url_m": "http://cache.daylife.com/imageserve/0bm7eZPc4B4pA/150x95.jpg", "url_l": "http://cache.daylife.com/imageserve/0bm7eZPc4B4pA/150x95.jpg", "url_l_h":95, "url_s_w":75, "url_m_w":150 } ], "signature":"<div class="zemanta-pixie"> <a class="zemanta-pixie-a" href= "http://reblog.zemanta.com/zemified/cb616a96-2210-4c7a-939b-34483ec8ad41/" title="Reblog this post [with Zemanta]"><img class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png? x-id=cb616a96-2210-4c7a-939b-34483ec8ad41" alt= "Reblog this post [with Zemanta]" /></a></div>", "keywords":[{ "confidence":0.155657, "scheme":"general", "name":"michael jackson" }, { "confidence":0.037475, "scheme":"general", "name":"Jackson Andrew" }, { "confidence":0.033337, "scheme":"general", "name":"History" } ], "rid":"cb616a96-2210-4c7a-939b-34483ec8ad41", "categories":[], "rich_objects":[] } 5 Concluzii Majoritatea serviciilor de procesare a continutului ˆ ¸ ıncearc˘ s˘ identifice cele mai a a reprezentative cuvinte sau nume proprii dintr-un text. Spre deosebire de acestea,
  • 12. 12 Folosirea instumentului Zemanta ˆ recomandarea de continut ın ¸ Zemanta ofer˘ atˆt tag-uri bazate pe cuvinte, cˆt ¸i tag-uri pentru conceptele a a a s identificate ˆ text. ın 6 Bibliografie 1. Common Tag, http://commontag.org/Home 2. Pagin˘ demo pentru integrarea Zemanta cu platforma Ubiquity, http://code. a zemanta.com/bostjan-ubiquity 3. Zemnata Developer Network, http://developer.zemanta.com/ 4. Zemanta Blog, http://www.zemanta.com/fruitblog/