Basi di dati multimediali 1 Basi di dati multimediali Nuove applicazioni richiedono la rappresentazione e la gestione di dati non tradizionali: – – – – – 2 testi arbitrari immagini audio video dati tradizionali (relazionali, orientati ad oggetti) Basi di dati multimediali Un sistema di gestione dati multimediali (MMDBMS) permette la rappresentazione e la gestione di diversi tipi di dati, potenzialmente rappresentati secondo diversi formati Un MMDBMS deve permettere di: – – – – 3 rappresentare dati corrispondenti a diverse tipologie di media interrogare dati rappresentati in formati diversi in modo uniforme interrogare dati in formati diversi simultaneamente nel contesto della stessa query recuperare gli oggetti dal supporto su cui risiedono, compatibilmente con il tipo di media che rappresentano MMDBMS: aspetti da considerare Rappresentazione – – – i dati sono tipicamente non strutturati si vuole analizzare il contenuto come è possibile rappresentare il contenuto di un documento multimediale? Query – 4 Come si fa a capire che un’immagine contiene una certa persona – un linguaggio di query per MMDBMS deve avere caratteristiche particolari query processing deve analizzare il contenuto degli oggetti MMDBMS: aspetti da considerare Memorizzazione: – – quali supporti utilizzare? (dischi, CD-ROM, nastri) che operazioni supportare: non solo lettura/scrittura ma anche (video/audio) – playback – rewind – fast foward – pause Indici: – come indicizzare gli oggetti multimediali? 5 Analizzeremo solo i primi due aspetti Rappresentazione 6 Un oggetto multimediale in genere può essere composto da diversi sotto-oggetti, ciascuno relativo ad un particolare media le relazioni tra oggetti e sotto-oggetti possono essere modellate utilizzando un approccio orientato ad oggetti o relazionale ad oggetti rimane il problema di come rappresentare il contenuto di un oggetto corrispondente ad un singolo media Rappresentazione Nelle basi di dati relazionali ad oggetti, i dati multimediali vengono memorizzati secondo due distinte modalità: – – 7 internamente al sistema come valori non strutturati in campi LOB (Large Object) esternamente al sistema, mantendo all’interno del DBMS solo il riferimento alla posizione del file Rappresentazione DBMS Oggetto multimediale LOB riferimento 8 Oggetto multimediale Rappresentazione - LOB 9 Facilitano la memorizzazione di dati multimediali (documenti, immagini, audio, ecc.) Possono contenere fino a 4GB di dati (di solito i RDBMS non vanno oltre 2-32KB) Il DBMS non associa alcuna interpretazione a questi dati Rappresentazione - LOB Si distinguono in: – – 10 BLOB (Binary Large Object) CLOB (Character Large Object) Supportati da SQL-99 Sono fisicamente memorizzati esternamente alle tabelle ma internamente al DB (comportamento transazionale) Rappresentazione - ORDBMS Gli ORDBMS forniscono inoltre nuovi tipi di dato complessi che supportano: – – – 11 la rappresentazione del dato multimediale nuovi metodi & operatori metodi per l’ottimizzazione di interrogazioni Rappresentazione - ORDBMS 12 Illustra/Informix DataBlade IBM Database Extender Oracle Oracle Intermedia Librerie fornite da terze parti Rappresentazione 13 In entrambe le soluzioni di rappresentazione introdotte, gli oggetti sono completamente non strutturati per poterli interrogare in modo ragionevole, è necessario sovraimporre a ciascun oggetto una rappresentazione concettuale la rappresentazione concettuale è costituita da un insieme di dati strutturati che descrivono l’oggetto multimediale (surrogato) dal punto di vista della struttura e del contenuto semantico ogni oggetto dello stesso tipo sarà descritto dallo stesso tipo di surrogato il surrogato del documento non descrive pienamente il contenuto informativo del documento ma costituisce una sua sintesi i surrogati rappresentano gli oggetti sui quali definire le tecniche di indice Rappresentazione Spesso il surrogato si ottiene associando a ciascun oggetto un insieme di attributi due tipi di attributi: – descrittivi – content-based (anche chiamati features) 14 associano informazioni descrittive (relazionali) a ciascun oggetto vengono associati manualmente all’oggetto associano informazioni relative al contenuto vengono estratti direttamente dal sistema entrambi i tipi di attributi si possono interpretare come una sorta di metadati i metadati associati ad un documento multimediale dipendono dal tipo di media considerato Esempio Attributi descrittivi nome: Villa Medici località:Roma Features: forma: 15 Rappresentazione Oggetti multimediali Generazione metadati (automatica + manuale) Features + attributi I sistemi mettono a disposizione funzionalità per estrarre feature e per utilizzare tali feature nel contesto delle interrogazioni 16 Rappresentazione Conseguenza – – – i documenti multimediali potranno essere confrontati solo rispetto agli attributi e alle feature feature uguali non sempre si riferiscono ad oggetti uguali Esempio si puo’ riferire sia ad una villa che ad un’industria 17 Query Due aspetti – – è necessario stabilire: – – 18 definizione caratteristiche linguaggio di interrogazione query processing approccio generale all’esecuzione delle query aspetti che devono essere supportati Idea di base query processing Generazione metadati Oggetti multimediali 2 Features + attributi 1 3 Meccanismo di interrogazione 19 La query viene eseguita sui metadati (attributi + features) dai metadati si risale ai documenti originali i documenti originali vengono restituiti all’utente Aspetti da supportare Le query devono potere essere eseguite su diversi tipi di media contemporaneamente devono considerare attributi e features devono supportare query per similitudine devono associare un valore di rilevanza ad ogni oggetto restituito devono poter essere pesate devono supportare query spazio-temporali 20 Attributi e feature Le query interrogano gli oggetti multimediali considerando gli attributi e le feature ad essi associati Esempio: ritrova tutte le immagini di abitazioni importanti in Liguria – – 21 assumo di avere estratto le forme dalle immagini assumo di avere associato informazione descrittiva (luogo, tipo abitazione) Query per similitudine Poiché il contenuto degli oggetti viene espresso attraverso features e poiché le feature non rappresentano pienamente il contenuto semantico di un oggetto, le condizioni di selezione sugli oggetti multimediali non sempre sono certe ciò significa che le condizioni non sono in generale condizioni di uguaglianza ma di similitudine – 22 le condizioni in genere sono verificate in una certa misura, data dalla similitudine tra ciò che stiamo cercando e ciò che abbiamo trovato Query per similitudine il linguaggio deve permettere di esprimere query di questo tipo il query processing deve essere in grado di supportare tali tipi di query Query: determina tutte le immagini in cui appare una certa persona, presente in una specifica foto – – 23 difficilmente verranno restituite tutte le immagini che contengono questa persona molto probabilmente verranno trovate anche immagini in cui compaiono persone che, per qualche motivo (dipende dalle feature considerate) assomigliano alla persona cercata Ranking 24 Una conseguenza della necessità di eseguire query per similitudine è quello di decidere i criteri di rilevanza di un oggetto rispetto ad una interrogazione: ranking Il ranking è un ordinamento degli oggetti restituiti da una interrogazione che riflette il grado di rilevanza dei documenti rispetto all’interrogazione I criteri per effettuare il ranking dipendono dal media considerato Esempio: ritrova le 5 immagini in cui più probabilmente appare una certa persona, presente in una specifica foto – in questo modo, si aumenta la certezza del risultato Query pesate In alcuni casi può essere utile pesare le varie condizioni nel contesto di una query questo permette di associare un livello di importanza alla condizione nel determinare la similarità degli oggetti Esempio: determinare le immagini che – – 25 contengono una persona (0.7) non contengono alberi (0.3) la similarità viene pesata Query spazio-temporali Necessità di interrogare relazioni spazio-temporali esistenti tra gli oggetti relazioni spaziali: associano le feature associate ad un oggetto da un punto di vista spaziale – – – relazioni temporali: associano le feature associate ad un oggetto da un punto di vista temporale – 26 importante per immagini/testo in un’immagine, relaziono le forme che compaiono rispetto alla loro posizione (vicino, lontano, a destra, a sinistra) in un testo, relaziono il contenuto (prima, dopo) – importante per audio/video sequenze audio/video: prima, dopo, subito prima, subito dopo, contemporaneamente Due approcci alla specifica delle query Si definisce un linguaggio di query – – query by example: – – – 27 ad esempio, si estende SQL con condizioni specifiche da applicare ad oggetti multimediali tipico DBMS estesi alla gestione di dati multimediali si fornisce un oggetto di esempio e si vogliono determinare tutti gli oggetti simili esempio: si fornisce la fotografia del viso di una persona e si vogliono ritrovare tutti i visi simili tipico di sistemi dedicati alla gestione di un solo tipo di media Nel seguito ... Considereremo due media: – – per ciascuno illustreremo – – 28 testo immagini rappresentazione del contenuto query in alcuni sistemi Basi di dati testuali 29 Basi di dati testuali E’ un database in grado di memorizzare, gestire ed interrogare documenti testuali non strutturati L’obiettivo è di minimizzare il tempo necessario per localizzare le informazioni I risultati di una interrogazione sono ordinati in ordine decrescente di rilevanza – 30 Un documento è rilevante se l’utente che formula l’interrogazione giudica che il documento e l’interrogazione si riferiscono entrambi allo stesso argomento Basi di dati testuali L’enfasi è sulla caratterizzazione dei requisiti informativi dell’utente – 31 Ritrova tutti i documenti che contengono informazioni sulle squadre di tennis dei college americani che (1) hanno partecipato al torneo NCAA e (2) contengono informazioni sull’allenatore della squadra Basi di dati testuali I database di testi sfruttano tecniche sviluppate per i sistemi di Information Retrieval (IR) L’ambito dell’IR ha prodotto negli ultimi 20 anni: – – – 32 Modelli per la rappresentazione di documenti Architetture e linguaggi Interfacce e metodi di visualizzazione Nonostante questo l’area dell’IR è sempre stata di interesse limitato Basi di dati testuali L’avvento del Web ha cambiato le cose: – – – – 33 È un repository universale di conoscenza Accesso universale a costi ridotti Nessuna autorità centrale Il Web ha però introdotto nuove problematiche (ad es. bassa qualità di definizione e struttura delle informazioni): le tecniche di IR sono viste come una chiave per trovare le soluzioni Basi di dati testuali 34 Lo scopo è di reperire tutti e soli quei documenti che interessano l’utente Un sistema con tali caratteristiche non può però essere realizzato in pratica Per tale motivo si valuta un sistema tanto più efficiente quanto più e’ in grado di avvicinarsi a tale requisito Basi di dati testuali Due criteri di valutazione: – – 35 precisione (precision) richiamo (recall) Valutazione di una Interrogazione Rilevanti Restituiti Non rilevanti restituiti Rilevanti Non restituiti Non rilevanti Non restituiti Documenti contenuti nel database 36 Richiamo Il potere di richiamo è la percentuale di documenti rilevanti restituiti rispetto al totale di documenti rilevanti presenti nel sistema Rilevanti Restituiti Richiamo = Totale Rilevanti 37 Richiamo 38 Il potere di richiamo ideale è uguale ad uno In generale il potere di richiamo sarà un valore inferiore ad uno perché il numero di documenti pertinenti restituiti è inferiore al numero di documenti pertinenti presenti nel sistema Precisione La precisione è la percentuale di documenti rilevanti sul totale dei documenti restituiti Rilevanti Restituiti Precisione = Totale Restituiti 39 Precisione & Richiamo 40 La condizione ideale è avere il 100% di precisione e richiamo In generale, aumentando il numero di documenti restituiti si aumenta il potere di richiamo a spese della precisione Basi di dati testuali Due problemi principali: – – 41 Sviluppo di tecniche efficienti per la rappresentazione dei documenti all’interno del sistema Sviluppo di tecniche per la formulazione e l’esecuzione delle interrogazioni Rappresentazione di documenti testuali 42 Modellazione Estrazione di feature Database 43 Modellazione Nel caso di documenti testuali le feature sono i termini utilizzati come indici Gli indici possono essere: – – 44 Una parola chiave o un insieme di parole chiave Un insieme di concetti che caratterizzano il contenuto informativo del documento sia i documenti che le interrogazioni vengono rappresentati in termini di feature Modellazione - determinazione termini indice Docs stopwords Noun groups stemming Manual indexing structure structure 45 Full text Index terms Modellazione - determinazione termini indice 46 structure: struttura interna del documento (capitoli, sezioni, sottosezioni) stopwords: articoli e congiunzioni noun groups: si eliminano (o si raggruppano insieme ai sostantivi) aggettivi, avverbi, verbi stemming: ci si riduce a radice comune (es. plurale, singolare) Modellazione e query Docs Index Terms doc match Ranking Information Need 47 query Modellazione 48 Vedere il testo come un insieme di parole chiave è limitativo Questo causa spesso insoddisfazione da parte dell’utente Il problema è ulteriormente complicato dal fatto che spesso gli utenti non sono in grado di formulare interrogazioni che riflettono i loro requisiti informativi Ranking 49 Uno dei problemi più critici è quello di decidere i criteri di rilevanza di un documento rispetto ad una interrogazione Il ranking è un ordinamento dei documenti restituiti da una interrogazione che riflette il grado di rilevanza dei documenti rispetto all’interrogazione I criteri per effettuare il ranking dipendono dal modello adottato per rappresentare i documenti (e di conseguenza anche le query) Modelli Classic Models U s e r T a s k 50 Retrieval: Adhoc Filtering boolean vector probabilistic Structured Models Non-Overlapping Lists Proximal Nodes Browsing Browsing Flat Structure Guided Hypertext Modelli Classici – Concetti Base 51 Ogni documento è rappresentato da un insieme di termini indice rappresentativi Un indice è una parola utile per ricordare l’argomento del documento Solitamente gli indici sono dei nomi I motori di ricerca assumono che tutte le parole nel testo siano indici (rappresentazione full text) Modelli Classici – Concetti Base Non tutti i termini che compaiono in un documento sono egualmente rappresentativi del suo contenuto informativo: – 52 di solito i termini troppo frequenti non sono buoni candidati per diventare indici L’importanza di un indice è rappresentata da un peso ad esso associato Modelli Classici – Concetti Base Sia – – – 53 ki il termine indice dj un documento wij il peso associato a ki nel documento dj wij quantifica l’importanza dell’indice ki per descrivere il contenuto informativo del documento dj wij = 0 indica che ki non compare in dj Modelli Classici – Concetti Base 54 vec(dj) = (w1j, w2j, …, wtj) è il vettore di pesi associati al documento dj, dove t è il numero totale di indici gi(vec(dj)) = wij è una funzione che restituisce il peso di ki nel documento dj Modelli Classici – Concetti Base Si assume che i pesi degli indici siano indipendenti Questa assunzione è una semplificazione perché esistono delle correlazioni tra termini che compaiono in un documento Questo facilita la definizione dei pesi ma rende meno precisa la ricerca: – 55 Es: computer network Modello booleano E’ un modello semplice basato sulla teoria degli insiemi Le interrogazioni sono espressioni booleane – – – 56 Semantica precisa Formalismo consolidato q = ka (kb kc) Modello booleano I pesi assumono valori binari: – 57 wij {0,1} Un peso uguale a uno indica che il termine compare nel documento Un peso uguale a zero indica che il termine non compare nel documento Modello Booleano Si supponga: – La query può essere equivalentemente formulata come una disgiunzione di vettori della forma (ka,kb,kc) – 58 q = ka (kb kc) = (ka kb) (ka kc) vec(qdnf) = (1,1,1) (1,1,0) (1,0,0) I vettori vengono chiamati componenti congiuntive della query q (qcc) Modello Booleano - similarità sim(q,dj) = 1 se vec(qcc) | vec(qcc) vec(qdnf)) ki, gi(vec(dj)) = gi(vec(qcc))) 0 altrimenti Un documento viene restituito solo se la sua similitudine con l’interrogazione è pari ad uno 59 Modello Booleano Esempio: – – – 60 q=vec(qdnf) = (1,1,1) (1,1,0) (1,0,0) dj = (0,1,0,…….) non è rilevante per q anche se contiene il termine kb di = (1,1,0,….) è rilevante per q Modello booleano - svantaggi 61 Nessuna nozione di matching parziale Nessun meccanismo di ranking I bisogni informativi di un utente devono essere tradotti in una espressione booleana Le interrogazioni formulate dagli utenti sono spesso troppo approssimate Modello vettoriale 62 L’utilizzo di pesi binari è troppo limitante Pesi non binari consentono di attuare matching parziali I pesi sono usati per calcolare un grado di similitudine tra una interrogazione e ogni documento nella base di dati I documenti sono restituiti in ordine decrescente di similitudine (ranking) Modello vettoriale Sia i documenti che le interrogazioni sono rappresentate come dei vettori di pesi Si definisce: – – – – 63 wij > 0 quando ki dj wiq > 0 quando ki q vec(dj) = (w1j, w2j, ..., wtj) vec(q) = (w1q, w2q, ..., wtq) Modello Vettoriale Nel modello vettoriale sia la query che il documento sono rappresentati come dei vettori in uno spazio t-dimensionale (dove t è il numero complessivo di termini indice) j dj q i 64 Modello Vettoriale sim(q,dj) = cos() = [vec(dj) vec(q)] / |dj| * |q| = wij* wiq i 2 2 w ij * w iq i 65 i Modello vettoriale Dato che wij >= 0 and wiq >= 0: – 66 0 sim(q,dj) 1 Un documento è restituito anche se soddisfa solo parzialmente l’interrogazione si può decidere di restituire solo i documenti la cui similarità con la query supera una certa soglia Modello vettoriale - pesi Quali strategie adottare per computare i pesi wij e wiq? Un buon peso deve tener conto di due fattori: – Quanto un termine descrive il contenuto informativo di un documento – Quanto un termine compare all’interno di tutti i documenti nel db 67 Fattore tf, la frequenza di un termine all’interno di un documento Fattore idf, l’inverso della frequenza di un termine tra tutti i documenti considerati Modello vettoriale - pesi wij = tf(i,j) * idf(i) + tf(i,j) – + idf(i,) – – 68 + ki rilevante per dj - ki rilevante in generale termini che compaiono spesso in tutti i documenti non sono utili per distinguere un documento rilevante da uno non rilevante Modello vettoriale Sia: – – – Il fattore tf normalizzato è: – – f(i,j) = freq(i,j) / max(freq(l,j)) il massimo è calcolato su tutti i termini kl che compaiono in dj Il fattore idf è dato da: – – 69 N il numero totale di documenti nel db ni il numero di documenti che contengono ki freq(i,j) la frequenza di ki in dj idf(i) = log (N/ni) il log è usato per rendere comparabili i valori di tf e idf Modello vettoriale Il metodo più utilizzato è quello di usare come peso: – 70 wij = f(i,j) * log(N/ni) Tale strategia è chiamata schema di pesatura tf-idf Modello vettoriale Per i pesi da utilizzare nelle interrogazioni, Salton & Bucley propongono – 71 wiq = (0.5 + [0.5 * freq(i,q) / max(freq(l,q)]) * log(N/ni) Modello vettoriale Vantaggi: – – – Svantaggi: – 72 I pesi migliorano la qualità delle risposte alle interrogazioni Possibilità di matching parziale La formula per il ranking ordina i documenti in base alla rilevanza che hanno per l’interrogazione Considera tutti gli indici come indipendenti k2 k1 d2 d4 Esempio d7 d6 d5 d1 d3 k3 Pesi documenti e query booleani 73 d1 d2 d3 d4 d5 d6 d7 k1 1 1 0 1 1 1 0 k2 0 0 1 0 1 1 1 k3 1 0 1 0 1 0 0 q 1 1 1 q dj 2 1 2 1 3 2 1 k2 k1 d2 d4 Esempio d7 d6 d5 d1 d3 k3 Pesi documenti booleani, query non booleani 74 d1 d2 d3 d4 d5 d6 d7 k1 1 1 0 1 1 1 0 k2 0 0 1 0 1 1 1 k3 1 0 1 0 1 0 0 q 1 2 3 q dj 4 1 5 1 6 3 2 k2 k1 d2 d4 Esempio d7 d6 d5 d1 d3 k3 Pesi documenti e query non booleani 75 d1 d2 d3 d4 d5 d6 d7 k1 2 1 0 2 1 1 0 k2 0 0 1 0 2 2 5 k3 1 0 3 0 4 0 0 q 1 2 3 q dj 5 1 11 2 17 5 10 k2 k1 d2 d4 Esempio d7 d6 d5 d1 d3 k3 Calcoliamo TF-IDF per i documenti, supponendo contenuto celle = freq(i,j) d1 – – – per gli altri: – 76 K1: ((2/2)*(log (7/5)) = .33 K2: (0*(log (7/4))) =0 K3: ((1/2)*(log (7/3))) = .42 [.34 0 0], [0 .19 .85], [.34 0 0], [.08 .28 .85], [.17 .56 0], [0 .56 0] k2 k1 d2 d4 Esempio d7 d6 d5 d1 d3 k3 Calcoliamo TF-IDF per la query – – – 77 K1: (.5 + ((.5 * 1)/3))*(log (7/5))) K2: (.5 + ((.5 * 2)/3))*(log (7/4))) K3: (.5 + ((.5 * 3)/3))*(log (7/3))) quindi: [.22 .47 .85] Esempio Calcoliamo similarità per ogni documento sim(d1,q) – – – – 78 d1* q = (.33 * .22) + (0 * .47) + (.42 * .85) = .43 |d1| = sqrt((.33^2) + (.42^2)) = .53 |q| = sqrt((.22^2) + (.47^2) + (.85^2)) = 1.0 sim(d1,q) = .43 / (.53 + 1.0) = .28 d2: .06 d5: .46 d3: .43 d6: .19 d4: .06 d7: .17 Modello Probabilistico 79 L’obiettivo è quello di utilizzare tecniche di calcolo delle probabilità Data una interrogazione esiste sempre un insieme di documenti che costituiscono la risposta ideale La specifica dell’interrogazione consiste nel definire le caratteristiche della risposta ideale Modello Probabilistico 80 Il problema è capire quali sono tali caratteristiche All’inizio viene effettuata una ipotesi su quali queste caratteristiche possono essere Tale ipotesi viene poi raffinata durante un processo di iterazione Modello Probabilistico 81 Data una query q e un documento dj, il modello probabilistico cerca di stimare la probabilità che l’utente consideri il documento dj rilevante Il modello assume che tale probabilità dipenda solo dalla interrogazione e dal modo in cui il documento è rappresentato I documenti sono ordinati in ordine descrescente rispetto alla probabilità di rilevanza Non si tengono in considerazione i fattori tf e idf Modelli classici - confronto 82 Il modello Booleano è il meno potente in quanto non consente il matching parziale Risultati sperimentali indicano che il modello vettoriale ha prestazioni migliori del modello probabilistico Estrazione di Feature dal Testo Quattro fasi: – – – – 83 Analisi lessicale del testo Eliminazione delle “stopword” Normalizzazione delle parole rimanenti Selezione dei termini caratterizzanti (indici) Analisi lessicale L’obiettivo è quello di trasformare il testo da una sequenza di caratteri ad una sequenza di parole – – 84 Eliminazione della punteggiatura Conversione da maiuscolo a minuscolo Eliminazione delle stopword 85 Parole troppo frequenti nei documenti (ad esempio che compaiono in più dell’80% dei documenti) non sono utili per determinare il risultato di una interrogazione Esempi di stopword sono articoli, proposizioni e congiunzioni L’eliminazione delle stopword consente di ridurre notevolmente le dimensioni del documento originale L’eliminazione delle stopword può però ridurre il potere di richiamo: to be or not to be Normalizzazione (stemming) 86 Spesso l’utente specifica un termine in una query ma i documenti rilevanti ne contengono una sua variante La fase di normalizzazione sostituisce le varianti di una stessa parola con la loro radice comune (es: connesso, connettere, connessione,ecc.) Non esiste consenso comune sull’utilizzo della fase di normalizzazione Selezione degli indici Due alternative: – – full-text index: tutte le parole sono utilizzate per caratterizzare il contenuto informativo del documento selezione dei termini rilevanti: 1. Mediante un processo automatico 2. Tramite l’utilizzo di un Thesaurus 87 Selezione degli indici 88 Un metodo consolidato è quello di identificare gruppi di nomi all’interno del testo (es. computer science) Un gruppo di nomi è un insieme di nomi la cui distanza nel testo non supera una soglia predefinita (es: 3) Thesaurus Un thesaurus consiste di: – – 89 un insieme di vocaboli ed espressioni-chiave rilevanti per un particolare dominio un insieme di sinonimi per ogni vocabolo nell’insieme I thesauri sono di solito definiti da esperti del settore Thesaurus 90 La fase di indicizzazione e di ricerca avviene solo facendo riferimento ai termini del thesaurus L’utilizzo di thesauri è vantaggioso per domini in cui è possibile la standardizzazione dei termini di ricerca (esempio: ambito medico, legale,ecc.) Thesauri con reti semantiche In un thesaurus che utilizza una rete semantica i termini possono essere strutturati attraverso una rete di collegamenti concettuali Una relazione semantica puo’ essere: – – – 91 preferenziale gerarchica associativa Relazione preferenziale La relazione preferenziale rappresenta l’equivalenza (sinonimia) tra termini: – – 92 SP (sinonimo preferenziale) USA (è il contrario di SP) Allievo SP Alunno Alunno USA Allievo Relazione gerarchica La relazione gerarchica rappresenta la relazione di specializzazione che esiste tra i termini – – 93 TL (termine largo) TS (termine stretto) Veicolo TL Auto Auto TS Veicolo Il vertice della gerarchia si chiama TA (termine più ampio) Relazione associativa La relazione associativa esprime un legame biunivoco tra le componenti lessicali – La tipologia di relazione dipende dal contesto Esempi: – – – – – 94 RT (termine in relazione) antinomia: vittoria--sconfitta concomitanza: sintomo--malattia proprietà: trampolino--altezza inclusione: contenuto--contenente localizzazione: partita--stadio Reti semantiche 95 Un thesaurus con rete semantica rende più efficienti le interrogazioni perché consente di ricercare automaticamente i termini sinonimi, quelli più ampi o più ristretti ed i termini correlati Thesaurus 96 Per semplificare le ricerche al thesaurus è associato un indice inverso cioè una tabella che per ogni parola contenuta nel thesaurus contiene una lista dei documenti che la contengono Indice inverso termine documenti a 1,3,4,6,7 b 1,7 c 3,7 d 97 4,7 Indici inversi 98 Solitamente gli indici inversi vengono estesi per mantenere per ogni termine non solo i documenti che lo contengono ma anche il numero di occorrenze di tale termine nei vari documenti Architettura di riferimento Interfaccia utente traduttore indicizzazione DB manager Ricerca indice ordinamento 99 Text db Interrogazioni Due tipi fondamentali: – – 10 0 su stringhe, con caratteri jolly e sottostringhe con operatori booleani Interrogazioni su stringhe E possibile ricercare tutti i testi che contengono una certa parola, una sua “variante” o un suo sinonimo – – Varianti: – – – 10 1 comput? --> computa, computo,... comp* --> computer, compilato, compito, ecc. ricerca di frasi ricerche fuzzy ricerca per prossimità (insieme di parole e indicazione della distanza massima che devono avere all’interno del testo) Interrogazioni booleane I termini dell’interrogazione possono essere composti mediante gli operatori booleani: – – – Gli operatori booleani possono essere combinati: – 10 2 p1 AND p2 p1 OR p2 NOT p1 (p1 AND p2) OR (p3 AND p4) Sistemi di IR: esempi 10 3 DIALOG Corporation: offre più di 500 sistemi di IR su svariati argomenti, quali scienze, medicina, economia e giornali elettronici (www.dialog.com) LEXIS-NEXIS: ambito legale ed economico (www.lexis-nexis.com) OCLC (the online computer library center) offre l’accesso ad 1.5 milioni di articoli (www.oclc.org) H.W. Wilson: offre più di 40 sistemi di IR per scuole ed istituzioni pubbliche (www.hwwilson.com) Sistemi di IR: esempi 10 4 CA SEARCH: Chemical Abstract. Contiene 14 milioni di documenti con una frequenza di aggiornamento di 11.000 documenti alla settimana MEDLINE: indicizza articoli provenienti da 3.700 riviste mediche NewYork Times -- Fulltext: contiene tutte le edizioni del NewYork Times dal 1981 ad oggi PsycINFO: Psycological Abstract. Contiene 1.5 milioni di documenti riguardanti psicologia, sociologia, psichiatria, linguistica ed antroplogia dal 1887 fino ad oggi Gestione di testi in Oracle 9i Oracle 9i Text permette di – indicizzare testi e documenti memorizzati in Oracle 9i, in file del sistema operativo o URL, in maniera integrata con i dati relazionali tradizionali con possibilità di interrogazioni basate sul contenuto – 10 5 possibilità di utilizzare un thesaurus classificare documenti in base al loro contenuto vedremo solo il primo aspetto Gestione di testi in Oracle 9i Formati – – – – – Linguaggi – 10 6 File di testo HTML, XML documenti Word PDF … – per ricerche tematiche, inglese e francese possibilità di estendere i linguaggi caricando opportuni thesauri per il linguaggio di interesse Sviluppo applicazione testuale Caricamento documenti indicizzazione interrogazione – – 10 7 operatori thesauri Esempio 10 8 create table docs (id number primary key, text varchar2(80)); insert into docs values (1,'first document'); insert into docs values (2, 'second document'); create index doc_index on docs(text) indextype is ctxsys.context; select id from docs where contains(text, 'first') > 0; Rappresentazione documenti A B 10 9 C Rappresentazione documenti 11 0 A. Documento contenuto in un campo di tipo CHAR, VARCHAR, VARCHAR2, LONG, LONG RAW, BLOB, CLOB B. Campo di tipo BFILE C. Campo di tipo URIType la tabella deve avere una chiave primaria, utilizzata per identificare i documenti Caricamento documenti 11 1 Direttamente con statement INSERT SQL Loader procedure ad hoc OCI Indicizzazione documenti Oracle supporta diverse tipologie di indice – – – 11 2 CONTEXT, per ricerche su documenti arbitrari CTXCAT, per ricerche su documenti brevi e strutturati MATCHES, per classificazione documenti noi vedremo solo il tipo CONTEXT la creazione dell’indice è un passo necessario per l’esecuzione di interrogazioni sul documento Indice CONTEXT Determina i termini indice associati ad ogni documento – – 11 3 crea il surrogato organizza il surrogato come indice inverso Indicizzazione documenti comando per la creazione di indici create index INDEXNAME on TABLE(COLUMN) indextype is ctxsys.context il comando per default assume che: – – è possibile modificare le impostazioni di base, customizzando il comando CREATE INDEX – 11 4 la colonna sia di tipo A il linguaggio sia quello specificato durante l’installazione sistema di preferences Indicizzazione documenti 11 5 In generale, il comando di creazione di indice esegue un insieme di processi che creano oggetti intermedi per ogni processo è possibile specificare delle preferenze Indicizzazione documenti 11 6 Indicizzazione documenti - processi Datastore: scorre le righe della tabella e legge i dati della colonna, restituendo i dati contenuti nel documento Filter: prende i documenti restituiti dal datastore e li trasforma in una rappresentazione testuale – – 11 7 non necessaria per plain text, XML o HTML documenti Word, PDF, ecc. Vengono convertiti in un testo con mark-up (esempio HTML) Sectioner: divide l’informazione strutturale (markup) dal contenuto Lexer: suddivide il plain text in token (parole) e crea token tematici (in relazione alle preferenze specificate) Indexing engine: crea l’inverted index, eliminando stopword, contenute in STOPLIST e crea indici per stemming utilizzando informazioni in WORDLIST Indicizzazione documenti preferenze 11 8 per ciascun processo ci sono uno o più oggetti che rappresentano i possibili comportamenti in generale, gli oggetti sono raggruppati in classi: Indicizzazione documenti preferenze tali oggetti non possono essere usati direttamente negli indici: – – – 11 9 si crea una preference a partire da tali oggetti template la si personalizza settandone gli attributi si usa tale preference per creare l’indice Indicizzazione documenti Esempio ctx_ddl.create_preference('mypref', 'FILE_DATASTORE'); ctx_ddl.set_attribute('mypref', 'PATH', '/docs'); create index doc_index on docs(text) indextype is ctxsys.context parameters ('datastore mypref'); 12 0 Indicizzazione documenti preferenze nella clausola parameters si possono specificare più classi, semplicemente aggiungendo una coppia keyword-preference – 12 1 parameters('datastore mypref filter myfilter') questo meccanismo è usato per tutte le classi tranne SECTION GROUP e STOPLIST, che hanno una API propria esistono dei parametri utilizzati dal sistema di default (quelli per LEXER, WORDLIST e STOPLIST dipendono dal linguaggio) Datastore 12 2 DIRECT_DATASTORE (default) assume che il documento sia memorizzato direttamente nella colonna indicizzata, ne restituisce semplicemente il contenuto FILE_DATASTORE interpreta la colonna come un nome di file, lo apre e ne restituisce il contenuto URL_DATASTORE interpreta la colonna come un URL, effettua una GET e restituisce il contenuto ... Filter 12 3 NULL_FILTER (default) utilizzato quando il contenuto del documento non è in formato binario, passa semplicemente il testo dal datastore al sectioner CHARSET_FILTER converte i documenti da un insieme di caratteri straniero al character set del database USER_FILTER/PROCEDURE_FILTER filtering ad hoc (es. per convertire tutto in lettere maiuscole) in forma di procedura INSO_FILTER riconosce automaticamente e filtra oltre un centinaio di formati diversi, tra cui Word e Acrobat, producendo HTML come output Lexers BASIC_LEXER: per la maggioranza delle lingue europee, si può modificare il comportamento di default attraverso gli attributi – – – – 12 4 JOINS per specificare caratteri non alfanumerici da trattare come lettere valide PUNCTUATION per specificare i simboli di punteggiatura (importanti per sezioni SENTENCE e PARAGRAPH) per la normalizzazione del testo (es. accenti, maiuscole/minuscole, parole composte) per selezionare indicizzazione di testo o tematica Stoplist lista delle stopword, che non vengono considerate per l’indicizzazione API separata: ctx_ddl.create_stoplist('mylist'); ctx_ddl.add_stopword('mylist', 'the'); 12 5 stoplist di default, che dipendono dal linguaggio si possono aggiungere stopword all’indice senza doverlo ridefinire alter index myidx rebuild parameters ('add stopword AND'); stop classes (es. NUMBERS) e stop themes Wordlist non ha effetto sull’indicizzazione, ma contiene i setting per espansione stem e fuzzy dei termini utilizzati per rispondere alle interrogazioni un solo oggetto BASIC_WORLDLIST con attributi: – – – – 12 6 STEMMER (espansione di una parola a forme differenti, es. ENGLISH, ITALIAN, NULL) FUZZY_MATCH (considera parole mistyped, es. varie lingue e OCR) FUZZY_SCORE (score floor per espansione fuzzy) FUZZY_NUMRESULT (max. numero parole per espansione fuzzy) Section Groups La classe section group prende un formato di testo (es. XML o HTML) come input e restituisce i section boundaries e plain text i section group non sono creati con create_preferences, ma con una API separata – 12 7 ctx_ddl.create_section_group('mygroup’, 'html_section_group'); il primo argomento è il nome del section group, il secondo è il tipo, che specifica il formato del testo di input e le regole per individuare le sezioni Section Groups tipi di section groups: – NULL_SECTION_GROUP: da usare quando non ci sono sezioni o ci sono solo sezioni speciali: SENTENCES e PARAGRAPH – – – 12 8 – default BASIC_SECTION_GROUP: per XML o HTML, rimuove semplicemente i markup tags, che devono essere bilanciati, non supporta attributi e commenti HTML_SECTION_GROUP: per HTML XML_SECTION_GROUP: per XML NEWS_SECTION_GROUP: per newsgroup style postings, rimuove header lines Section Groups le sezioni hanno tre attributi: – – – ZONE: – – 12 9 TAG: specifica come riconoscere la sezione NAME: specifica come riferirsi alla sezione nelle query (più tag possono essere mappati sullo stesso nome) TYPE: è il tipo di sezione, ci sono tre tipi diversi: ZONE, SPECIAL, FIELD – – si registra dove sono start e end permette query di tipo WITHIN, cioè ricerche all’interno di sezioni particolari se una sezione ZONE si ripete viene trattata separatamente nelle query possono essere annidate Section Groups SPECIAL: non sono riconosciute attraverso tag, ma dal lexer attraverso la punteggiatura – – 13 0 SENTENCE PARAGRAPH Section groups FIELD: – – – 13 1 il contenuto della sezione è indicizzato separatamente dal resto del documento le query di tipo WITHIN vengono eseguite su questo indice separato sono pensate per sezioni non ripetute e non overlapping Section Groups - esempio 13 2 Documento: <A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C> Creazione section group ctx_ddl.create_section_group('mygroup', ’xml_section_group'); aggiunta sezioni di tipo ZONE ctx_ddl.add_zone_section('mygroup', 'asec', 'a'); ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c'); Section Groups - esempio Documento plain text Creazione section group ctx_ddl.create_section_group('mygroup', ’null_section_group'); aggiunta sezioni di tipo ZONE ctx_ddl.add_special_section('mygroup', ’SENTENCE'); 13 3 Aggiornamento degli indici L’indice creato non viene aggiornato automaticamente dopo ogni operazione DML – – – 13 4 indicizzare un singolo documento richiede molto tempo gli inverted index si aggiornano meglio su un insieme di documenti per volta le applicazioni in genere sono abbastanza statiche, e non è necessaria una completa consistenza possibilità di ricostruzione totale o parziale Interrogazioni La creazione di un indice di tipo CONTEXT permette di eseguire interrogazioni sul contenuto dei documenti funzione CONTAINS, con vari criteri di selezione – – – – – – – 13 5 logici di prossimità fuzzy stemming thesaurus wildcards ricerche su sezioni Sono case-insensitive per default – modificabile con preferenze BASIC_LEXER Interrogazioni - contains select id from texttab where contains(textcol,'query') > 0 – – il primo argomento è il nome della colonna, il secondo è il testo dell’interrogazione (max 2000 byte) restituisce un numero, che quantifica il match 13 6 0 = no match Interrogazioni - scoring select id, score(1) from texttab where contains(textcol, 'query', 1) > 0 order by score(1) desc 13 7 1 è contains label e può essere un qualsiasi numero, utilizzato per matchare lo score nella select list con quello nella clausola where lo score è un numero compreso tra 0 e 100, ed è relativo (significativo solo per la query) Interrogazioni - scoring Modello vettoriale Pesi wij = 3f(1+log(N/n)) con – – – – 13 8 f frequenza N numero totale tuple n numero tuple che contengono il termine compresi tra 0 e 100 la similarità è un valore tra 0 e 100 Interrogazioni - tipologie interrogazioni semplici contains(text, 'dog') > 0 si possono interrogare frasi: contains(text,'dog my cat') > 0 13 9 le stopword sono trattate come wildcard (matchano qualsiasi parola) contains(text, 'dog the cat') > 0 restituisce 'dog my cat’, 'dog your cat’, 'dog the cat' le stopword da sole vengono eliminate dalla query Interrogazioni - operatori booleani 14 0 AND (&) e OR (|): restituiscono punteggi numerici invece che valori booleani AND è il minimo dei punteggi dei suoi operandi, OR il massimo NOT (~) è "AND NOT” (differenza): – 'dog NOT cat' restituisce i documenti che contengono "dog" ma non contendono "cat” – il punteggio restituito è quello del figlio sinistro Interrogazioni - operatori di score WEIGHT (*) moltiplica il punteggio di un termine di ricerca per renderlo più o meno importante nella query (peso tra .1 e 10) contains(text,'(dog*2) AND cat') > 0 THRESHOLD (>) elimina i documenti sotto una certa soglia contains(text,'(dog*2) AND cat') > 50 14 1 Interrogazioni - operatori di espansione delle parole 14 2 WILDCARD (%_) per pattern matching (come in LIKE di SQL) FUZZY (?) trova parole simili (usa wordlist) STEM ($) trova parole con radice comune (usa wordlist) SOUNDEX (!) trova parole con stesso suono (usa una specifica espansione fuzzy) EQUIV (=) permette di indicare esplicitamente varie forme della stessa parola Interrogazioni - operatori di prossimità operatore NEAR, che ha due forme dog ; cat ; boat il punteggio dipende da quanto i termini sono vicini l’uno all’altro, in termini di numero di parole 14 3 NEAR((dog,boat), 10, TRUE) – primo argomento è lista di parole – secondo è distanza massima (numero di parole) – terzo specifica se tenere conto dell’ordine in cui appaiono nella lista Interrogazioni - sezioni WITHIN: limita una query a una particolare sezione contains(text, ’tiger & cat within sentence') > 0 14 4 Interrogazioni - esempio <A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C> ctx_ddl.create_section_group('mygroup', 'basic_section_group'); sezione ZONE ctx_ddl.add_zone_section('mygroup', 'asec', 'a'); ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c'); 14 5 contains(text, 'rat within asec') > 0 restituisce il documento contains(text, 'tiger within asec') > 0 non restituisce il documento Interrogazioni - esempio ogni istanza è considerata distinta: contains(text, '(tiger and rabbit) within bsec') > 0 trova il documento contains(text, '(rat and ox) within asec') > 0 no contains(text, '(dragon and snake) within csec') > 0 sì 14 6 nel caso di sezioni FIELD il contenuto di diverse istanze viene unito, quindi la seconda query restituirebbe il documento Interrogazioni tematiche Si vogliono determinare i documenti che trattano un certo concetto la stringa specifica rappresenta il concetto (tema) cercato solo per inglese e francese richiede la presenza di una knowledge base – 14 7 gerarchia di concetti con 6 sottoalberi: scienza-tecnologia, affari e finanza, politica e militare, sociale, geografia, idee astratte l’indice deve avere una componente tematica se non ce l’ha, l’interrogazione viene espansa in una query non tematica Interrogazioni tematiche - esempio contains(text, 'about(canines)') 14 8 se esiste l’indice, può restituire documenti che contengono “dog” se non esiste, about(go home now) è trasformata in $go,$home,$now Interrogazioni - Thesaurus Possibilità di creare Thesaurus che definiscono sinonimi e relazioni gerarchiche tra parole o frasi il thesaurus non viene installato di default ma deve essere caricato – 14 9 il sistema contiene un thesaurus di default per l’inglese il caricamento di un Thesaurus permette di espandere le ricerche ai sinomini di una certa parola o ad altre parole ad essa associate Interrogazioni - Thesaurus file con formattazione particolare alcune relazioni considerate 15 0 – SYN: sinonimi – PT: preferred term – BT: broader term – NT: narrower term – RT: related term – TR: traduzione in altri linguaggi gli stessi identificatori corrispondono a procedure che permettono di utilizzare queste relazioni nelle interrogazioni Thesaurus - operatori 15 1 SYN( term [, thesname] ) PT( term [, thesname] ) BT( term [, level [,thesname]] ) NT( term [, level [,thesname]] ) TT( term [, thesname] ) RT( term [,thesname] ) TR( term [,lan [,thesname] ]) Altri operatori di score MINUS (-) sottrae il punteggio dell’operando destro a quello del sinistro contains(text, 'tiger MINUS rabbit') > 0 – tiger e preferibilmente non rabbit – sottrae i punteggi ACCUM (,) raggruppa più parole o frasi e ne accumula i punteggi contains(text, 'tiger ACCUM rabbit)') > 0 15 2 – tiger e preferibilmente rabbit – somma i punteggi Osservazione AND – – – ACCUM – 15 3 nella logica a due valori, richiede che entrambi gli argomenti siano veri interpretando vero = 1 e falso = 0, viene restituito il valore minimo stesso discorso nel caso di valori compresi tra 0 e 1 – semplicemente somma i punteggi più termini compaiono, più il documento è rilevante Osservazione OR – – – MINUS – 15 4 nella logica a due valori, richiede che almeno un argomento sia vero interpretando vero = 1 e falso = 0, viene restituito il valore massimo stesso discorso nel caso di valori compresi tra 0 e 1 – toglie punteggi un documento è più rilevante se i termini a destra non compaiono Basi di dati per la gestione di immagini 15 5 Problematiche La realizzazione di un sistema per la gestione di immagini deve affrontare le seguenti problematiche – – – 15 6 rappresentazione delle immagini Misura della similarità Metodi di accesso e ritrovamento Rappresentazione immagini Generazione metadati (automatica + manuale) Quali features e attributi? 15 7 Features + attributi Features Forme (shape) – – 15 8 l’idea è quella di estrarre delle forme dall’immagine possono rappresentare contorni o approssimazione di contorni contorno Approssimazione contorno Features - shape 15 9 Una shape per un oggetto può essere rappresentata in vari modi ad esempio, un contorno può sempre essere visto come una sequenza di punti p1,…,pn in uno spazio bidimensionale Features Oggetti semantici – con oggetto semantico si intende un oggetto significativo dal punto di vista dell’applicazione – – – 16 0 casa, viso, strada se gli oggetti sono chiaramente identificabili e possono essere facilmente riconosciuti, il ritrovamento può essere basato su tali oggetto tipicamente richiedono intervento umano approccio limitato dalle tecniche esistenti di analisi delle immagini Features Texture (tessitura) – – – rappresentano informazioni relative alle “regolarità” o “irregolarità” dell’immagine dipendono dalla percezione visiva di un’immagine si basano sulle cosiddette Tamura features 16 1 coarseness (rugosità) contrasto direzionalità Features Colore – – – – – – 16 2 proprietà globale che non richiede conoscenza degli oggetti contenuti nelle immagini può essere determinato in modo automatico quindi è molto utilizzato spesso si usano istogrammi che rappresentano la composizione di colori in un’immagine ogni componente dell’istogramma corrisponde ad un colore (256 o 64 componenti) per rappresentare un’immagine, si associa ad ogni componente il numero di pixel dell’immagine più simili al colore considerato il colore di ogni pixel in genere viene rappresentato come una tripla (R,G,B), dove R indica la percentuale di Rosso, G la percentuale di Giallo e B la percentuale di Blu Un possibile surrogato per le immagini In generale, per rappresentare in modo sufficientemente dettagliato un’immagine è necessario utilizzare più features In generale, ogni immagine può essere interpretata come – un insieme di oggetti interessanti, ciascuno caratterizzato da un descrittore di forma, che rappresenta la shape dell’oggetto e/o la zona dell’immagine nella quale l’oggetto è collocato (approssimazione) – un descrittore di proprietà, che descrive le proprietà di un insieme di pixel nell’immagine (RGB, livelli di grigio per immagini in bianco e nero, texture) 16 3 proprietà globali proprietà locali le proprietà sono rappresentate da un nome (Red, Green, Blue) e da un dominio (ad esempio {0,…,8}) Esempio 16 4 Esempio Si consideri l’immagine pic1.gif l’immagine contiene due oggetti di interesse o1 e o2 – – le shape di questi oggetti sono rappresentate dai rettangoli presenti nella figura il descrittore di proprietà associato ad un insieme di pixel potrebbe avere la seguente forma 16 5 Red = 5 Green = 1 Blue = 3 Descrittori di proprietà 16 6 Le proprietà vengono in genere associate ad insiemi di pixel In genere, ogni immagine viene associata ad una coppia di interi positivi (m,n), chiamata la griglia di risoluzione dell’immagine una griglia (m,n) divide l’immagine in (m x n) celle di uguale dimensione, chiamate griglia dell’immagine ogni cella è costituita da un insieme di pixel le proprietà possono quindi essere associate a ciascuna cella le proprietà di ogni singola cella possono essere rappresentate come un vettore, in cui ciascuna componente corrisponde ad una determinata proprietà Osservazione 16 7 Le shape si possono interpretare come proprietà globali dell’immagine le proprietà sono invece locali a ciascuna singola cella dalle proprietà di ogni singola cella si possono ovviamente inferire le proprietà delle celle che rappresentano i vari oggetti identificati Definizione di base di dati di immagini Una base di dati di immagini è una tripla (GI, Prop, Rec) dove: – GI è un insieme di immagini a cui è stata associata una griglia – – 16 8 ogni immagine si può quindi vedere come una terna (Immagine,m,n), dove (m,n) rappresenta la griglia di risoluzione Prop è un insieme di proprietà di celle Rec è una funzione che associa ad ogni immagine un insieme di shape, in base ad una qualche rappresentazione Prop rappresenta le proprietà locali delle immagini Rec rappresenta le proprietà globali delle immagini Query per similitudine Le query possono coinvolgere sia proprietà locali che proprietà globali problema: come determino la similitudine tra due immagini? Approccio fondamentale: approccio metrico 16 9 si assume che esista una distanza metrica d con la quale confrontare ogni coppia di oggetti più bassa è la distanza, più simili sono gli oggetti Approccio metrico Una funzione da un insieme X a [0,1] è una funzione distanza se soddisfa i seguenti assiomi per ogni x,y,z in X: – – – 17 0 d(x,y) = d(y,x) d(x,y) <= d(x,z) + d(z,y) d(x,x) = 0 per ogni proprietà associata ad un’immagine può essere definita una funzione distanza la distanza tra due immagini si ottiene quindi combinando le distanze tra le varie proprietà (locali e/o globali), ad esempio applicando la distanza Euclidea Esempio applicato alle proprietà globali Si consideri un insieme Obj di immagini (256 x 256). Si supponga che ogni cella sia associata a tre attributi (red, green, blue) che assumono un valore in {0,…,8} un esempio di funzioni distanza tra due immagini o1 e o2 rispetto alle tre proprietà considerate è il seguente: – – – – 17 1 diffr[i,j] = (o1[i,j].red - o2[i,j].red)2 diffg[i,j] = (o1[i,j].green - o2[i,j].green) 2 diffb[i,j] = (o1[i,j].blue - o2[i,j].blue) 2 d(o1,o2) = (i=1,256 i=1,256 (diffr[i,j] + diffg[i,j] + diffb[i,j]))1/2 Approccio metrico per proprietà locali La distanza precedente rappresenta la distanza Euclidea tra i due oggetti se si considerano n proprietà locali e t =h x k celle, in base all’approccio metrico ogni immagine è vista come un insieme di m punti n-dimensionali – Pi = (xi1,…,xin) per determinare se le immagini I1 e I2 sono simili in base alla distanza Euclidea: – – 17 2 f(I) = {P1,…,Pt} – – f(I1) = {P1,…,Pt} Pi = (xi1,…,xin) f(I2) = {Q1,…,Qt} Qi = (yi1,…,yin) d(I1,I2) = (i=1,t d’(Pi,Qi))1/2 d’(Pi,Qi) = (xi1 -yi1)2 + … + (xin -yin)2 Approccio metrico per proprietà locali L’approccio metrico richiede che per ogni proprietà locale venga calcolata la distanza tra celle corrispondenti in immagini distinte ogni immagine è quindi interpretata come un insieme di punti – – – poiché il numero delle celle spesso è alto esistono approcci (che non vediamo) per mappare le immagini NON in un insieme di punti MA in un singolo punto in uno spazio s-dimensionale, con s <= n Esempio: consideriamo la media degli n punti – 17 3 ogni punto è dato dai valori per le proprietà locali di una certa cella se le proprietà sono n, i punti sono n-dimensionali ogni immagine sarà caratterizzata da tanti punti quante sono le celle in questo caso s coincide con n si noti che il punto ottenuto si può interpretare come una proprietà globale dell’immagine Indicizzazione per proprietà locali I punti ottenuti possono essere utilizzati come base per definire le tecniche di indicizzazione nel caso limite in cui s = 1, si potrebbero usare I B-tree nel caso in cui s > 1, è necessario utilizzare specifici indici multidimensionali questi indici sono stati definiti nel contesto delle basi di dati spaziali Algo di indiciz. 17 Spazio 4 n-dimensionale Spazio s-dimensionale indice DB immagini Approccio metrico per proprietà globali Anche per gli oggetti (regioni) associati ad un’immagine è possibile applicare un approccio metrico in questo caso la distanza deve essere definita sulle shape anche le shape possono essere rappresentate come un insieme di punti Esempio – 17 5 se la shape è rappresentata da una spezzata costituita da n segmenti, la spezzata può essere descritta da una sequenza di n p3 punti bidimensionali p2 p4 p1 p5 Approccio metrico per proprietà globali In questo caso è possibile passare da n punti a 2 punti considerando il minimo rettangolo che contiene la shape (minimum bounding box - MBB) 2 punti si possono vedere come un punto in uno spazio 4-dimensionale (s = 4) p2 p3 p4 p1 p5 17 6 Indicizzazione per shape Algo di indiciz. shape 17 7 Approssimazioni shape indice DB immagini Uso della distanza nelle query L’utilizzo della funzione distanza permette di risolvere in modo formalmente semplice (ma non semplice dal punto di vista di un’ottimizzazione efficiente) le query per similitudine Interrogazione di base: – 17 8 data un’immagine, trovare le immagini simili a quella in input Rappresentazione immagini nei DBMS La gestione delle immagini nei vari DBMS dipende dal sistema prescelto in genere, viene permessa una duplice rappresentazione – riferimento esterno: – rappresentazione interna: 17 9 il DB contiene riferimento ai file che contengono le immagini le immagini vengono memorizzati nel DBMS di tipo BLOB (binary large object) i sistemi mettono quindi a disposizione tool per generare i surrogati delle immagini (il tipo di surrogato dipende dal DBMS e dal tool prescelto),per gestire le immagini e per interrogarle Rappresentazione immagini nei DBMS Quindi, per rappresentare un database di immagini IDB=(GI, Prop, Rec) in un DBMS – – – 18 0 ogni I in GI viene memorizzata in base all’approccio prescelto ogni proprietà in Prop verrà implementata dai tool messi a disposizione dal sistema per determinare i valori associati a specifiche proprietà (che dipendono dal sistema scelto) Rec rappresenta le shape degli oggetti riconosciuti utilizzando i tool messi a disposizione del sistema Rappresentazione immagini nei DBMS 18 1 Le proprietà possono riferirsi alle celle o all’immagine nel suo complesso e rappresentare, ad esempio, informazioni quali il nome dell’immagine, la data di caricamento, ecc. queste informazioni possono essere rese disponibili all’utente per effettuare interrogazioni Nel caso dell’approccio metrico, il sistema supporterà adeguati indici multidimensionali per supportare le query per similitudine Gestione immagini in Oracle Ogni oggetto multimediale in Oracle può essere memorizzato, manipolato e interrogato utilizzando un particolare tipo di dato – definiti nel package ORDSYS (non indicato nel seguito) Per le immagini – ORDImage: un’istanza è costituita da: 18 2 – attributi, che rappresentano il dato sorgente, cioè l’immagine proprietà globali come lunghezza, larghezza, dimensione, tipo file (es. TIFF), tipo di compressione (es. JPEG), tipo di contenuto (es. Monocromatico) metodi, che permettono di gestire le immagini ORDImageSignature: un’istanza rappresenta le feature (signature) associate ad un’immagine Tipi di dato ORDSource + attributi strutturali ORDImage 18 3 features ORDImageSignature Esempio Si supponga di volere creare una tabella contenente delle fotografie in particolare la tabella deve contenere: – – – – 18 4 id fotografia nome fotografo descrizione fotografia la fotografia una possibile dichiarazione di questa tabella è la seguente: CREATE TABLE stockphotos ( photo_id NUMBER, photographer VARCHAR(64), annotation VARCHAR(255), photo ORDImage, photo_sign ORDImageSignature); ORDImage - attributi 18 5 ORDImage - Attributi 18 6 ORDImage - Costruttori Init() – inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi: – – – 18 7 immagine memorizzata internamente source.localdata=empty_blob() source.local = 1 (indica che l’immagine è caricata nel file system locale) source.updateTime = SYSDATE Esempio insert into stockphotos (1, “John Ross”, NULL, OrdImage.init()); ORDImage - Costruttori Init( srcType IN VARCHAR2 srcLocation IN VARCHAR2, srcName IN VARCHAR2) – inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi: – – 18 8 immagine memorizzata all’esterno – – source.localdata=empty_blob() source.local = 0 (indica che l’immagine si assume memorizzata nel file system esterno) source.updateTime = SYSDATE source.srcType, source.srcLocation, srcName, posti uguali ai valori in input ORDImage - esempio Esempio – 18 9 insert into stockphotos (1, “John Ross”, NULL, ORDImage.init(‘FILE’,’MY_IMAGES,’image1.gif’)); ORDImage - Caricamento 19 0 I costruttori effettuano solo l’inizializzazione degli attributi ma non caricano l’immagine nel campo BLOB nel caso in cui si intenda copiare l’immagine nel DBMS, sono previsti metodi per il caricamento (e di esportazione) MEMBER PROCEDURE importFrom( ctx IN OUT RAW, source_type IN VARCHAR2, source_name IN VARCHAR2) RAW: dati che non vengono interpretati da Oracle (simile a LOB), utilizzato durante il caricamento, come “buffer” temporaneo Aggiorna source – – il file viene caricato in localData e local viene posto a 1 inizializzati tutti gli altri campi con valori in INPUT Esempio - caricamento dati nel DBMS 19 1 DECLARE FOR UPDATE: Image ORDSYS.ORDImage; lock sulla tupla ctx RAW(4000) := NULL; BEGIN INSERT INTO stockphotos VALUES (1,’John Doe’, red plaid, ORDSYS.ORDImage.init(), ORDSYS.ORDImageSignature.init()); SELECT photo INTO Image FROM stockphotos WHERE photo_id = 1 for UPDATE; Image.importFrom(ctx, ’file’,’ORDIMGDIR’,’redplaid.gif’); … UPDATE stockphotos SET photo = Image WHERE photo_id = 1; COMMIT; END; Esempio - riferimento esterno 19 2 DECLARE Image ORDSYS.ORDImage; BEGIN INSERT INTO stockphotos VALUES (1,’John Doe’,’red plaid’, ORDSYS.ORDImage.init(’file’,’ORDIMGDIR’,’redplaid.gif’), ORDSYS.ORDImageSignature.init()); SELECT photo INTO Image FROM stockphotos WHERE photo_id = 1 FOR UPDATE; … aggiornamento info immagine ... UPDATE stockphotos SET photo = Image WHERE photo_id = 1; COMMIT; END; ORDImage- Metodi per la manipolazione Si dividono in diversi gruppi tra cui: – – – – 19 3 metodi di copia metodi di processamento metodi di settaggio attributi metodi di accesso agli attributi (circa uno per attributo) Metodi di manipolazione Metodo di copia: – – metodi di processamento: – – 19 4 Copy (dest IN OUT ORDImage) copia l’immagine in dest, inclusi i valori di tutti gli attributi process(command IN VARCHAR2) command rappresenta una lista di tecniche di image processing da applicare alle immagini esempio: cambiamento scala Metodi di manipolazione Metodi di settaggio attributi: – – – – importFrom() chiama direttamente setProperties da chiamare manualmente negli altri casi Metodi di accesso: – 19 5 setProperties() determina i valori per gli attributi di ORDImage, escluso source – – circa uno per ogni attributi (si veda il manuale) getHeight() RETURN INTEGER restituisce il valore associato all’attributo HEIGHT Esempio 19 6 DECLARE Image ORDSYS.ORDImage; BEGIN INSERT INTO stockphotos VALUES (1,’John Doe’,’red plaid’, ORDSYS.ORDImage.init(’file’,’ORDIMGDIR’,’redplaid.gif’), ORDSYS.ORDImageSignature.init()); SELECT photo INTO Image FROM stockphotos WHERE photo_id = 1 FOR UPDATE; Image.setProperties(); UPDATE stockphotos SET photo = Image WHERE photo_id = 1; COMMIT; END; ORDImageSignature Rappresenta le feature calcolate a partire da un’immagine l’insieme delle features viene chiamato signature – 19 7 unico attributo, di tipo BLOB ORDImageSignature - segnatura La segnatura contiene le seguenti features: – – – – 19 8 color: distribuzione di colore nell’immagine texture shape: rappresenta gli oggetti (tipicamente forme geometriche) location: tiene conto della posizione delle shape nell’immagine e della distribuzione del colore I valori associati alle precedenti proprietà rappresentano un punto: multidimensionale la somma di tali valori per un’immagine è 100 ORDImageSignature - segnatura 19 9 Image1 e Image2 sono simili rispetto al colore globale ma non rispetto alla locazione ORDImageSignature - segnatura 20 0 ORDImageSignature - metodi inizializzazione: – generazione segnatura: – 20 1 metodo init() metodo generateSignature(ORDImage) altri che non vediamo Esempio 20 2 DECLARE t_image ORDSYS.ORDImage; image_sig ORDSYS.ORDImageSignature; BEGIN SELECT photo, photo_sig INTO t_image, image_sig FROM stockphotos WHERE photo_id=1 FOR UPDATE; image_sig.generateSignature(t_image); UPDATE stockphotos SET photo_sig = image_sig WHERE photo_id =1; END; Caricamento completo immagine In Oracle, un’immagine è rappresentata secondo tre componenti: – immagine stessa (BLOB o BFILE) – attributi descrittivi – 20 3 se la si vuole trattare come BFILE, l’operazione di inizializzazione initFrom() è sufficiente ad inizializzare l’immagine se la si vuole trattare come BLOB, è necessario prima inizializzarla e poi importarla (init() + importFrom()) determinati con metodo setProperties() segnatura calcolata con metodo generateSignature() Indici La creazione degli indici non è immediata Esempio: per creare un indice sull’attributo photo della tabella stockphotograph: CREATE INDEX imgindex on stockphotograph(photo.signature) INDEXTYPE IS ORDSYS.ORDImageIndex; 20 4 Interrogazioni Due operatori (non metodi) principali: – – 20 5 IMGsimilar: prese due segnature, stabilisce se sono simili, confrontando le segnature IMGscore: restituisce il valore di similarità per due segnature IMGSimilar IMGSimilar( signature IN RAW, querysignature IN RAW, weightstring IN VARCHAR2, threshold in FLOAT, [referencetoScore IN NUMBER]) weightstring ha la forma – ‘color = “val” texture = “val” shape = “val” location = “val” dove val è un valore tra 0 e 1 che “pesa” una certa feature 20 6 IMGSimilar l’operatore calcola la media delle distanze di ogni proprietà considerata, pesandola rispetto ai pesi specificati in weightstring restituisce 1 se la distanza è minore di threshold (valore tra 0 e 100) – 20 7 0 distanza minima (similarità massima) referencetoScore assegna un identificatore alla chiamata della funzione potrà poi essere utilizzato nella chiamata della funzione VIRScore, nel contesto della stessa query IMGScore IMGScore(referencetoSimilar IN NUMBER) la query che invoca questo metodo deve anche invocare IMGSimilar – 20 8 posso calcolare lo score solo se ho determinato quali oggetti sono simili referencetoSimilar è un intero che rappresenta l’identificatore di una chiamata a IMGSimilar lo score viene calcolato rispetto agli oggetti sui quali è stata applicata IMGSimilar Esempio Supponiamo di volere determinare tutte le fotografie simile ad una fotografia F data nel determinare la similitudine, vogliano attribuire un peso maggiore al colore, in particolare vogliamo fissare i pesi come segue: – – – – 20 9 color = 0.6 texture = 0.2 shape = 0.1 location = 0.1 vogliano inoltre fissare un threshold a 50 vogliamo restituire gli identificatori delle fotografie che soddisfano la query insieme allo score calcolato Esempio (continua) Supponendo di considerare una variabile – 21 0 F ORDImageSignature ecco la query: SELECT photo_id,ORDSYS.IMGScore(12) FROM stockphotos WHERE ORDSYS.IMGSimilar(photo_sig,F, ‘color = “0.6” texture = “0.2” shape = “0.1” location = “0.1” ‘ , 50, 12) = 1 Esempio (continua) Si consideri adesso un’immagine con le seguenti distanze dalle feature della query: – – – – la distanza è calcolata come segue: – 21 1 0.1 * 15 + 0.6 * 90 + 0.2 * 5 + 0.1 * 50 = 61.5 poiché il threshold è 50, questa immagine non verrebbe restituita supponiamo adesso di invertire i valori associati al colore e alla locazione, la distanza diventa: – texture = 5 color = 90 shape = 50 location = 15 0.6 * 15 + 0.1 * 90 + 0.2 * 5 + 0.1 * 50 = 24.0 in questo caso l’immagine verrebbe restituita Esempio (continua) Supponiamo di volere determinare la fotografica più simile a F SELECT photo_id FROM (SELECT photo_id,ORDSYS.IMGScore(12), RANK() OVER (ORDER BY ORDSYS.IMGScore(12) ASC) AS rank; FROM stockphotos WHERE ORDSYS.IMGSimilar(photo.signature,query.signature,‘color = “0.6” texture =“0.2” shape = “0.1” location = “0.1”,50, 12) = 1) WHERE rank = 1; 21 2 Esempio Si consideri la tabella Panorami, memorizzata in una base di dati Oracle 9i. Tale tabella contiene i seguenti campi: – – – – – 21 3 Id, di tipo NUMBER Nome, di tipo VARCHAR(30) Descrizione, di tipo VARCHAR(200) Panorama, di tipo ORDSYS.ORDImage Panorama_sign ORDSYS.ORDImageSignature Esempio (continua) Si supponga di volere inserire nella tabella la seguente tupla: Id = 1 Nome = “Genova3” Descrizione = “Il porto antico di notte” Panorama = “GePA.gif” Il file GePA.gif risiede nella directory “Immagini”. L’immagine sorgente deve inoltre essere gestita come BLOB. Presentare lo statement SQL per l’inserimento della tupla ed indicare quali metodi dovranno essere successivamente invocati per gestire l’immagine come BLOB e perché. 21 4 Esempio (continua) INSERT INTO Immagini VALUES (1, “Genova3”,”Il porto antico di notte”,ORDSYS.ORDImage.init(), ORDImageSignature()); SELECT Panorama INTO Image FROM Panorami WHERE id = 1 for UPDATE; Image.importFrom(ctx, ‘FILE’,’IMMAGINI’,’GePA.gif’); sign.generateSignature(Image); 21 5 UPDATE Panorami SET Panorama = Image, Panorama_sign = sign WHERE id = 1; Esempio (continua) Determinare tutti i panorami simili a “query_pan”, considerando solo il colore. Restituire i nomi delle immagini e lo score. SELECT Nome,ORDSYS.IMGScore(12) FROM Panorami WHERE ORDSYS.IMGSimilar(panorama_sig,query_pan, ‘color = “1” texture =“0” shape = “0” location = “0” ‘, 10, 12) = 1 21 6 la scelta di un threshold del 10% mi permette di selezionare solo le immagini molto simili a quella data Esempio (continua) Si supponga che per l’immagine GePA.gif siano state calcolate le seguenti distanze rispetto a “query_pan” : color = 40 texture = 30 shape = 20 location = 30 Stabilire se l’immagine GePa.gif verrà restituita dall’interrogazioni I 40 * 1 = 40 quindi l’immagini non viene restituita 21 7