Instrumentul Zemanta poate folosit in recomandarea de
continut relevant utilizatorului in cadrul unor aplicatiilor Web sociale (e.g.,
blog-uri). Platforma este disponibila sub forma de extensie pentru majoritatea navigatoarelor web.
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/