Passa ai contenuti principali

Una bella notizia (ed un ringraziamento)

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:
  1. Costruire espressioni che hanno accuratezza paragonabile a quella di umani esperti;
  2. In un tempo paragonabile a quello richiesto da umani esperti;
  3. 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

Popular Posts

"Ingegneria deve essere difficile"

Il ritaglio di giornale qui sotto ricorda uno degli eventi più non-trovo-un-aggettivo-appropriato del mio periodo di studente di Ingegneria a Pisa. Ricordo che una mattina iniziò a spargersi la voce "hanno murato la porta del dipartimento!".  Andammo subito a vedere ed arrivammo un pò prima dei giornalisti che scattarono questa foto. La porta era murata, intonacata, pitturata di bianco e sovrastata da una scritta "INGEGNERIA DEVE ESSERE DIFFICILE". Le "E" di "INGEGNERIA" erano scritte al contrario perché era una sorta di "marchio di fabbrica" della facoltà di Ingegneria di Pisa. L'aula più grande, quella in cui pressoché tutti gli studenti seguivano i corsi dei primi anni, aveva infatti alcuni bellissimi "affreschi scherzosi" che furono fatti nel corso delle proteste studentesche di qualche anno prima ed in cui la parola "Ingegneria" era appuntoi scritta in quel modo. Si era anche già sparsa la voce di cosa era

Il patch che non era un patch

Quanto segue è un patetico quanto inutile tentativo di distrarmi e non pensare alla pessima prestazione calcistica di ieri sera, decisamente non all'altezza dell'evento e dei nostri gloriosi colori. Nella lezione di "Computer Networks and Principles of Cybersecurity" di ieri, mi è stata posta la domanda " E' possibile che un patch introduca nuove vulnerabilità? ". La mia risposta è stata affermativa, ho evidenziato che un patch è un software, quindi può introdurre errori, vulnerabilità, può fare riemergere errori o vulnerabilità presenti e risolti in versioni precedenti, può correggere la specifica vulnerabilità presumibilmente risolta da quel patch solo in parte. Non è frequente, ma può accadere ed è quindi una possibilità da tenere presente. Uno dei numerosi motivi che rendono così complessa la gestione delle vulnerabilità è anche questo. Stamattina ho letto un esempio molto interessante di quanto abbiamo detto. Pochissime settimane fa Microsoft ha ril

Perché studiare Analisi Matematica???

Un mio caro amico mi ha scritto: ...sono con mia figlia che studia Analisi 1...A cosa serve, al giorno d'oggi, studiare Analisi (a parte sfoltire i ranghi degli aspiranti ingegneri)? Riporto la mia risposta di seguito, forse può "motivare" qualche altro studente. ... Per un ingegnere la matematica è fondamentale perché è un linguaggio ; ed è il linguaggio essenziale per trattare gli argomenti che dovrà affrontare come ingegnere; non sono importanti i contenuti specifici; è importante, anzi fondamentale, che riesca a capirli, ricostruirli etc. ad esempio, chi deve usare l'inglese, lo usa perché in un modo o nell'altro lo conosce; nessuno di noi ha usato esattamente le frasi o i dialoghi o le regole che ha incontrato negli esercizi di inglese o di tedesco; nella matematica è lo stesso; non sono importanti i limiti, le serie, i teoremi di cauchy o che so io; ma se uno non è in grado di capire quel linguaggio allora non sarà in grado di capire davvero quas

40 anni di Internet: Cosa non ha funzionato e perché

Leggo molti documenti tecnico-scientifici per lavoro e, in parte, per "piacere". Molti sono interessanti, alcuni molto interessanti. E' raro che trovi un documento che mi appare illuminante. Questo indicato sotto è uno dei pochi documenti in questa categoria. Sembra banale, in quanto è molto discorsivo e parla di molte cose note: IP, DNS, NAT.... In realtà è profondissimo. Una miniera di riflessioni profonde, sintetiche, focalizzate ed, appunto, illuminanti. A mio parere imperdibile per chiunque abbia un qualche interesse negli aspetti tecnici di Internet. Chi non ha la pazienza di leggerlo per intero, legga almeno gli ultimi due paragrafi. Failed Expectations (l'autore, Geoff Houston , fa parte della Internet Hall of Fame )

ChatGPT: supererebbe il mio esame di Reti di Calcolatori?

Molto probabilmente chi ha a che fare con i corsi di laurea scientifici e tecnologici, come me, ha preso atto della notizia che ChatGPT ha superato esami universitari in giurisprudenza ed economia con un pò, diciamo così, di sufficienza. Pensando "da noi non potrebbe mai succedere; figuriamoci". E' quello che ho pensato io. Poi però ho fatto a ChatGPT qualche domanda di Reti di Calcolatori. Ho quasi cambiato idea. "Quasi" perché nello scritto di Reti di Calcolatori faccio sempre esercizi. Pur non avendoli sottoposti a ChatGPT sono certo che questi esercizi non li sa risolvere. Ma alle "domande tipiche da orale" ha fornito risposte che mi hanno davvero stupefatto. Riporto qui sotto solo un esempio di "dialogo", relativo a validazione di firma digitale e certificati auto-firmati. Risposte sostanzialmente corrette e pertinenti, molto più sintetiche e focalizzate di quelle che ricevo normalmente. E più rapide. Alla fine ha riconosciuto di esser