Blog

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.

Procedura de lichidare a unei întreprinderii în Moldova

duminică, 3 ian. 2016

După ce am trecut prin experianța lichidării unui SRL, am hotărât să împart din experiența mea cu alții.

Vă spun de la început: nu e greu, complicat sau scump. Se cere doar puțină răbdare și informare. Cu informarea la mine a fost o problemă - nu prea am găsit info. Pentru voi se pare că va fi mai simplu.

În linii mari sunt doar câțiva pași:

  1. Anunțarea procedurii de lichidare - la Camera Înregistrării de Stat și Monitorul Oficial;
  2. Lucru la contabilitate - Raport financiar, închidere conturi bancare;
  3. Colecatre certificate - de la câteva întreprinderi de stat: Vamă, CNAS, Statistică, etc.
  4. Actul de control - de la FISC, sediul central;
  5. Certificat ce confirmă lipsa datoriilor la bugetul de stat - FISC din sectorul unde se află firma;
  6. Încheierea procedurei de lichidare - la CÎS.

Un document detaliat:

Vă invit să sugerați modificări în acest document.

Procedura durează minim 3 luni.

Succes.

AWS - o experiență fantastică

luni, 18 mai 2015

Recunosc că am fost un programator .NET convins. Mă simțeam foarte confortabil în lumea Windows: server, C#, etc.

De fapt, după absolvirea universității, practic, am programat doar în C# (...). Între timp, a crescut numărul serverelor pe care țineam proiectele mele: Top20.md(vechi), Place.md(mort), Ournet(ournet.ro, click.md, zborg.ru, etc. - vii), și alte zeci de încercări.

Amazon Web Services

AWS este superb! Cine nu știe ce și cum - nu voi lămuri - e prea târziu; celora care nu se pot hotărî să folosească la greu serviciile Amazon, le sugerez să lase orice îndoială și să caute soluții anume în Cloud.

Node.js

Ca limbaj de programare server side am ales Nodejs. Despre acesta pot spune doar cuvinde bune: simplu, modular, clar, opensource.

Acum când revin la proiectele scrise în C#, de multe ori, mă îngrozesc la câtă complexitate fără de sens găsesc.

Exemplu

De mai mult timp foloseam, ocazional, serviciile AWS, în special S3. Relativ recent, am hotărât să transfer toate proiectele pe AWS.

Am început cu proiectul Meteo de pe Ournet - mi s-a părut mie mai ușor de rescris și transportat.

Proiectul are ~ 80 mii afișări de pagini pe zi. Bază de date cu câteva sute de mii de localități și informația despre starea vremii pentru localitățile căutate.

Proiectul folosește pe AWS următoarele resurse:

  • 1 server cu 1CPU și 1GB RAM, Linux;
  • DynamoDB;
    • un tabel cu localități;
    • alt table cu starea vremii;
  • CloudFront

Deci, un proiect cu 80.000 afișări de pagini per zi funcționează excelent pe o instanță de 1CPU și 1GB RAM.

După părerea mea - este foarte bine.

Costuri

Costul pentru toate resursele folosite pe AWS este sub $40 per lună.

Concluzii

Trecând peste toate avantajele unui Cloud, cel mai fine mi s-a părut faptul că la fiecare linie de cod ții cont de resursele pe care le folosești.

În lunele următoare voi transfera și celelalte proiecte în Cloud-ul Amazon.

Acum cred că dacă un proiect nu se poate auto-întreține pe AWS, atunci nu merită creat.

Idee: Un muzeu/monument al înțelepciunii

miercuri, 3 sept. 2014

Azi mi-a venit în minte o idee interesantă. Vreau să o împart cu alții și să vedem cât e de bună.

Mă gândeam la un muzeu/monument al înțelepciunii - așa am formulat ideea.

De fapt, ideea constă în următoarele: crearea unui loc unde sunt cumva prezentate cele mai bune proverbe/citate ale fiecărui popor.

Cu siguranță sunt multe cărți cu proverbe, citate din diferite culturi și domenii, dar nu știu dacă există un loc unde ai putea să te duci și să te inspiri din înțelepciunea omenirii(mă refer la proverbe și citate).

Insist pe ideea unui loc fiindcă cred că un loc ar aduna într-o altă formă oamenii, decât o carte.

Cum ar fi bine de implementat ideea nu prea știu. Eu m-am gândit doar la o variantă.

Implementare. Varianta 1

Mă gândesc la un monument format din câte o statuie/coloană pentru fiecare cultură, pe care să fie sculptate cele mai importante(din cultura respectivă) proverbe/citate și în dreptul proverbului să fie și o reprezentare grafică a acestuia. Inscripțiile ar putea fi traduse în mai multe limbi(cumva arhitectoral/design interesant).

S-ar putea de amplasat afară, sub cerul liber - ar fi un loc destul de mare și plin de înțelepciune! :)

Eu aș vizita un așa loc.

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.

Noul meu blog - creat cu ajutorul DocPad

marți, 22 apr. 2014

De ceva timp căutam o platformă de blogging care să satisfacă cerințele/mofturile mele (ale unui dezvoltator web).

M-am oprit asupra DocPad.

Pe acest blog voi scrie (sper mai des) despre proiectele mele și despre experiența mea în lumea IT.

Cine este interesat de codul sursă al acestui blog îl găsește pe Github.