UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Approximate Sequence Matching: Implementazione e Analisi Prestazionale Comparata di Tecniche Portabili e Efficienti Tesi di Laurea di: Marcello Pietri Relatore: Prof. Riccardo Martoglia Introduzione Ambito di ricerca: Approximate Sequence Matching (Ricerca di tutte le corrispondenze approssimate tra un pattern e un testo, intendendo come testo e pattern una sequenza di simboli quali lettere, parole, nucleotidi, basi azotate, amminoacidi, etc...) Esempio: Trovare due frasi (pattern) all'interno di un libro (testo) pattern 1: “randomly choose two” pattern 2: “the arithmetic from n” Introduzione Approximate Sequence Matching (Specifica applicazione) Example Based Machine Translation (Sistema che fornisce suggerimenti tradotti per analogia, utilizzando le traduzioni passate per tradurre altre frasi dalla lingua sorgente alla lingua destinazione) Esigenza di immagazzinare ed interrogare grandi quantità di dati in modo efficiente DataBase Management System (Sistema per la gestione di una base di dati) Obiettivo della tesi Obiettivi della tesi: Analisi del software La progettazione del software Implementazione di tecniche portabili Estensione del sistema per il supporto a diversi DBMS (Oracle 9.2, MySQL 4,5, 5.1 e 6 , FireBird 2.1, MonetDB 5, PostgreSQL 8.2 e 8.3) Ricerca di similarità Tecniche di stemming Installazione e interfaccia utente Analisi prestazionale comparata Efficienza di inserimento dei dati Efficienza di copertura della Translation Memory Efficienza di ricerca utilizzando vari DBMS Confronto con altre tecniche di Approximate Sequence Matching Suffix tree e Suffix array Problematiche affrontate nella tesi Analisi del software Il progetto con Unified Modelling Language Implementazione di tecniche portabili Installazione e interfaccia grafica Analisi prestazionale comparata Analisi del software EXample-based TRanslation Assistant È un software EBMT sviluppato da ISGroup presso l'Università di Modena, che implementa tecniche di Approximate Sequence Matching basate su metriche di Edit Distance e algoritmi di ricerca basati su query SQL Funzionamento del sistema: Analisi del software Il processo di stemming, ovvero l'eliminazione di parole insignificanti al fine semantico e la trasformazione delle altre in un formato standard, richiede l'accesso a grandi quantità di dati memorizzate sotto forma di tabelle nel DBMS Esempio: Analisi del software La struttura del software Metrica di similarità tra frasi Flessibile (stemming) Similarità sintattica (edit distance) Similarità semantica (word sense disambiguation) Algoritmi di ricerca di similarità tra frasi Completi (whole-match e sub2-match) Efficienti (filtri ed indici ad hoc) Basati su query SQL (Java, DBMS) Algoritmi di allineamento Allineamento frasi e parole Automatici Ambiente integrato Strumenti per gestione ed analisi Translation Memory Interfaccia utente grafica Problematiche affrontate nella tesi Analisi del software Il progetto con Unified Modelling Language Implementazione di tecniche portabili Installazione e interfaccia grafica Analisi prestazionale comparata Il progetto con UML La struttura del software LE MODIFICHE Metrica di similarità tra frasi Flessibile (stemming) Similarità sintattica (edit distance) Similarità semantica (word sense disambiguation) Algoritmi di ricerca di similarità tra frasi Completi (whole-match e sub2-match) Efficienti (filtri ed indici ad hoc) Basati su query SQL (Java, DBMS) Algoritmi di allineamento Allineamento frasi e parole Automatici Ambiente integrato Strumenti per gestione ed analisi Translation Memory Interfaccia utente grafica Il progetto con UML La raccolta dei Requisiti Funzionali RF01– Portabilità sui vari DBMS RF02– Selezione delle impostazioni RF03– Importazione dei dati Stemmer RF04– Verifica dei dati Stemmer RF05– Creazione dell'interfaccia grafica Scenario d'uso RF06– Settaggio di User e Password RF07– Salvataggio dei parametri nel file di configurazione RF08– Caricamento del file di configurazione RF09– Informazioni sui vari DBMS Activity Diagram Problematiche affrontate nella tesi Analisi del software Il progetto con Unified Modelling Language Implementazione di tecniche portabili Installazione e interfaccia grafica Analisi prestazionale comparata Implementazione di tecniche portabili La portabilità Il problema della portabilità è stato analizzato in vari punti e suddiviso in due grandi classi: Portabilità per la fase di ricerca: 1. 2. 3. 4. Java Inside e Java Outside (Inclusione di codice Java in Oracle JI) Le connessioni (Il driver per la connessione non può essere statico) L'SQL (Il codice SQL differisce tra un DBMS e l'altro) Altri casi particolari (MonetDB e FireBird) Portabilità per la fase di stemming: 1. Da SQLJ a JDBC (Il codice SQLJ non è portabile su tutti i DBMS) 2. Importazione dei dati (I dati da inserire devono essere uniformi) Implementazione di tecniche portabili Prima - dopo Problematiche affrontate nella tesi Analisi del software Il progetto con Unified Modelling Language Implementazione di tecniche portabili Installazione e interfaccia grafica Analisi prestazionale comparata Installazione e interfaccia utente Installazione e interfaccia utente La necessità di importare dati all'interno del DBMS utilizzato, per consentire il funzionamento del processo di Stemming, ha portato alla stesura di una nuova interfaccia grafica, così da renderlo possibile in modo veloce e trasparente. Installazione e interfaccia utente L'introduzione di nuove caratteristiche, quali la selezione di user e password, la possibilità di salvare i dati su file di configurazione e la visione di informazioni sui vari DBMS, ha portato infine alla completa configurabilità del programma. Problematiche affrontate nella tesi Analisi del software Il progetto con Unified Modelling Language Implementazione di tecniche portabili Installazione e interfaccia grafica Analisi prestazionale comparata Analisi prestazionale comparata Analisi prestazionale comparata Efficienza nell'inserimento dei dataset con diversi DBMS Efficienza nell'interrogazione sui dataset con diversi DBMS Efficienza di copertura della Translation Memory Confronto con altre tecniche implementative Scelta dei dataset: “NVIDIA” (da 610 a 890 frasi per file; circa 14.000 parole). “Deluxe Paint” (da 107 a 400 frasi per file; circa 55.000 parole). “DNA” (dataset genetico; 3190, 3190, 357 e 3296 simboli per file). “WhirlPool” (650.000 parole; il libro “Moby Dick” ne contiene 218.551 ). Analisi prestazionale comparata DBMS Efficienza nell'inserimento dei dati Nome del DBMS Tempo totale “Stemming ON” Tempo totale “Stemming OFF” Tempo totale Oracle 9i 1946719 989610 2936329 MySQL 4 (*) 15241734 26211273 41453007 MySQL 5 (*) 23832602 38611392 62443994 MySQL 5 lx 1209582 766336 1975918 MySQL 6 (*) 22276088 29002531 51278619 Postgres 8.2 3048170 1039421 4087591 Postgres 8.3 3087416 1049683 4137099 Postgres 8.3 lx 1400704 940126 2340830 Firebird 2.1 (*) 5625232 2860371 8485603 Or acle 9i MySQL 4 ( *) MySQL 5 ( *) MySQL 5 lx MySQL 6 ( *) Postgr es 8.2 Postgr es 8.3 Tempo totale “Stemming ON” Tempo totale “Stemming OFF” Tempo totale Postgr es 8.3 lx Fir ebir d 2.1 ( *) 0 10000000 20000000 30000000 40000000 50000000 60000000 Tempo ( ms) Analisi prestazionale comparata Efficienza di copertura della Translation Memory Translation Memory Tm incrementata R. 1541 R. 1541,2313 R. 1541,2313,2880 R. 1541,2313,2880,2960 Tm costante R. 1541 R. 1541 R. 1541 R. 1541 FILE FULL time SUB time 11860 42766 3797 16250 743 846 856 890 580 653 779 779 92 108 36 58 71 85 41 53 Readme2313 Readme2880 Readme2960 Readme3123 4469 5468 5125 5687 11860 30421 31860 35609 743 846 856 890 580 556 554 546 92 158 163 187 71 132 139 157 TM costante 900 900 800 800 700 700 600 600 Numero di risultati Numero di risultati 1000 500 Tempi con TM incrementata 70000 60000 50000 40000 30000 200 500 Tempi con TM costante 70000 400 60000 50000 300 40000 30000 200 20000 100 SUB NO 4469 14593 27406 42078 TM incrementata 300 FULL Readme2313 Readme2880 Readme2960 Readme3123 1000 400 N° FRASI 20000 100 10000 10000 0 0 0 0 R. 1541 R. 1541,2313 R. 1541,2313,2880 File/s in TM R. 1541,2313,2880,2960 R. 1541 R. 1541 R. 1541 File/s in TM Analisi prestazionale comparata Efficienza di interrogazione - DP DB - file STEM FULL time SUB time Full tim e prop. Sub tim e prop. N°frasi (ms) (ms) (Toll. 5% ) (Toll. 5% ) FULL SUB NO Oracle 9i JI Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 1234 46 6578 219 3344 109 25499 1047 100% 100% 100% 100% 100% 100% 100% 100% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 MySQL 4 Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 3375 172 15078 884 10140 734 62953 7796 273,50% 373,91% 229,22% 403,65% 303,23% 673,39% 246,88% 744,60% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 MySQL 5 Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 9718 203 49942 957 8847 594 52307 6290 787,52% 441,30% 759,23% 436,99% 264,56% 544,95% 205,13% 600,76% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 MySQL 6 Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 9912 229 50785 1078 8739 601 51123 6216 803,24% 497,83% 772,04% 492,24% 261,33% 551,38% 200,49% 593,70% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 FireBird 2.1 Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 11563 156 89281 657 4110 219 26685 1484 937,03% 339,13% 1357,27% 300,00% 122,91% 200,92% 104,65% 141,74% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 Analisi prestazionale comparata Efficienza di interrogazione - DP DB - file STEM FULL time SUB time (ms) (ms) (Toll. 5% ) (Toll. 5% ) Full tim e pr op. Sub tim e pr op. N°frasi FULL SUB NO Oracle 9i JI Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 1234 46 6578 219 3344 109 25499 1047 100% 100% 100% 100% 100% 100% 100% 100% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 Oracle 9i JO Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 1219 47 6109 203 3359 109 25469 1047 98,78% 102,17% 92,87% 92,69% 100,45% 100,00% 99,88% 100,00% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 Postgres 8.2 Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 1250 109 4172 328 3504 172 26631 1098 101,30% 236,96% 63,42% 149,77% 104,78% 157,80% 104,44% 104,87% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 Postgres 8.3 Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 1294 140 4219 343 3506 219 25860 1215 104,86% 304,35% 64,14% 156,62% 104,84% 200,92% 101,42% 116,05% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 MySQL 5 (LX) Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 3444 94 60121 434 2655 55 22907 708 279,09% 204,35% 913,97% 198,17% 79,40% 50,46% 89,83% 67,62% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 Postgres 8.3 (LX) Dp5-100 Dp5-100 Dp5 Dp5 OFF ON OFF ON 1017 65 3996 257 2718 76 20500 836 82,41% 141,30% 60,75% 117,35% 81,28% 69,72% 80,40% 79,85% 107 107 400 400 9 7 53 48 53 18 242 119 45 82 105 233 Analisi prestazionale comparata Efficienza di interrogazione - DP Analisi prestazionale comparata Efficienza di interrogazione - WHIRL Whirl - Tempi totali 5000000 DB – file 4500000 STEM FULL time SUB time Full time prop. Sub time prop. N° frasi FULL SUB NO (Toll. 5%) (Toll. 5%) 100% 100% 100% 100% 4000000 Oracle 9i JI OFF ON 1083641 100719 63329 7172 267 267 202 202 62 55 3 10 3500000 Postgres 8.2 OFF ON 1002594 102014 38546 6703 92,52% 60,87% 101,29% 93,46% 267 267 202 202 62 55 3 10 OFF ON 74734 2171 105157 3344 6,90% 3,43% 104,41% 46,63% 267 267 202 202 62 55 3 10 Postgres 8.3 OFF ON 113861 4148 99047 2925 10,51% 6,55% 98,34% 40,78% 267 267 202 202 62 55 3 10 MySQL 5 (LX) OFF ON 4812953 68395 84934 2431 444,15% 108,00% 84,33% 33,90% 267 267 202 202 62 55 3 10 Postgres 8.3 (LX) OFF ON 112953 1373 99806 2509 10,42% 2,17% 99,09% 34,98% 267 267 202 202 62 55 3 10 3000000 2500000 Tem po (m s) Oracle 9i JO 2000000 1500000 1000000 500000 0 I ) X) O .2 .3 ( LX 9i J s8 s8 3 (L 9i J . 5 e e e l 8 e r r l L c c tg tg es SQ Or a Or a tg r Pos Pos My Pos DBMS Analisi sperimentale Efficienza di interrogazione - NV DB – file STEMMING FULL time SUB time Full tim e prop. Sub tim e prop. (ms) (ms) (Toll. 5% ) (Toll. 5% ) N° frasi FULL SUB NO Oracle 9i JI Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 4469 937 5468 859 5125 875 5687 984 11860 1016 30421 2094 31860 2188 35609 2282 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 Oracle 9i JO Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 5656 860 5450 985 5119 969 5153 875 12188 938 30469 2109 32004 2188 36327 2281 126,56% 91,78% 99,67% 114,67% 99,88% 110,74% 90,61% 88,92% 102,77% 92,32% 100,16% 100,72% 100,45% 100,00% 102,02% 99,96% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 Postgres 8.2 Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 3719 1187 4063 1125 4078 1093 4266 1078 12214 964 31897 2195 32676 2240 37186 2389 83,22% 126,68% 74,31% 130,97% 79,57% 124,91% 75,01% 109,55% 102,98% 94,88% 104,85% 104,82% 102,56% 102,38% 104,43% 104,69% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 Postgres 8.3 Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 4656 1250 4312 1234 4361 1234 4219 1187 11252 965 28728 2055 31579 2272 35425 2367 104,18% 133,40% 78,86% 143,66% 85,09% 141,03% 74,19% 120,63% 94,87% 94,98% 94,43% 98,14% 99,12% 103,84% 99,48% 103,72% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 Analisi prestazionale comparata Efficienza di interrogazione - NV DB – file STEMMING FULL time SUB time Full tim e pr op. Sub tim e pr op. N° frasi (ms) (ms) (Toll. 5% ) (Toll. 5% ) FULL SUB NO MySql 5 (LX) Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 36889 920 33252 1297 35413 918 37034 847 10074 656 30604 1518 25875 1590 30229 1660 825,44% 98,19% 608,12% 150,99% 690,99% 104,91% 651,20% 86,08% 84,94% 64,57% 100,60% 72,49% 81,21% 72,67% 84,89% 72,74% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 Postgres 8.3 (LX) Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 6086 720 10851 853 6182 845 5969 1371 9162 683 23800 1597 25035 1745 28406 2356 136,18% 76,84% 198,45% 99,30% 120,62% 96,57% 104,96% 139,33% 77,25% 67,22% 78,24% 76,27% 78,58% 79,75% 79,77% 103,24% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 FireBird 2.1 Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 32891 3078 39828 3172 40187 3140 40656 3141 15275 2988 38671 6078 39625 6172 43937 6438 735,98% 328,50% 728,38% 369,27% 784,14% 358,86% 714,89% 319,21% 128,79% 294,09% 127,12% 290,26% 124,37% 282,08% 123,39% 282,12% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 MySql 6 Readme2313 Readme2313 Readme2880 Readme2880 Readme2960 Readme2960 Readme3123 Readme3123 OFF ON OFF ON OFF ON OFF ON 70391 18000 83953 16110 78577 16387 87203 18451 18687 7578 45696 15519 48331 16215 54108 16942 1575,10% 1921,02% 1535,35% 1875,44% 1533,21% 1872,80% 1533,37% 1875,10% 157,56% 745,87% 150,21% 741,12% 151,70% 741,09% 151,95% 742,42% 743 743 846 846 856 856 890 890 580 571 556 546 554 545 546 543 92 51 158 85 163 86 187 98 71 121 132 215 139 225 157 249 Analisi prestazionale comparata Efficienza di interrogazione - NV NV - Tempi Totali, stemming OFF ON 250000 200000 Tempo stemming OFF Tempo stemming ON Tempo TOTALE Tempo (ms) 150000 100000 50000 0 le Orac 9i JI le Orac 9i JO gres Post 8. 2 gres Post 8. 3 LX) ( QL 5 MyS P es 8. ostgr 3 (LX ) DBMS Analisi prestazionale comparata Confronto con altre tecniche di Approximate Sequence Matching - DNA e DP - Extra vs ACGT File LMINSUB AA1-60 AA1-120 DNA-3 DNA-4 DP3-5 File AA1-60 AA1-120 DNA-3 DNA-4 DP3-5 10 15 25 10 15 25 3 6 10 10 15 25 4 6 6 LMINSUB KINT 10 15 25 10 15 25 3 6 10 10 15 25 4 6 6 1 1 2 1 1 2 1 1 1 1 1 2 1 1 2 KINT 1 1 2 1 1 2 1 1 1 1 1 2 1 1 2 SUB time Sub tim e prop. SUB time Sub tim e prop. SUB time (ms) (Toll. 5% ) (ms) (Toll. 5% ) (ms) (Toll. 5% ) Oracle 9i JO 35935 20171 22547 237391 198187 203609 21000 21015 20547 294273 287991 268740 1813 311 732 1634262 Oracle 9i JO 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% 100,00% Oracle 9i JI 36047 20219 22734 237688 197812 203985 21000 20938 21171 295484 288531 269469 2063 312 735 1638188 Oracle 9i JI 100,31% 100,24% 100,83% 100,13% 99,81% 100,18% 100,00% 99,63% 103,04% 100,41% 100,19% 100,27% 113,79% 100,32% 100,41% 100,24% Postgres 8.2 36281 20281 23047 237781 198984 205187 21015 20891 20532 295884 290032 270083 1360 203 468 1642029 Postgres 8.2 100,96% 100,55% 102,22% 100,16% 100,40% 100,78% 100,07% 99,41% 99,93% 100,55% 100,71% 100,50% 75,01% 65,27% 63,93% 100,48% SUB time Sub time prop. SUB time (ms) (Toll. 5%) (ms) Extra, Oracle 9i JO Oracle 9i JO ACGT, Suffix-Array 35935 100,00% 47110 20171 100,00% 41797 22547 100,00% 75969 237391 100,00% 177875 198187 100,00% 175922 203609 100,00% 426172 21000 100,00% 8453 21015 100,00% 8109 20547 100,00% 7843 294273 100,00% 88765 287991 100,00% 85781 268740 100,00% 305547 1813 100,00% 221578 311 100,00% 161688 732 100,00% 290094 1634262 100,00% 2122703 Sub time prop. (Toll. 5%) Suffix-Array 131,10% 207,21% 336,94% 74,93% 88,77% 209,31% 40,25% 38,59% 38,17% 30,16% 29,79% 113,70% 12221,62% 51989,71% 39630,33% 129,89% Sub tim e prop. Conclusioni e sviluppi futuri Conclusioni: Studio e analisi di algoritmi innovativi per la ricerca di similarità tra frasi; Studio e analisi di algoritmi di Stemming; Studio, implementazione e analisi di tecniche per la connessione a DBMS; Studio, installazione e analisi di numerosi DBMS; Sviluppo ed implementazione della portabilità su tutti i DBMS installati; Sviluppo ed implementazione dell'interfaccia grafica; Effettuazione e commento di numerose analisi prestazionali; Studio e analisi di nuovo software per la comparazione in analisi. Sviluppi futuri: Sviluppare il software per l'utilizzo con altre lingue; Ottimizzare ulteriormente le prestazioni inserendo procedure Pg/SQL; Implementare un metodo basato sulle tecniche sviluppate in Extra, specifico per l'ambito di ricerca genetica. GRAZIE A TUTTI DELL'ATTENZIONE