Tag: Open Source

Entitizer - un serviciu simplu Named-Entity recognition

vineri, 4 mai 2018

În ultimele săptămâni lucrez din greu la proiectul Entitizer - un serviciu de recunoaștere a entitităților populare în text.

Proiectul nu are pretențiile unui serviciu Named-Entity recognition (NER) veritabil. Însă, dacă ai nevoie să extragi entitițile(persoane, localități, organizații, etc.) dintr-o știre, de exemplu, atunci poate fi o alegere foarte bună.

Plusurile proiectului:

  • Recunoaște bine variațiile unui nume: Ana Carp, Anei Carp, etc.
  • Este foarte rapid: ~100 ms
  • Folosește puține resurse
  • va funcționa în limbi mai puțin populare: română, bulgară, cehă, poloneză, etc.

demo entitizer.com

Demo Entitizer

În prezent, Entitizer este la etapa de învățare: zilnic învață noi entități din știrile din R. Moldova și de pe Wikipedia.

Cum funcționează

Entitizer face următorii pași:

  1. Învață entități:

    • Colectează entități din știri/texte;
    • Identifică entitățile cu ajutorul wikidata/wikipedia;
    • Salvează entititățile învățate;
  2. Identitifică entitățile învățate în text

Codul este pe Github la Textactor și Entitizer.

Top20.md este acum Open Source

miercuri, 6 ian. 2016

Caut o modalitate prin care proiectul Top20.md ar putea să aibă viață și sens în continuare.

Mi-i destul de greu să găsesc o cale/idee bună. Între timp am publicat codul pe Github.

Varinata pe care am pornit pentru următoarea versiune este:

  • design nou;
  • adăugarea site-urilor noi fără autentificare;
  • un modul de explorare și calcul a rating-ului.

Renunțasem la aceste funcționalități din cauza migrării pe AWS.

Acum dacă cineva îmi sugerează o idee bună, sau o implementează ar fi super!

Nu aș vrea să opresc proiectul.

Entipic - o imagine pentru fiecare subiect

joi, 24 apr. 2014

Numele Entipic vine de la 'Entity picture'. Ideea proiectului este de a oferi pentru fiecare topic/entitate popular/ă o imagine reprezentativă.

Proiectul seamănă cu Gravatar: dacă Gravatar oferă o imagine pentru fiecare adresă de email cunoscută (de sistem), atunci Entipic oferă o imagine pentru fiecare topic popular (ex: Bill Gates, Vlad Filat, Chișinău, CEDO, etc.).

Cel mai simplu de înțeles ar fi print-un exemplu: voi folosi Opinia de pe Click.md.

opinia.click.md

Exemplu de imagini asociate unor entități populare

În imaginea de mai sus vedem personalități și, alături, imaginea (fața) acestora. Anume în felul acesta conținutul site-ului devine mai clar și mai atractiv.

Problema

La prima vedere, să am la mine pe site o imagine asociată unei entități, pare ceva foarte simplu. Dar, în realitate, este o problemă foarte neplăcută și complicată. E clar că această problemă poate fi neînsemnată atunci când numărul entităților este mic și constant.

Pentru a soluționa această problemă avem nevoie de:

  • Căutarea și redactarea imaginilor pentru fiecare entitate (mult lucru manual);
  • Mărimi diferite (de regulă aceeași imagine o vom folosi cu diferite mărimi);
  • Menținerea unei legături între imagine și entitatea din baza de date;
  • Stocare pe server și transfer la client;

Soluție

Cea mai bună soluție, după părerea mea, ar fi ca un serviciu să preia toată această funcționalitate.

Astfel serviuciul ar veni doar cu o adresă de la care putem cere imagini.

Entipic

V-ați prins! Entipic.com este acel serviciu.

Dar, să vedem cum funcționează și cum poate fi folosit. În primul rând, e bine de știut că Entipic funcționează fără intervenția umană.

Cum funcționează

Voi explica pe baza unui exemplu concret. Presupunem că un site face următoarea cerere: http://cdn.entipic.com/ro/traian-basescu.jpg

Sistemul reacționează (forma simplă):

  1. Normalizează numele cerut (traian-basescu);
  2. Dacă pentru acest nume sistemul deține o imagine, atunci o returnează; în caz contrar, returnează o imagine temporară și trece la pasul 3;
  3. Salvează numele cerut (traian-basescu) ca nume nou;
  4. Periodic, un modul, caută imagini pe internet pentru fiecare nume nou;

Cum poate fi folosit

Unicul lucru care trebuie reținut este adresa unei imagini: http://cdn.entipic.com/[language]-[country]/[size]/[name].jpg

Unde:

  • [language] (semi-opțional) - este codul limbii din 2 litere (en, ro, ru, etc.). Codul limbii este necesar pentru a ajuta sistemul în procesul de căutare a imaginii corecte. De fapt, sistemul nu va căuta imagini pentru cuvinte/nume care nu au asociată limba.

  • [country] (opțional) - este codul țării din 2 litere (md, ro, ru, etc.). Acest cod este necesar mai ales când cerem [name] scurt(...). Dacă site-ul nostru este din România vom folosi codul ro.

  • [size] (opțional) - este mărimea dorită a imaginii, care este formată dintr-o literă. Poate fi: x (25x25 px), a (50x50 px), b (100x100 px), c (150x150 px). Dacă nu indicăm mărimea se va folosi a (50x50 px).

  • [name] (obligatoriu) - este numele entității pentru care dorim o imagine. Poate conține între 2 și 50 de caractere. E de dorit ca [name] să fie scris cu litere mici șă spațiile să fie înlocuite cu un minus(-).

Nu contează forma de scriere a numelor: traian-basescu, traian BaseScu, Traian Băsescu și chiar TrăIAN Bășescu sunt identice pentru sistem. Ceea ce înseamnă că nu trebuie să cunoaștem ce nume folosește Entipic - noi doar vom cere o imagine folosind numele pe care îl cunoaște aplicația noastră.

Dacă vom folosi numele Траян Бэсеску Entipic va returna aceeași imagine ca și pentru traian-basescu, fiindcă este destul de inteligent pentru a căuta și cunoaște sinonime.

Performanță

Entipic folosește pentru deservirea imaginilor u serviciu CDN. Deci, doar dacă imaginea lipsește în cache-ul CDN-ului se va observa încărcarea imaginii. Performanța se poate testa pe site-urile care folosesc Entipic: www.click.md sau www.ournet.ro

Toate imaginile sunt stocate pe Amazon S3.

Condiții de utilizare

Serviciul este gratuit, deci poate fi folosit de orice aplicațe/site.