Upload
marco-potok
View
216
Download
2
Embed Size (px)
Citation preview
ANALISI DELLE DIFFERENZE STRUTTURALI NELLE ESPRESSIONI REGOLARI
COSTRUITE DA PROGRAMMATORI E DA STRUMENTI AUTOMATICI
Laureando
Marco PotokRelatore
Prof. Alberto Bartoli
Correlatore
Prof. Eric Medvet
UNIVERSITÀ DEGLI STUDI DI TRIESTE
Dipartimento di ingegneria e architetturaCorso di laurea triennale in Ingegneria dell’Informazione
Obbiettivo della tesi
Caratterizzare i punti deboli delle espressioni
regolari costruite automaticamente
• analizzando la loro struttura
• confrontandole con le espressioni costruite da
programmatori.
Motivazione
Parte della ricerca condotta dal Machine Learning Lab dell’Università di Trieste.
La ricerca si occupa della generazione automatica di espressioni regolari a partire da esempi del comportamento desiderato.
Espressione regolare (I)
• È una stringa (sequenza di caratteri)
• Descrive in maniera compatta un pattern sintattico
• Identifica un insieme di stringhe
• Numeri di telefono in un testo
• Indirizzi IP in un file di log
• …
Spesso chiamata regex dall’inglese regular expression
Espressione regolare (II)
È di buona qualità quando:
• È di lunghezza contenuta
• Identifica tutte le stringhe volute
Metodo di Analisi (I)
I dati analizzati sono stati ottenuti dallo svolgimento
degli stessi 9 task da parte di 1724 programmatori
e dallo strumento automatico.
Data-set composto da:
• 12000 campioni macchina
• 9842 campioni umani
• Ascisse: lunghezza
(scala log.)
• Ordinate: densità
(normalizzata)
Lunghezza (I)
La macchina tende a generare espressioni più corte
Blocchi base (I)
Differenze più evidenti:
• L’utente macchina usa più classi
• es. “[A-Z0-9]”
• L’utente programmatore usa più costanti
• es. “http”
Uomo Macchina
Quindi...
Lo strumento automatico
• Tende a generare espressioni più corte
MA
• Usa più classi e meno costanti• Negli ultimi 4 task tende a generalizzare più
dell'umano costruendo espressioni lunghe
Ulteriore analisi (I)
I dati sono divisi in due gruppi
Primo gruppo:• Comprende i task 1-5• La macchina genera espressioni corte
Secondo gruppo:• Comprende i task 6-9• La macchina genera espressioni lunghe
Ulteriore analisi (II)
Nel secondo gruppo:• Ancora più classi• Ancora meno costanti
Uomo Macchina Uomo Macchina
Conclusioni
Lo strumento automatico:• Tende a generare espressioni regolari più
corte rispetto a quelle costruite dai programmatori
• Usa più classi e meno costanti per la costruzione delle espressioni
• Nei task più complicati l’uso delle classi aumenta causando un aumento della lunghezza dell’espressione
Sviluppi futuri
• Individuazione delle caratteristiche dei task che causano un aumento della lunghezza
• Analisi più approfondita dell’eventuale correlazione tra lunghezza, uso dei blocchi base e qualità dell’espressione