Herea Adrian Open Calais

657 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
657
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Herea Adrian Open Calais

  1. 1. OpenCalais Herea Adrian Facultatea de informatica Master Anul 2 Specializarea Sisteme Distribuite Mail: adrian.herea@infoiasi.ro
  2. 2. 2 Herea Adrian Intro OpenCalais este prezentat ca fiind soluţia care permite să se facă legături între toate entităţile disponibile pe internet. OpenCalais este un serviciu de organizare şi tagging automat pentru publicanţi. Cu ajutorul său se pot face legături între evenimente, locaţii, oameni, publicaţii, oferind posibilitatea dezvoltatorilor să folosească aceste informaţii în ce mod doresc ei. Calais se doreşte a fi un standard de înţelegere şi definire a cunoştinţelor umane. OpenCalais nu are un impact direct asupra utilizatorului final, adică persoanele care deschid o pagină sau o aplicaţie web, ci în special el se adresează dezvoltatorilor de aplicaţii şi pagini web. Calais, atunci când uneşte printr-o legatură două entităţi, foloseşte drept argument întelesul conţinutul lor şi nu se bazează doar pe cuvinte cheie. Astfel, filtrarea resurselor se poate face pe baza înţelesului şi nu pe baza unor cuvinte, ceea ce face ca utilizatorul să poată filtra doar informaţiile din zona de interes; de exemplu, dacă se caută informaţii din domeniul geografiei despre insula Java atunci rezultatele nu vor conţine zgomote de informaţii depre programare sau despre producători de cafea. De asemenea Calais oferă şi soluţii pentru producerea automată a tagurilor pentru un anumit conţinut ceea ce este un avantaj semnificativ pentru editorii de ştiri unde articolele apar într-un ritm alert şi nu permit prea mult timp pentru o “tăguire” corectă. Tagurile create de Calais sunt metadate semantice bogate în informaţii ce benificiază de un identificator unic. Calais este un serviciu web, ceea ce este avantajos deoarece nu este necesară instalarea vreunui soft eliminându-se astfel problemele de compabtibilitatea. Atunci când un editor are un conţinut finalizat îl trimite prin API-ul serviciului web OpenCalais, unde conţinutul este procesat cu ajutorul unor unelte de procesare ale limbajului natural şi de învăţare automată. Ca raspuns sunt trimise metadate pentru acel conţinut structurate într-un RDF. Acest RDF poate fi folosit apoi de editor în modul dorit de el. Metadatele pot fi folosite pentru a îmbunătăţi căutarea sau pentru clasificare conţinutului. API-ul serviciului web Calais este unul destul de simplu, lucru ce poate fi vizibil şi în tutorialul http://philippeadjiman.com/blog/2009/09/16/open-calais-from-java-with- eclipse-extract-entities-facts-and-events-in-4-minutes/ în care se explică cum poate fi scrisă o aplicaţie Java ce foloseşte Calais să extragă informaţii dintr-un text. Deschizând cu un editor de texte rdf-ul primit, ca raspuns pentru orice text procesat de Calais, putem intelege că modul de recunoaştere a întelesului unui text se face în linii mari prin atribuirea unor probabilităţi fiecărei entităţi ( probabilităţi ce depind de contextul în care se află şi de datele deja calculate precedent prin procesarea altor texte). Aceste probabilităţi sunt defapt cele care spun că o entitate face parte cel mai probabil dintr-un anumit context. Aceşti algoritmi de învăţare vor da rezultate din ce în ce mai bune, deoarece cu fiecare text procesat greutăţile pentru fiecare entităţi se modifică. Unele dintre avantajele ce nu pot fi neglijate ale OpenCalais este acela că este gratuit momentan pentru 40000 de cereri pe zi. Unul dintre motive pentru care este gratuit este şi acela că prin cererile de procesare ale textelor, Calais obţine informaţii mai multe de procesare a următoarelor texte.
  3. 3. Intro 3 Utilizare api OpenCalais Pentru a putea utiliza OpenCalais este nevoie de creearea unui cont pe pagina oficială. După creeare contului trebuie să primim pe mail parola şi instrucţiunile despre ceea ce trebuie să facem în continuare. Posibil din cauză că server-ul este supra solicitat mail-ul nu va ajunge instant. În cazul meu a durat mai mult de un sfert de oră. După logare avem posibilitatea să cerem o cheie de API ce va fi folosită în aplicaţiile noastre pentru a utiliza serviciul web oferit de Calais. Nici această cheie nu va ajunge în mail într-un timp foarte scurt ci va dura mai mult decat pentru confirmarea contului, în cazul meu aproximtiv 45 de minute. Pe pagina oficială se găsesc tutoriale şi documente ce ne pot ajuta într-un timp destul de scurt să obţinem suficiente informaţii pentru a începe dezvoltarea de aplicaţii proprii. API-ul Calais suportă SOAP, REST si HTTP cu gzip. Pentru apelul prin SOAP avem la dispoziţie funcţia web: String Enlighten(String licenseID, String content, String paramsXML) unde lecenseID este cheia de API pe care o primim dupa ce ne facem un cont. content este conţinutul pe care dorim să îl adnotăm. Lungimea maximă a acestui conţinut este de 100000 de caractere, de aceea se recomandă să fie un text cât mai “curat”, fară tag-uri, html sau alte adnotări ce nu pot oferi prin procesare informaţii utile. Pentru a recunoaşte automat limba, procesorul are nevoie de un text de o lungime de minim 100 de caractere. În caz contrar, dacă nu este specificata limba, aceasta este considerată ca fiind engleza. Dacă conţinutul dat spre procesare este un document html , Calais va procesa doar textul din secţiunea body. ParamsXML este un string ce reprezintă conţinutul unui document xml ce conţine parametri pentru procesarea conţinutului (directive de procesare sau metadate externe). Apelul prin REST se poate face atât prin HTTP GET cât şi prin HTTP POST folosind un argumnent cu structura: licenseID=url-encoded-string&content=url-encoded- string&paramsXML=url-encoded-string Parametri de procesare sunt rezumaţi într-un tabel existent la http://opencalais.com/documentation/calais-web-service-api/forming-api-calls/input- parameters : Parameter Section Definition Values Default Format of "TEXT/XML" Processing the input "TEXT/HTML" contentType (none) Directives content (see "TEXT/HTMLRAW" details "TEXT/RAW"
  4. 4. 4 Herea Adrian below) Format of "XML/RDF", "Text/Simple" Processing outputFormat the returned or "Text/Microformats" or XML/RDF Directives results "Application/JSON" Base URL to Processing be put in rel- <the base URL>, for example reltagBaseURL (none) Directives tag "http://myblog.com/tag" microformats Indicates whether the extracted metadata Processing calculateRelevanceScore will include "true" or "false" true Directives relevance score for each unique entity Indicates whether output will "GenericRelations" - to enable include Generic Relations; Processing Generic "SocialTags" - to enable enableMetadataType (none) Directives Relation Social Tags (could combine extractions comma-separated options: (RDF) "GenericRelations,SocialTags" and/or SocialTags Indicates whether entire XML/RDF Processing docRDFaccessible document is "true" or "false" (none) Directives saved in the Calais Linked Data repository Indicates whether the User extracted allowDistribution "true" or "false" false Directives metadata can be distributed User Indicates allowSearch "true" or "false" false Directives whether
  5. 5. Intro 5 future searches can be performed on the extracted metadata User- User generated ID externalID any string (none) Directives for the submission Identifier for User submitter the content any string (none) Directives submitter Calais suportă o mulţime bogată de metadate semantice . Poate recunoaşte entităţi, evenimente, fapte, relaţii generice, să aproximeze cât de relevantă este o entitate, taguri sociale, categorii de documente şi poate dezambiguiza entităţi. Fiecare dintre acestea sunt explicate pe larg pe pagina oficială, în secţiunea de documentaţie. În urma procesării textului, Calais poate da raspunsul sub forma RDF, microformate, formate simple sau JSON. RDF-ul ce constituie răspunsul conţine informaţii despre document şi tranzacţie, cum ar fi limba, id-ul celui care a făcut cererea şi conţinutul în fomat xml. Implicit şi corpul documentului original este trimis în răspuns dacă nu se cere prin parametrii trimişi că nu se doreşte acest lucru. Apoi umează zona în care documentul original este adnotat, şi fiecare entitate indetificată este marcată corespunzator. De exemplu: 2009-11-28 23:00:00 Fiind identificat ca entitate de tip dată este adnotat: <c:docDate>2009-11-28 23:00:00</c:docDate> Tot în zona de documentaţie ni se oferă un exemplu de document text înainte şi după procesare. Dacă vom compara dimensiunile fisierului original de 3.07kB cu cel rezultat în urma procesarii de 137 KB, putem întelege destul de usor cât efort ar fi trebuit să depună un om pentru a adnota în acest mod documentul. Microformatele suportate momenta de OpenCalais sunt cele de rel-tag, hCard and hCalendar. Microformatele returnate se bazează pe cele mai relevante entităti din metadatele de semantica indentificate de procesorul de text. Tabelul cu relaţia dintre elementele de metadată, atributele microformatelor şi atributele elementelor de metadată sunt rezumate in tabele în sectiunea Microformats a documnetaţiei de pe site-ul official. Pentru o mai uşoară procesare a raspunsului folosind JavaScrip, raspunsul primit de la OpanCalais poate fi in fomat JSON. Pentru a specifica tipul răspunsului pe care îl dorim trebuie să specificăm valoarea paramentrului c:outputFormat="<tipul outputului dorit>".
  6. 6. 6 Herea Adrian Pentru a ne face o idee despre utilizarea practică a API-ului Calais putem incepe prin analiza codului dat ca exemplu la adresa http://opencalais.com/applications/soap-and-rest-protocols-source-code-examples. Nu ne vom axa pe elementele strict legate de limbajul de programare deoarece fiind un serviciu web nu conteaza prin ce mod sunt create cererile pe staţia locala ci formatul in care ajung la destinaţie. Observam ca cererea de tip POST se reduce la uplodarea unui sir de caractere (în cazul de fata codificate în UTF8) printr-un client web folosind metoda POST la adresa API-ului Calais. client.UploadData(i_Uri, "POST", byteArray); unde client este un obiect de tip client web. Uri-ul serviciului web va avea adresa corespunzătoare serviciului web pe care dorim sa il utilizam cum ar fi http://api.opencalais.com/enlighten/ pentru SOAP. Înainte de a incărca datele trebuie sa specificăm în header-ul clientului tipul conţinutului, informaţie ce va fi folosita de Calais la procesare. byteArray contine defapt cerere pe care o facem serviciului Calais. Acest array in format de sir de caractere arata in felul urmator licenceseID=”apicalaiskez”&content=”textul_pentru_procesare”&paramXML=”do cumentul_XML_ce_contine_parametri_pentru_procesare” Elementele scrise între ghilimele sunt parametri pe care îi setam pentru a apela API-ul cu alţi parametri. Un exemplu string ce poate constitui paramXML: @"<c:params xmlns:c=""http://s.opencalais.com/1/pred/"" xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax- ns#""> <c:processingDirectives c:allowDistribution=""true"" c:allowSearch=""true"" c:contentType=""text/txt"" specificam ca vom Ca directive de procesare c:outputFormat=""xml/rdf""> specificăm ca vom trimite un </c:processingDirectives> continut de tip text si dorim să primim raspunsul in format rdf <c:externalMetadata> </c:externalMetadata> </c:params>" Avînd aceasta baza putem jongla cum dorim cu aceste siruri de caractere. Opencalais ne oferă un API foarte simplu in care noi specificăm doar ce dorim să procesam şi ce dorim sa primim ca raspuns, să punem aceste informaţii într-un sir de caractere pe care il trimitem serviciului web ce ne va intoarce ceea ce dorim intr-un
  7. 7. Intro 7 timp cat mai scurt. În documentatie de pe sit-ul official avem explicat fiecare element de interfaţă astfel putem evolua usor la stadiul in care sa putem exprima in xml-ul de parametric ce rezultat dorim sa obtinem. String-urile trebuie convertite astfel încît să nu conţină caractere speciale. Bibliografie Situl oficial OpanCalais sectiunea Documentatie, forumul OpenCalais http://opencalais.com/documentation/calais-web-service- api http://opencalais.com/documentation/calais-web-service- api/faq-calais-api http://opencalais.com/showcase http://philippeadjiman.com/blog/2009/09/16/open-calais- from-java-with-eclipse-extract-entities-facts-and- events-in-4-minutes/

×