Segnalo dal sito del Machine Learning Lab una notizia che non solo mi rende orgoglioso da un punto di vista personale ma che rende merito al lavoro dei miei collaboratori Eric Medvet, Andrea De Lorenzo e Fabiano Tarlao. Desidero ringraziarli pubblicamente per la loro competenza, passione ed entusiasmo: aspetti che per me sono stati importantissimi anche a livello personale.
Un nostro lavoro sulla "costruzione automatica di espressioni regolari" è stato accettato per la pubblicazione su di una rivista molto prestigiosa: "TKDE remains a very competitive venue for publishing the best research results. Among the 552 articles submitted in the first 10 month of 2015, 17 were invited for minor revision (3%) and an additional 117 (21%) were invited for major revision". Needless to say, the remaining 418 submissions were rejected.
Our paper was one of those 17 which were asked only a minor revision.
Una espressione regolare è, in parole poverissime, una stringa che descrive in modo molto conciso un insieme di stringhe che hanno lo stesso pattern sintattico. Ad esempio, questa è una espressione regolare che descrive gli indirizzi email:
^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$
Questa invece è una espressione regolare che descrive date nella forma "XX/XX/YYYY where XX can be 1 or 2 digits long and YYYY is always 4 digits long":
^\d{1,2}\/\d{1,2}\/\d{4}$
Le espressioni regolari sono utilizzate in moltissime applicazioni pratiche della programmazione. Per avere un'idea di quanto siano diffuse ed importanti, basti considerare che nel forum Stack Overflow le domande su questo tema sono tra le più frequenti: più di 140.000 (alla data di oggi).
Scrivere un'espressione regolare è molto complicato, come si può intuire. Nel corso degli anni ci sono stati molti tentativi per la costruzione automatica di espressioni regolari sulla base solo di esempi del comportamento desiderato. Nella pratica, questi tentativi riuscivano a funzionare in modo più o meno accettabile solo in casi estremamente semplici.
Noi siamo riusciti a realizzare un sistema in grado di:
- Costruire espressioni che hanno accuratezza paragonabile a quella di umani esperti;
- In un tempo paragonabile a quello richiesto da umani esperti;
- Su problemi di complessità realistica.
Un prototipo del sistema è accessibile online. L'utente inserisce un testo, annota le porzioni da estrarre ed il sistema costruisce automaticamente l'espressione regolare che estrae solo le porzioni annotate. L'utente non ha neanche necessità di conoscere la sintassi o il funzionamento delle espressioni regolari.
Il lavoro è il risultato di molto tempo, competenza e passione. Da più di due anni questa è stata l'attività di ricerca preponderante mia, di Eric, Andrea e Fabiano. Agli albori di questa attività hanno partecipato anche Enrico Sorio, Marco Mauri e Giorgio Davanzo. Quest'ultimo, in particolare, ha avuto il merito di suggerire l'idea iniziale (sulla quale, come mi accade spesso, ero molto scettico...).
Grazie a tutti.
Commenti