Basi di dati multimediali Basi di dati multimediali Basi di dati
Transcript
Basi di dati multimediali Basi di dati multimediali Basi di dati
Basi di dati multimediali Basi di dati multimediali Nuove applicazioni richiedono la rappresentazione e la gestione di dati non tradizionali: – – – – – 2 1 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: – – – – 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 3 MMDBMS: aspetti da considerare Rappresentazione – – – – – non solo lettura/scrittura ma anche (video/audio) – – – – playback rewind fast forward pause Indici: Analizzeremo solo i primi due aspetti – quali supporti utilizzare? (dischi, CD-ROM, nastri) che operazioni supportare: un linguaggio di query per MMDBMS deve avere caratteristiche particolari query processing deve analizzare il contenuto degli oggetti Rappresentazione Memorizzazione: – Come si fa a capire che un’immagine contiene una certa persona Query – 4 i dati sono tipicamente non strutturati si vuole analizzare il contenuto come è possibile rappresentare il contenuto di un documento multimediale? MMDBMS: aspetti da considerare 5 testi arbitrari immagini audio video dati tradizionali (relazionali, orientati ad oggetti) 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 come indicizzare gli oggetti multimediali? 6 1 Rappresentazione Rappresentazione Nelle basi di dati relazionali ad oggetti, i dati multimediali vengono memorizzati secondo due distinte modalità: – – DBMS Oggetto multimediale 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 7 riferimento Oggetto multimediale 8 Rappresentazione - LOB Rappresentazione - LOB 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 9 Si distinguono in: – – BLOB (Binary Large Object) CLOB (Character Large Object) Supportati da SQL-99 Sono fisicamente memorizzati esternamente alle tabelle ma internamente al DB 10 Rappresentazione - ORDBMS Rappresentazione Gli ORDBMS forniscono inoltre nuovi tipi di dato complessi che supportano: – – – la rappresentazione del dato multimediale Metodi per la manipolazione dei dati multimediali Predicati e funzioni per l’interrogazione dei dati multimediali Gli oggetti multimediali sono completamente non strutturati per poterli interrogare in modo ragionevole, è necessario sovraimporre a ciascun oggetto una rappresentazione concettuale (surrogato) – 11 LOB 12 insieme di dati strutturati (attributi) che descrivono l’oggetto multimediale dal punto di vista della struttura e del contenuto semantico ogni oggetto dello stesso tipo (per esempio, stesso media) sarà descritto dallo stesso tipo di surrogato il surrogato dell’oggetto multimediale non descrive pienamente il contenuto informativo dell’oggetto ma costituisce una sua sintesi i surrogati rappresentano gli oggetti sui quali definire le tecniche di indice I surrogati rappresentano metadati 2 Rappresentazione Rappresentazione - esempio Surrogato composto da due tipi di attributi: – – Attributi descrittivi nome: Villa Medici località:Roma descrittivi associano informazioni descrittive (relazionali) a ciascun oggetto vengono associati manualmente all’oggetto Features: forma: content-based (anche chiamati features) associano informazioni relative al contenuto vengono estratti direttamente dal sistema 13 14 Rappresentazione Oggetti multimediali Generazione metadati (automatica + manuale) Rappresentazione Conseguenza – Features + attributi – – si puo’ riferire sia ad una villa che ad un’industria I sistemi mettono a disposizione funzionalità per estrarre feature e per utilizzare tali feature nel contesto delle interrogazioni 15 16 Query processing: idea di base Query processing: caratteristiche Generazione metadati 1. Features + attributi Oggetti multimediali 2 2. 1 3. 3 4. Meccanismo di interrogazione 1. 2. 17 i documenti multimediali potranno essere confrontati solo rispetto agli attributi e alle feature feature uguali non sempre si riferiscono ad oggetti uguali Esempio 3. La query viene eseguita sui metadati (attributi + features) dai metadati si risale ai documenti originali i documenti originali vengono restituiti all’utente 5. 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 18 3 2. Attributi e feature 3. Query per similitudine 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 – – assumo di avere estratto le forme dalle immagini assumo di avere associato informazione descrittiva (luogo, tipo abitazione) 19 Poiché il contenuto degli oggetti viene espresso attraverso feature 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 le condizioni in genere sono verificate in una certa misura, data dalla similitudine tra ciò che stiamo cercando e ciò che abbiamo trovato – 20 3. Query per similitudine il linguaggio e il query processing devono permettere di esprimere ed eseguire query di questo tipo Esempio 4. Ranking – Determina tutte le immagini in cui appare una certa persona, presente in una specifica foto 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 21 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 e dal modello utilizzato per la sua rappresentazione e interrogazione Esempio: – 22 5. Query pesate – Approcci alla specifica delle query 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 – Si estende un query language con operazioni specifiche per l’interrogazione di dati multimediali – – contengono una persona (0.7) non contengono alberi (0.3) – – la similarità viene pesata 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 – 23 ritrova le 5 immagini in cui più probabilmente appare una certa persona, presente in una specifica foto query by example: 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 24 4 Nel seguito ... Considereremo due media: – – Basi di dati testuali testo immagini per ciascuno illustreremo – – rappresentazione del contenuto query in alcuni sistemi 25 26 Basi di dati testuali Sono in grado di memorizzare, gestire ed interrogare documenti testuali non strutturati I database di testi sfruttano tecniche sviluppate per i sistemi di Information Retrieval (IR) L’ambito dell’IR ha prodotto negli ultimi 20 anni: – – – Scopo 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 L’avvento del Web ha cambiato le cose … 27 28 Criteri di valutazione Permette di quantificare quanto bene un sistema soddisfa la proprieta’: Criteri di valutazione Precisione (precision) – Rilevanti Restituiti Solo i documenti rilevanti vengono restituiti Richiamo (recall) – Non rilevanti restituiti Permette di quantificare quanto bene un sistema soddisfa la proprieta’: 29 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ù efficace quanto più e’ in grado di avvicinarsi a tale requisito Tutti i documenti rilevanti vengono restituiti Rilevanti Non restituiti Non rilevanti Non restituiti Documenti contenuti nel database 30 5 Criteri di valutazione: richiamo Criteri di valutazione: 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 31 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 32 Criteri di valutazione: Precisione Criteri di valutazione: considerazioni La precisione è la percentuale di documenti rilevanti sul totale dei documenti restituiti La condizione ideale è avere il 100% di precisione e richiamo In generale, aumentando il numero di documenti restituiti: – Rilevanti Restituiti Precisione = – Totale Restituiti 33 34 Features Rappresentazione di documenti testuali Nel caso di documenti testuali le feature sono i termini utilizzati come indici durante la ricerca Sia i documenti che le interrogazioni vengono rappresentati in termini di insiemi di indici Gli indici possono essere: – – 35 si aumenta il potere di richiamo in quanto si aumenta potenzialmente il numero di rilevanti restituiti si potrebbe ridurre la precisione in quanto l’incremento del numero di documenti restituiti in genere a maggiore dell’incremento del numero dei documenti rilevanti restituiti Una parola chiave o un insieme di parole chiave Un insieme di concetti che caratterizzano il contenuto informativo del documento 36 6 Uso dei termini indice Docs Modelli Classici – Concetti Base Index Terms doc – match Ranking Information Need query 37 – – – wij quantifica l’importanza dell’indice ki per descrivere il contenuto informativo del documento dj wij = 0 indica che ki non compare in dj vec(dj) = (w1j, w2j, …, wtj) è il vettore di pesi associati al documento dj, dove t è la cardinalita’ di K gi(vec(dj)) = wij è una funzione che restituisce il peso di ki nel documento dj 40 Modelli Classici – Concetti Base Modelli classici: proposte 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: – 41 K un insieme di termini indice con cardinalita’ t ki un termine indice in K dj un documento wij il peso associato a ki nel documento dj 39 L’importanza di un indice è rappresentata da un peso ad esso associato Modelli Classici – Concetti Base Sia – di solito i termini troppo frequenti non sono buoni candidati per diventare indici 38 Modelli Classici – Concetti Base Si basano sulla rappresentazione dei documenti e delle interrogazioni come insiemi di termini indice Non tutti i termini che compaiono in un documento sono egualmente rappresentativi del suo contenuto informativo: Modello booleano Modello vettoriale Modello probabilistico Ogni modello specifica – – – Es: computer network Come rappresentare i pesi come rappresentare le interrogazioni Come calcolare la similarita’ tra due documenti (tra un documento e un’interrogazione) 42 7 Modello booleano: i pesi E’ un modello semplice basato sulla teoria degli insiemi I pesi assumono valori binari: – Modello booleano: le interrogazioni – – wij ε {0,1} q = ka ∧ (kb ∨ ¬kc) 44 – – Interrogazione boolena: – Interrogazione in forma disgiuntiva – Query booleana q Si riscrive q in forma normale disgiuntiva, ottenendo una nuova query booleana qdnf equivalente a q – Esempio Ogni interrogazione viene rappresentata come se fosse un insieme di documenti Idea – Modello booleano: esempio Per garantire uniformita’ di rappresentazione, le interrogazioni vengono tradotte in un insieme di vettori – Si riscrive qdnf in un insieme di vettori sull’insieme di termini indice Kq che compaiono nella query Ogni vettore viene chiamato componenti congiuntive della query q (qcc) – sim(q,dj) = q = ka ∧ (kb ∨ ¬kc) qdnf = (ka ∧ kb) ∨ (ka ∧ ¬kc) Ogni congiunzione viene riscritta in un insieme di vettori sull’insieme dei termini indice che compaiono nella query Ogni congiunzione impone condizione su termini che si vuole che appaiano/non appaiano nei documenti cercati Kq = (ka,kb,kc) (ka ∧ kb) riscritto in {(1,1,0), (1,1,1)}, in quanto non si fanno ipotesi su kc (ka ∧ ¬kc) riscritto in {(1,0,1), (1,1,0)}, in quanto non si fanno ipotesi su kb Viene restituita l’unione di tutti i vettori vec(qdnf)= {(1,1,1) , (1,1,0) , (1,0,0)} 46 Modello Booleano: esempio Modello Booleano: similarità 1 se ∃ vec(qcc) t.c. vec(qcc) ∈ vec(qdnf) ∧ ∀ki ∈ Kq gi(vec(dj)) = gi(vec(qcc))) 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 0 altrimenti Un documento viene restituito come risultato di una query solo se la sua similitudine con l’interrogazione è pari ad uno 47 Termini indici Classici connettivi: ∧, ∨, ¬ La negazione di un termine indica che il termine non deve comparire nei documenti cercati Esempio – Modello Booleano: le interrogazioni 45 Semantica precisa Formalismo consolidato Formule atomiche – 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 43 Le interrogazioni sono espressioni booleane 48 8 Modello booleano: svantaggi Nessuna nozione di matching parziale e quindi nessun meccanismo di ranking – – Un documento o soddisfa la query o non la soddisfa Vengono restituti solo i documenti che la soddisfano completamente I bisogni informativi di un utente devono essere tradotti in una espressione booleana – Modello vettoriale Le interrogazioni formulate dagli utenti sono spesso troppo vaghe per essere rappresentate in questo modo Il problema principale e’ dato dal fatto che i pesi sono booleani 49 Risolve alcuni problemi del modello booleano utilizzando pesi non booleani I documenti non sono piu’ rilevanti o non rilevanti rispetto ad una query come nel modello booleano ma hanno un certo grado di rilevanza E’ quindi possibile determinare matching parziali ed effettuare il ranking del risultato 50 Modello Vettoriale: documenti e interrogazioni Modello vettoriale: pesi Valori contenuti in [0,1] wij > 0 quando ki ∈ dj wiq > 0 quando ki ∈ q vec(dj) = (w1j, w2j, ..., wtj) vec(q) = (w1q, w2q, ..., wtq) Sia t il numero di termini indice Sia la query che il documento sono vettori in uno spazio t-dimensionale j dj Piu’ e’ alto il peso di un termine indice in un documento, tanto meglio il termine rappresenta il documento Θ q i 51 52 Modello vettoriale: similarita’ Modello Vettoriale: similarita’ Similarita’ calcolata come correlazione tra i vettori vec(dj) e vec(q) sim(q,dj) = cos(Θ) = [vec(dj) • vec(q)] / |vec(dj)| * |vec(q)| = ∑ wij * wiq i 2 w ij * ∑ ∑ wiq 2 i 53 vec(q) non influenza ranking 0 ≤ sim(q,dj) ≤ 1 – – Uguale per tutti i documenti Grado di rilevanza 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 i 54 9 Modello vettoriale: calcolo dei pesi Modello vettoriale - pesi wij = tf(i,j) * idf(i) 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 – + tf(i,j) + idf(i) – Term frequency tf(i,j), la frequenza di un termine ki all’interno di un documento dj Quanto un termine rende un documento diverso dagli altri – – Se un termine compare in molti documenti non sara’ molto utile per distinguere un documento da un altro Inverse document frequency idf(i), l’inverso della frequenza di un termine ki tra tutti i documenti considerati 55 - rilevante in generale 56 Modello vettoriale – – 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 Il metodo più utilizzato è quello di usare come peso: – wij = f(i,j) * log(N/ni) Il fattore tf normalizzato (f) è: – – Modello vettoriale Sia: – f(i,j) = freq(i,j) / maxl=1,...,t(freq(l,j)) il massimo è calcolato su tutti i termini kl che compaiono in dj Tale strategia è chiamata schema di pesatura tf-idf Il fattore idf è dato da: – – idf(i) = log (N/ni) il log è usato per rendere comparabili i valori di tf e idf 57 58 Modello vettoriale Modello vettoriale Per i pesi da utilizzare nelle interrogazioni, Salton & Bucley propongono Vantaggi: – – – wiq = (0.5 + [0.5 * freq(i,q) / max(freq(l,q)]) * log(N/ni) – 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 Svantaggi: Attualmente, e’ il metodo piu’ utilizzato – 59 + ki rilevante per dj Considera tutti gli indici come indipendenti 60 10 k2 k1 d2 d5 d1 d4 d3 Esempio d7 d6 d2 d4 Esempio k2 k1 d7 d6 d5 d1 d3 k3 k3 Contenuto celle = freq(i,j) 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 Calcoliamo TF-IDF per i documenti, supponendo contenuto celle = freq(i,j) d1 – – – per gli altri: – 61 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] 62 k2 k1 d4 Esempio d7 d6 d2 d5 d1 d3 Esempio k3 Calcoliamo TF-IDF per la query – – – K1: (.5 + (.5 * 1/3))*(log (7/5) K2: (.5 + (.5 * 2/3))*(log (7/4) K3: (.5 + (.5 * 3/3))*(log (7/3) Calcoliamo similarità per ogni documento sim(d1,q) – – – quindi: [.22 .47 .85] – d2: .06 d5: .46 Ranking: – 63 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 d3: .43 d6: .19 d4: .06 d7: .17 d5 >d3>d1>d6>d7>d2=d4 64 k2 k1 d2 d4 Esempio d7 d6 d5 d1 d3 Modello Probabilistico k3 Pesi documenti e query booleani 65 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 Viene restituito solo d5 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 Query processing come processo di specifica delle caratteristice ideali della risposta 66 11 Modello Probabilistico Modello Probabilistico Il problema è capire quali sono tali caratteristiche Sappiamo solo che i termini indice devono essere utilizzati per fissare tali caratteristiche All’inizio viene effettuata una ipotesi su quali queste caratteristiche possono essere e viene eseguita la query L’utente poi decide quali documenti ottenuti come risposta sono rilevanti Il sistema usa questa informazione per raffinare la rappresentazione della risposta ideale e procedere 67 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 68 Modelli classici - confronto Determinazione termini indice 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 69 stopwords Noun groups stemming Manual indexing Riconoscimento struttura struttura Full text Index terms 70 Analisi lessicale Estrazione di Feature dal Testo Consideriamo un testo come una sequenza di caratteri Quattro fasi principali: – – – – Analisi lessicale del testo Eliminazione delle “stopword” Normalizzazione delle parole rimanenti Selezione dei termini caratterizzanti (indici) L’obiettivo è quello di trasformare il testo da una sequenza di caratteri ad una sequenza di parole, candidate ad essere utilizzate come termini indice – – – 71 Analisi lessicale Docs Eliminazione della punteggiatura Spesso elimnazione di sequenze numeriche (in genere troppo vaghe per essere significative) Conversione da maiuscolo a minuscolo 72 12 Eliminazione delle stopword Stopword: parola troppo frequenti nei documenti (ad esempio che compaiono in più dell’80% dei documenti) non utile 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 – Normalizzazione (stemming) 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 (stem)(es: connesso per connesso, connettere, connessione,ecc.) Anche lo stemming riduce la dimensione del documento – Spesso anche del 40% In genere i sistemi mantengono una lista di stopworlds che puo’ essere estesa dall’utente L’eliminazione delle stopword può però ridurre il potere di richiamo: to be or not to be rimane solo ‘be’ viene ridotto l’insieme dei documenti rilevanti restituiti 73 Plurali, gerundi, passati,… 74 Normalizzazione (stemming) Selezione degli indici Non esiste consenso comune sull’utilizzo della fase di normalizzazione Molti Web search engines non usano lo stemming Due alternative: – full-text index: tutte le parole sono utilizzate per caratterizzare il contenuto informativo del documento – 1. 2. 3. 75 Specialisti Mediante un processo automatico Usando un thesaurus 76 Selezione degli indici: processo automatico 77 a volte le stopword non vengono eliminate selezione dei termini rilevanti: Thesaurus Un metodo consolidato è quello di identificare sostantivi o gruppi di sostantivi 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) Vengono eliminati verbi, aggettivi, avverbi, ecc. L’idea e’ quella di usare un vocabolario noto per stabilire quali sono i termini indice Un thesaurus e’ quindi una sorta di vocabolario che consiste di: – – un insieme di vocaboli ed espressioni-chiave rilevanti per un particolare dominio un insieme di sinonimi per ogni vocabolo nell’insieme 78 13 Thesaurus Thesaurus: termini indice 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.) I thesauri sono di solito definiti da esperti di un certo dominio applicativo e vengono utilizzati soltanto in tale dominio Non chiaro come possano essere utilizzati in contesti generici come il Web … 79 – – Parole, gruppi di parole, frasi Spesso singole parole, in genere sostantivi o gerundi Ogni concetto e’ associato ad una descrizione 80 Thesauri: reti semantiche Thesauri: relazione preferenziale In un thesaurus che utilizza una rete semantica i termini possono essere strutturati attraverso una rete di collegamenti concettuali Una relazione semantica puo’ essere: – – – La relazione preferenziale rappresenta l’equivalenza (sinonimia) tra termini: – – preferenziale gerarchica associativa 81 SP (sinonimo preferenziale) USA (è il contrario di SP) Allievo SP Alunno Alunno USA Allievo 82 Thesauri: relazione gerarchica – Thesauri : relazione associativa La relazione gerarchica rappresenta la relazione di specializzazione che esiste tra i termini – 83 Ogni termine indice rappresenta un concetto significativo in un certo dominio applicativo La relazione associativa esprime un legame biunivoco tra le componenti lessicali La tipologia di relazione dipende dal contesto Esempi: – TL (termine largo) TS (termine stretto) Veicolo TL Auto Auto TS Veicolo Il vertice della gerarchia si chiama TA (termine più ampio) – – – – – RT (termine in relazione) antinomia: vittoria--sconfitta concomitanza: sintomo--malattia proprietà: trampolino--altezza inclusione: contenuto--contenente localizzazione: partita--stadio 84 14 Thesauri: reti semantiche Interrogazioni 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 Permette quindi l’espansione della query 85 Due tipi fondamentali: – su stringhe, con caratteri jolly e sottostringhe – Trova tutti i documenti che contengono un certo pattern rappresentato da una stringa Pattern + esteso rispetto a quello usato nell’operatore LIKE con operatori booleani Combinazione di diversi pattern 86 Interrogazioni su stringhe E’ possibile ricercare tutti i testi che contengono una certa parola, una sua “variante” o un suo sinonimo – – Interrogazioni booleane comput? --> computa, computo,... comp* --> computer, compilato, compito, ecc. – – Varianti: – – – – ricerca di frasi ricerche fuzzy ricerca per prossimità (insieme di parole e indicazione della distanza massima che devono avere all’interno del testo) 87 I termini dell’interrogazione possono essere composti mediante gli operatori booleani: p1 AND p2 p1 OR p2 NOT p1 Gli operatori booleani possono essere combinati: – (p1 AND p2) OR (p3 AND p4) 88 Indice inverso Indice inverso 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 termine documenti a 1,3,4,6,7 b 1,7 c 3,7 d 89 4,7 90 15 Indici inversi Sistemi di IR: esempi 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 91 92 Sistemi di IR: esempi 93 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 – – – – – 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 – classificare documenti in base al loro contenuto possibilità di utilizzare un thesaurus vedremo solo il primo aspetto 94 Sviluppo applicazione testuale Formati – Oracle 9i Text permette di Gestione di testi in Oracle 9i File di testo HTML, XML documenti Word PDF … Caricamento documenti indicizzazione interrogazione – – operatori thesauri Linguaggi – – 95 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) per ricerche tematiche, inglese e francese possibilità di estendere i linguaggi caricando opportuni thesauri per il linguaggio di interesse 96 16 Rappresentazione documenti Esempio 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; 97 A B C 98 Rappresentazione documenti Caricamento documenti 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 10 0 99 Indicizzazione documenti – – Indice CONTEXT Oracle supporta diverse tipologie di indice – 10 1 Direttamente con statement INSERT SQL Loader procedure ad hoc OCI CONTEXT, per ricerche su documenti arbitrari CTXCAT, per ricerche combinate su documenti brevi e dati strutturati MATCHES, per classificazione documenti Determina i termini indice associati ad ogni documento – – crea il surrogato organizza il surrogato come indice inverso noi vedremo solo il tipo CONTEXT la creazione dell’indice è un passo necessario per l’esecuzione di interrogazioni sul documento 10 2 17 Indicizzazione documenti 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 – 10 3 la colonna sia di tipo A il linguaggio sia quello specificato durante l’installazione Usa lista di stopword di default Abilita stemming In generale, il comando di creazione di indice esegue un insieme di processi che creano oggetti intermedi per ogni processo è possibile specificare delle preferenze sistema di preferences 10 4 Indicizzazione documenti 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 – – 10 5 10 6 Indicizzazione documenti preferenze 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 per ciascun processo ci sono uno o più oggetti che rappresentano i possibili comportamenti in generale, gli oggetti sono raggruppati in classi: tali oggetti non possono essere usati direttamente negli indici: – – – 10 7 si crea una preference a partire da tali oggetti template la si personalizza settandone gli attributi si usa tale preference per creare l’indice 10 8 18 Indicizzazione documenti Esempio Indicizzazione documenti preferenze nella clausola parameters si possono specificare più classi, semplicemente aggiungendo una coppia keyword-preference 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) 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'); 10 9 11 0 Datastore Filter 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 ... 11 1 11 2 Lexers – – – 11 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 Stoplist BASIC_LEXER: per la maggioranza delle lingue europee, si può modificare il comportamento di default attraverso gli attributi – parameters('datastore mypref filter myfilter') 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 lista delle stopword, che non vengono considerate per l’indicizzazione API separata: ctx_ddl.create_stoplist('mylist'); ctx_ddl.add_stopword('mylist', 'the'); 11 4 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 19 Wordlist Section Groups 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: – – – – 11 5 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) – – – – – – Default Vedremo solo questo 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 – – – – – FIELD: – SENTENCE PARAGRAPH Vedremo solo queste – – 11 9 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 – – 11 8 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 ZONE: – Section Groups le sezioni hanno tre attributi: – NULL_SECTION_GROUP: da usare quando non ci sono sezioni o ci sono solo sezioni speciali: SENTENCES e PARAGRAPH 11 7 Section Groups tipi di section groups: – 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 11 6 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 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 12 0 20 Section Groups - esempio Section Groups - esempio 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'); 12 1 Documento plain text Creazione section group ctx_ddl.create_section_group('mygroup', ’null_section_group'); aggiunta sezioni di tipo SPECIAL ctx_ddl.add_special_section('mygroup', ’SENTENCE'); 12 2 Aggiornamento degli indici L’indice creato non viene aggiornato automaticamente dopo ogni operazione DML 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 – – – Interrogazioni – – – – possibilità di ricostruzione totale o parziale – La creazione di un indice di tipo CONTEXT permette di eseguire interrogazioni sul contenuto dei documenti funzione CONTAINS, con vari criteri di selezione – Procedura ctx_ddl.sync_index – – 12 3 12 4 Interrogazioni - contains – 12 5 modificabile con preferenze BASIC_LEXER Interrogazioni - scoring select id, score(1) from texttab where contains(textcol, 'query', 1) > 0 order by score(1) desc il primo argomento è il nome della colonna, il secondo è il testo dell’interrogazione (max 2000 byte) restituisce un numero, che quantifica il match Sono case-insensitive per default – select id from texttab where contains(textcol,'query') > 0 – logici di prossimità fuzzy stemming thesaurus wildcards ricerche su sezioni 0 = no match 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) 12 6 21 Interrogazioni - scoring Interrogazioni - tipologie Modello vettoriale Pesi wij = 3 f(i,j)(1+log(N/ni)) con – – – N numero totale tuple normalizzati tra 0 e 100 la similarità è un valore tra 0 e 100 Vari operatori di composizione A. Ricerca di documenti che contengono parole o frasi – B. Ricerca all’interno di sezioni di documenti (WITHIN) C. Ricerca di documenti che trattano un certo argomento (ABOUT) Operatori logici, operatori di score 12 7 12 8 Interrogazioni A – ricerca atomica per parole o frasi Interrogazioni A - operatori di espansione delle parole interrogazioni semplici WILDCARD (%_) per pattern matching (come in LIKE di SQL) contains(text, 'dog') > 0 FUZZY (?) trova parole con spelling simile a quella data (usa wordlist): ?termine STEM ($) trova parole con radice comune (usa wordlist): $termine SOUNDEX (!) trova parole con stesso suono (usa una specifica espansione fuzzy): !termine EQUIV (=) permette di indicare esplicitamente varie forme della stessa parola: labradors = alsatians are big dog E’ possibile applicare questi operatori anche all’italiano, settando opportuni parametri si possono interrogare frasi: contains(text,'dog my cat') > 0 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 12 9 – 13 0 Interrogazioni A - operatori di prossimità operatore NEAR, che ha due forme dog ; cat ; boat – primo argomento è lista di parole – secondo è distanza massima (numero di parole) tra tutte le parole indicate – terzo specifica se tenere conto dell’ordine in cui appaiono nella lista True: considero ordine Default false Si considera indifferentemente labrador o alsatians Interrogazioni B - sezioni WITHIN: limita una query a una particolare sezione Approccio – – il punteggio dipende da quanto i termini sono vicini l’uno all’altro, in termini di numero di parole NEAR((dog,boat), 10, TRUE) 13 1 Per default case insensitive operatori di espansione, di prossimita’ 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'); – Creazione indice con preferenza create index myindex on docs(text) parameters (section group mygroup) 13 2 – Query di tipo within contains(text, ’tiger & cat within sentence') > 0 22 Interrogazioni B - esempio Interrogazioni B - 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'); contains(text, '(tiger and rabbit) within bsec') > 0 trova il documento contains(text, '(rat and ox) within asec') > 0 sezione ZONE no ctx_ddl.add_zone_section('mygroup', 'asec', 'a'); ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c'); contains(text, '(dragon and snake) within csec') > 0 sì contains(text, 'rat within asec') > 0 13 3 restituisce il documento contains(text, 'tiger within asec') > 0 non restituisce il documento 13 4 Si vogliono determinare i documenti che trattano un certo concetto la stringa specifica rappresenta il concetto (tema) cercato, rappresentato da ‘frase’ solo per inglese e francese richiede la presenza di una knowledge base – – – nel caso di sezioni FIELD il contenuto di diverse istanze viene unito, quindi la seconda query restituirebbe il documento Interrogazioni tematiche C esempio Interrogazioni tematiche C ABOUT(frase) contains(text, 'about(canines)') gerarchia di concetti con 6 sottoalberi: scienza-tecnologia, affari e finanza, politica e militare, sociale, geografia, idee astratte E’ case sensitive l’indice deve avere una componente tematica se non ce l’ha, l’interrogazione viene espansa in una query non tematica 13 5 se esiste l’indice, può restituire documenti che contengono “dog” se non esiste, about(go home now) è trasformata in $go,$home,$now 13 6 Interrogazioni C - Thesaurus Interrogazioni C - Thesaurus Possibilità di creare Thesaurus che definiscono sinonimi e relazioni gerarchiche tra parole o frasi file con formattazione particolare alcune relazioni considerate il thesaurus non viene installato di default ma deve essere caricato – 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 13 7 ogni istanza è considerata distinta: 13 8 – 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 23 Interrogazioni C - Thesaurus 13 9 SYN( term [, thesname] ) PT( term [, thesname] ) BT( term [, level [,thesname]] ) NT( term [, level [,thesname]] ) TT( term [, thesname] ) RT( term [,thesname] ) TR( term [,lan [,thesname] ]) Livelli di distanza nel thesaurus dal termine considerato Thesname: nome del thesaurus Lan: linguaggio Se non si specifica il thesaurus, si considera quello di default Interrogazioni C - esempio 14 0 Interrogazioni - operatori logici AND (&): documenti che contengono almeno un’occorrenza di ciascun termine indicato OR (|): documenti che contengono almeno un’occorrenza di almeno un termine indicato – – Interrogazioni - operatori logici Restituisce il punteggio minimo tra quelli degli operandi Restituisce il punteggio massimo tra quelli degli operandi NOT (~) è "AND NOT” (differenza): 14 1 – 'dog NOT cat' restituisce i documenti che contengono "dog" ma non contendono "cat” – il punteggio restituito è quello del figlio sinistro 14 2 Interrogazioni - osservazione – – – 14 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 – 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 – tiger e preferibilmente rabbit – Peso maggiore a chi contiene tutti i termini. Per documenti che contengono gli stessi termini, si considerano le frequenze OR – – – ACCUM – MINUS (-) sottrae il punteggio dell’operando destro a quello del sinistro contains(text, 'tiger MINUS rabbit') > 0 Interrogazioni - osservazione AND – Se la query contiene – BT(dog) E nel thesaurus dog viene generalizzato con – animal la query viene sostituita con – dog OR animal Si veda dopo per il significato di OR MINUS – semplicemente somma i punteggi più termini compaiono, più il documento è rilevante 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 14 4 24 Interrogazioni - operatori di score Basi di dati per la gestione di immagini 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 Se il valore diventa maggiore di 100, lo si setta a 100 THRESHOLD (>) elimina i documenti sotto una certa soglia contains(text,'(dog*2) AND cat') > 50 14 5 14 6 Problematiche Rappresentazione Generazione metadati (automatica + manuale) La realizzazione di un sistema per la gestione di immagini deve affrontare le seguenti problematiche – – – immagini rappresentazione delle immagini Misura della similarità Metodi di accesso e ritrovamento Features + attributi Quali features e attributi? 14 7 14 8 Features Forme (shape) – – 14 9 Features - shape l’idea è quella di estrarre delle forme dall’immagine possono rappresentare contorni o approssimazione di contorni contorno Approssimazione contorno 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 15 0 25 Features Features Oggetti semantici – con oggetto semantico si intende un oggetto significativo dal punto di vista dell’applicazione – 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 – – 15 1 – casa, viso, strada – – – – – – – 15 3 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 Green 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) 15 4 Esempio proprietà globali proprietà locali le proprietà sono rappresentate da un nome (Red, Green, Blue) e da un dominio (ad esempio {0,…,8}) 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 15 5 coarseness (rugosità) contrasto direzionalità 15 2 Colore – rappresentano informazioni relative alle “regolarità” o “irregolarità” dell’immagine dipendono dalla percezione visiva di un’immagine si basano sulle cosiddette Tamura features Features Texture (tessitura) 15 6 Red = 5 Green = 1 Blue = 3 26 Descrittori di proprietà Osservazione 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à 15 7 15 8 Definizione di base di dati di immagini – – GI è un insieme di immagini a cui è stata associata una griglia Query per similitudine Una base di dati di immagini è una tripla (GI, Prop, Rec) dove: – 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 Le query possono coinvolgere sia proprietà locali che proprietà globali problema: come determino la similitudine tra due immagini? Approccio fondamentale: approccio metrico Prop rappresenta le proprietà locali delle immagini Rec rappresenta le proprietà globali delle immagini 15 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 16 0 Esempio applicato alle proprietà globali 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: – – – 16 1 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 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 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: – – – – 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 16 2 27 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 – f(I) = {P1,…,Pt} – – – Pi = (xi1,…,xin) – – 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 16 Spazio 5 n-dimensionale indice DB immagini Spazio s-dimensionale 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 – 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 16 6 Approccio metrico per proprietà globali in questo caso s coincide con n si noti che il punto ottenuto si può interpretare come una proprietà globale dell’immagine Approccio metrico per proprietà globali 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. 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 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 – 16 4 Indicizzazione 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 – per determinare se le immagini I1 e I2 sono simili in base alla distanza Euclidea: – 16 3 Approccio metrico per proprietà locali p1 p5 Indicizzazione per shape 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 Algo di indiciz. shape p3 p4 indice DB immagini Approssimazioni shape p1 p5 16 7 16 8 28 Rappresentazione immagini nei DBMS 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: – Rappresentazione immagini nei DBMS – – 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 17 1 rappresentazione interna: 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 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 17 2 Gestione immagini in Oracle Tipi di dato Ogni oggetto multimediale in Oracle può essere memorizzato, manipolato e interrogato utilizzando un particolare tipo di dato – ORDSource definiti nel package ORDSYS (non indicato nel seguito) Per le immagini – – + attributi strutturali ORDImage: un’istanza è costituita da: 17 3 – Rappresentazione immagini nei DBMS Quindi, per rappresentare un database di immagini IDB=(GI, Prop, Rec) in un DBMS – riferimento esterno: 17 0 – data un’immagine, trovare le immagini simili a quella in input 16 9 La gestione delle immagini nei vari DBMS dipende dal sistema prescelto in genere, viene permessa una duplice rappresentazione 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 ORDImage 17 4 features ORDImageSignature 29 Esempio Si supponga di volere creare una tabella contenente delle fotografie in particolare la tabella deve contenere: – – – – ORDImage - attributi 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); 17 5 17 6 ORDImage - Attributi ORDImage - Costruttori Init() inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi: – – – – 17 7 Esempio – insert into stockphotos (1, “John Ross”, NULL, ORDImage.init(‘FILE’,’MY_IMAGES,’image1.gif’)); immagine memorizzata all’esterno inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi: – – 17 9 insert into stockphotos (1, “John Ross”, NULL, OrdImage.init()); ORDImage - esempio Init( srcType IN VARCHAR2 srcLocation IN VARCHAR2, srcName IN VARCHAR2) – source.localdata=empty_blob() source.local = 1 (indica che l’immagine è caricata nel file system locale) source.updateTime = SYSDATE Esempio 17 8 ORDImage - Costruttori immagine memorizzata internamente – – 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 18 0 30 Esempio - caricamento dati nel DBMS ORDImage - Caricamento 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_location IN VARCHAR2, source_name IN VARCHAR2) RAW: dati che non vengono interpretati da Oracle (simile a LOB), utilizzato durante il caricamento, come “buffer” temporaneo 18 1 Aggiorna source – – il file viene caricato in localData e local viene posto a 1 inizializzati tutti gli altri campi con valori in INPUT 18 2 ORDImage- Metodi per la manipolazione Esempio - riferimento esterno 18 3 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; – – – – – 18 5 Metodi di manipolazione 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 settaggio attributi: – metodi di processamento: – metodi di copia metodi di processamento metodi di settaggio attributi metodi di accesso agli attributi (circa uno per attributo) 18 4 Metodo di copia: – Si dividono in diversi gruppi tra cui: – Metodi di manipolazione 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; importFrom() chiama direttamente setProperties da chiamare manualmente negli altri casi Metodi di accesso: – 18 6 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 31 18 7 Esempio ORDImageSignature 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 - segnatura La segnatura contiene le seguenti features: – 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 Image1 e Image2 sono simili rispetto al colore globale ma non rispetto alla locazione I valori associati alle precedenti proprietà rappresentano un punto: multidimensionale la somma di tali valori per un’immagine è 100 18 9 19 0 ORDImageSignature - segnatura ORDImageSignature - metodi inizializzazione: generazione segnatura: altri che non vediamo – – 19 1 unico attributo, di tipo BLOB 18 8 ORDImageSignature - segnatura Rappresenta le feature calcolate a partire da un’immagine l’insieme delle features viene chiamato signature metodo init() metodo generateSignature(ORDImage) 19 2 32 19 3 Esempio Caricamento completo immagine 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; – attributi descrittivi – segnatura 19 4 determinati con metodo setProperties() calcolata con metodo generateSignature() Interrogazioni Due operatori (non metodi) principali: – – CREATE INDEX imgindex on stockphotograph(photo.signature) INDEXTYPE IS ORDSYS.ORDImageIndex; IMGsimilar: prese due segnature, stabilisce se sono simili, confrontando le segnature IMGscore: restituisce il valore di similarità per due segnature 19 6 IMGSimilar IMGSimilar IMGSimilar( signature IN RAW, querysignature IN RAW, weightstring IN VARCHAR2, threshold in FLOAT, [referencetoScore IN NUMBER]) weightstring ha la forma – 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) – ‘color = “val” texture = “val” shape = “val” location = “val”’ dove val è un valore tra 0 e 1 che “pesa” una certa feature 19 7 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()) – La creazione degli indici non è immediata Esempio: per creare un indice sull’attributo photo della tabella stockphotograph: 19 5 immagine stessa (BLOB o BFILE) Indici In Oracle, un’immagine è rappresentata secondo tre componenti: 19 8 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 33 IMGScore Esempio IMGScore(referencetoSimilar IN NUMBER) la query che invoca questo metodo deve anche invocare IMGSimilar – 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 19 9 – – – 20 0 20 1 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 SELECT A1,…,An FROM (SELECT A1,…,Am, – – – 20 2 texture = 5 color = 90 shape = 50 location = 15 la distanza è calcolata come segue: poiché il threshold è 50, questa immagine non verrebbe restituita supponiamo adesso di invertire i valori associati al colore e alla locazione, la distanza diventa: in questo caso l’immagine verrebbe restituita – – 0.1 * 15 + 0.6 * 90 + 0.2 * 5 + 0.1 * 50 = 61.5 0.6 * 15 + 0.1 * 90 + 0.2 * 5 + 0.1 * 50 = 24.0 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; RANK() OVER(ORDER BY Ai ASC, ORDER BY Aj DESC) AS rank FROM … WHERE ...) WHERE rank <= N; permette di ordinare i risultati e restituire solo i primi N rispetto all’ordinamento prescelto Si consideri adesso un’immagine con le seguenti distanze dalle feature della query: – Top-N 20 3 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 – color = 0.6 texture = 0.2 shape = 0.1 location = 0.1 – Esempio (continua) 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 4 34 Esempio Esempio (continua) Si supponga di volere inserire nella tabella la seguente tupla: Si consideri la tabella Panorami, memorizzata in una base di dati Oracle 9i. Tale tabella contiene i seguenti campi: – – – – – Id = 1 Nome = “Genova3” Descrizione = “Il porto antico di notte” Panorama = “GePA.gif” Id, di tipo NUMBER Nome, di tipo VARCHAR(30) Descrizione, di tipo VARCHAR(200) Panorama, di tipo ORDSYS.ORDImage Panorama_sign ORDSYS.ORDImageSignature 20 5 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é. 20 6 Esempio (continua) Esempio (continua) INSERT INTO Immagini VALUES (1, “Genova3”,”Il porto antico di notte”,ORDSYS.ORDImage.init(), ORDSYS.ORDImageSignature.init()); • 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_sign,query_pan, ‘color = “1” texture =“0” shape = “0” location = “0” ‘, 10, 12) = 1 SELECT Panorama, Panorama_sign INTO Image, sign FROM Panorami WHERE id = 1 for UPDATE; Image.importFrom(ctx, ‘FILE’,’IMMAGINI’,’GePA.gif’); sign.generateSignature(Image); 20 7 UPDATE Panorami SET Panorama = Image, Panorama_sign = sign WHERE id = 1; 20 8 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 20 9 35