1
Basi di dati multimediali
2
Basi di dati multimediali
Nuove applicazioni richiedono la rappresentazione e la gestione di dati non tradizionali:– testi arbitrari – immagini– audio– video– dati tradizionali (relazionali, orientati ad oggetti)
3
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
4
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? Come si fa a capire che un’immagine contiene una certa persona
Query– un linguaggio di query per MMDBMS deve avere
caratteristiche particolari– query processing deve analizzare il contenuto degli oggetti
5
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?
Analizzeremo solo i primi due aspetti
6
Rappresentazione
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
7
Rappresentazione
Nelle basi di dati relazionali ad oggetti, i dati multimediali vengono memorizzati secondo due distinte modalità:– 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
8
Rappresentazione
Oggettomultimediale
riferimento
LOB
DBMS
Oggettomultimediale
9
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
10
Rappresentazione - LOB
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 (comportamento transazionale)
11
Rappresentazione - ORDBMS
Gli ORDBMS forniscono inoltre nuovi tipi di dato complessi che supportano:– la rappresentazione del dato multimediale– nuovi metodi & operatori– metodi per l’ottimizzazione di interrogazioni
12
Rappresentazione - ORDBMS
Illustra/Informix DataBlade IBM Database Extender Oracle Oracle Intermedia Librerie fornite da terze parti
13
Rappresentazione
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
14
Rappresentazione
Spesso il surrogato si ottiene associando a ciascun oggetto un insieme di attributi
due tipi di attributi:– descrittivi
associano informazioni descrittive (relazionali) a ciascun oggetto vengono associati manualmente all’oggetto
– content-based (anche chiamati features) 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
15
Esempio
Attributi descrittivinome: Villa Medicilocalità:Roma
Features:forma:
16
Rappresentazione
Oggetti multimediali
Features +
attributi
Generazione metadati(automatica + manuale)
I sistemi mettono a disposizione funzionalità per estrarre feature e per utilizzare tali feature nel contesto delle interrogazioni
17
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
18
Query
Due aspetti– definizione caratteristiche linguaggio di
interrogazione– query processing
è necessario stabilire:– approccio generale all’esecuzione delle query– aspetti che devono essere supportati
19
Idea di base query processing
Oggetti multimediali
Features+
attributi
Generazione metadati
Meccanismo di interrogazione
1
2
3
La query viene eseguita sui metadati (attributi + features) dai metadati si risale ai documenti originali i documenti originali vengono restituiti all’utente
20
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
21
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– assumo di avere estratto le forme dalle immagini– assumo di avere associato informazione descrittiva
(luogo, tipo abitazione)
22
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
– le condizioni in genere sono verificate in una certa misura, data dalla similitudine tra ciò che stiamo cercando e ciò che abbiamo trovato
23
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
– 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
24
Ranking
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
25
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– contengono una persona (0.7)– non contengono alberi (0.3)
la similarità viene pesata
26
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
– 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)
relazioni temporali: associano le feature associate ad un oggetto da un punto di vista temporale
– importante per audio/video– sequenze audio/video: prima, dopo, subito prima, subito dopo,
contemporaneamente
27
Due approcci alla specifica delle query
Si definisce un linguaggio di query– ad esempio, si estende SQL con condizioni specifiche da
applicare ad oggetti multimediali– tipico DBMS estesi alla gestione di dati multimediali
query by example:– 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
28
Nel seguito ...
Considereremo due media:– testo– immagini
per ciascuno illustreremo– rappresentazione del contenuto– query in alcuni sistemi
29
Basi di dati testuali
30
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
– Un documento è rilevante se l’utente che formula l’interrogazione giudica che il documento e l’interrogazione si riferiscono entrambi allo stesso argomento
31
Basi di dati testuali
L’enfasi è sulla caratterizzazione dei requisiti informativi dell’utente– 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
32
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:– 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
33
Basi di dati testuali
L’avvento del Web ha cambiato le cose:– È 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
34
Basi di dati testuali
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
35
Due criteri di valutazione:– precisione (precision)– richiamo (recall)
Basi di dati testuali
36
Valutazione di una Interrogazione
RilevantiRestituiti
RilevantiNon restituiti
Non rilevantirestituiti
Non rilevantiNon restituiti
Documenti contenuti nel database
37
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
38
Richiamo
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
39
Precisione
La precisione è la percentuale di documenti rilevanti sul totale dei documenti restituiti
Rilevanti Restituiti
Precisione =
Totale Restituiti
40
Precisione & Richiamo
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
41
Basi di dati testuali
Due problemi principali:– Sviluppo di tecniche efficienti per la
rappresentazione dei documenti all’interno del sistema
– Sviluppo di tecniche per la formulazione e l’esecuzione delle interrogazioni
42
Rappresentazione di documenti testuali
43
Modellazione
Estrazione di feature
Database
44
Modellazione
Nel caso di documenti testuali le feature sono i termini utilizzati come indici
Gli indici possono essere:– 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
45
structure
stopwordsNoungroups stemming
Manual indexingDocs
structure Full text Index terms
Modellazione - determinazione termini indice
46
Modellazione - determinazione termini indice
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)
47
Modellazione e query
Docs
Information Need
Index Terms
doc
query
Rankingmatch
48
Modellazione
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
49
Ranking
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)
50
Modelli
Non-Overlapping ListsProximal Nodes
Structured Models
Retrieval: Adhoc Filtering
Browsing
U s e r
T a s k
Classic Models
boolean vector probabilistic
Browsing
Flat Structure Guided Hypertext
51
Modelli Classici – Concetti Base
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)
52
Modelli Classici – Concetti Base
Non tutti i termini che compaiono in un documento sono egualmente rappresentativi del suo contenuto informativo:– 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
53
Sia– 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
55
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:– Es: computer network
Modelli Classici – Concetti Base
56
Modello booleano
E’ un modello semplice basato sulla teoria degli insiemi
Le interrogazioni sono espressioni booleane – Semantica precisa– Formalismo consolidato– q = ka (kb kc)
57
I pesi assumono valori binari:– 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
58
Si supponga:– q = ka (kb kc) = (ka kb) (ka kc)
La query può essere equivalentemente formulata come una disgiunzione di vettori della forma (ka,kb,kc)– vec(qdnf) = (1,1,1) (1,1,0) (1,0,0)
I vettori vengono chiamati componenti congiuntive della query q (qcc)
Modello Booleano
59
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
Modello Booleano - similarità
60
Modello Booleano
Esempio:– 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
61
Modello booleano - svantaggi
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
62
Modello vettoriale
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)
63
Modello vettoriale
Sia i documenti che le interrogazioni sono rappresentate come dei vettori di pesi
Si definisce:– wij > 0 quando ki dj
– wiq > 0 quando ki q
– vec(dj) = (w1j, w2j, ..., wtj)
– vec(q) = (w1q, w2q, ..., wtq)
64
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)
i
j
dj
q
65
sim(q,dj) = cos() = [vec(dj) vec(q)] / |dj| * |q| =
Modello Vettoriale
ii
i
22iqij
iq * ij
w*w
ww
66
Modello vettoriale
Dato che wij >= 0 and wiq >= 0:– 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
67
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 Fattore tf, la frequenza di un termine all’interno di un documento
– Quanto un termine compare all’interno di tutti i documenti nel db
Fattore idf, l’inverso della frequenza di un termine tra tutti i documenti considerati
68
Modello vettoriale - pesi
wij = tf(i,j) * idf(i) + tf(i,j)
– + ki rilevante per dj
+ idf(i,)– - ki rilevante in generale
– termini che compaiono spesso in tutti i documenti non sono utili per distinguere un documento rilevante da uno non rilevante
69
Modello vettoriale
Sia:– 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 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:– idf(i) = log (N/ni)
– il log è usato per rendere comparabili i valori di tf e idf
70
Modello vettoriale
Il metodo più utilizzato è quello di usare come peso:– wij = f(i,j) * log(N/ni)
Tale strategia è chiamata schema di pesatura tf-idf
71
Modello vettoriale
Per i pesi da utilizzare nelle interrogazioni, Salton & Bucley propongono
– wiq = (0.5 + [0.5 * freq(i,q) / max(freq(l,q)]) * log(N/ni)
72
Modello vettoriale
Vantaggi:– 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:– Considera tutti gli indici come indipendenti
73
k1 k2 k3 q djd1 1 0 1 2d2 1 0 0 1d3 0 1 1 2d4 1 0 0 1d5 1 1 1 3d6 1 1 0 2d7 0 1 0 1
q 1 1 1
d1
d2
d3d4 d5
d6d7
k1k2
k3
Esempio
Pesi documenti e query booleani
74
d1
d2
d3d4 d5
d6d7
k1k2
k3
k1 k2 k3 q djd1 1 0 1 4d2 1 0 0 1d3 0 1 1 5d4 1 0 0 1d5 1 1 1 6d6 1 1 0 3d7 0 1 0 2
q 1 2 3
Esempio
Pesi documenti booleani, query non booleani
75
d1
d2
d3d4 d5
d6d7
k1k2
k3
k1 k2 k3 q djd1 2 0 1 5d2 1 0 0 1d3 0 1 3 11d4 2 0 0 2d5 1 2 4 17d6 1 2 0 5d7 0 5 0 10
q 1 2 3
Esempio
Pesi documenti e query non booleani
76
d1
d2
d3d4 d5
d6d7
k1k2
k3
Esempio
Calcoliamo TF-IDF per i documenti, supponendo contenuto celle = freq(i,j)
d1– K1: ((2/2)*(log (7/5))= .33– K2: (0*(log (7/4))) = 0– K3: ((1/2)*(log (7/3))) = .42
per gli altri:– [.34 0 0], [0 .19 .85], [.34 0 0], [.08 .28 .85], [.17 .56
0], [0 .56 0]
77
Esempio
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)))
quindi: [.22 .47 .85]
d1
d2
d3d4 d5
d6d7
k1k2
k3
78
Esempio
Calcoliamo similarità per ogni documento sim(d1,q)
– 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 d3: .43 d4: .06 d5: .46 d6: .19 d7: .17
79
Modello Probabilistico
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
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
Modello Probabilistico
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
82
Modelli classici - confronto
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
83
Estrazione di Feature dal Testo
Quattro fasi:– Analisi lessicale del testo– Eliminazione delle “stopword” – Normalizzazione delle parole rimanenti– Selezione dei termini caratterizzanti (indici)
84
Analisi lessicale
L’obiettivo è quello di trasformare il testo da una sequenza di caratteri ad una sequenza di parole– Eliminazione della punteggiatura– Conversione da maiuscolo a minuscolo
85
Eliminazione delle stopword
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
86
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 (es: connesso, connettere, connessione,ecc.)
Non esiste consenso comune sull’utilizzo della fase di normalizzazione
87
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
88
Selezione degli indici
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)
89
Thesaurus
Un thesaurus consiste di:– 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
90
Thesaurus
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.)
91
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:– preferenziale– gerarchica– associativa
92
Relazione preferenziale
La relazione preferenziale rappresenta l’equivalenza (sinonimia) tra termini:– SP (sinonimo preferenziale)– USA (è il contrario di SP)
Allievo SP Alunno Alunno USA Allievo
93
Relazione gerarchica
La relazione gerarchica rappresenta la relazione di specializzazione che esiste tra i termini– TL (termine largo)– TS (termine stretto)
Veicolo TL Auto Auto TS Veicolo Il vertice della gerarchia si chiama TA (termine
più ampio)
94
Relazione associativa
La relazione associativa esprime un legame biunivoco tra le componenti lessicali
– RT (termine in relazione)
La tipologia di relazione dipende dal contesto Esempi:
– antinomia: vittoria--sconfitta– concomitanza: sintomo--malattia– proprietà: trampolino--altezza– inclusione: contenuto--contenente– localizzazione: partita--stadio
95
Reti semantiche
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
96
Thesaurus
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
97
Indice inverso
termine documenti
a 1,3,4,6,7
b
c
d
1,7
3,7
4,7
98
Indici inversi
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
99
Architettura di riferimento
Text db
DB managerindicizzazione
indice
Interfacciautente
traduttore
Ricerca
ordinamento
100
Interrogazioni
Due tipi fondamentali:– su stringhe, con caratteri jolly e sottostringhe– con operatori booleani
101
Interrogazioni su stringhe
E possibile ricercare tutti i testi che contengono una certa parola, una sua “variante” o un suo sinonimo
– 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)
102
Interrogazioni booleane
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)
103
Sistemi di IR: esempi
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)
104
Sistemi di IR: esempi
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
105
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
possibilità di utilizzare un thesaurus
– classificare documenti in base al loro contenuto vedremo solo il primo aspetto
106
Gestione di testi in Oracle 9i
Formati– File di testo– HTML, XML– documenti Word– PDF– …
Linguaggi– per ricerche tematiche, inglese e francese– possibilità di estendere i linguaggi caricando opportuni thesauri
per il linguaggio di interesse
107
Sviluppo applicazione testuale
Caricamento documenti indicizzazione interrogazione
– operatori– thesauri
108
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;
109
Rappresentazione documenti
A
B
C
110
Rappresentazione 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
111
Caricamento documenti
Direttamente con statement INSERT SQL Loader procedure ad hoc OCI
112
Indicizzazione documenti
Oracle supporta diverse tipologie di indice– 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
113
Indice CONTEXT
Determina i termini indice associati ad ogni documento– crea il surrogato– organizza il surrogato come indice inverso
114
Indicizzazione documenti
comando per la creazione di indicicreate index INDEXNAME on TABLE(COLUMN)
indextype is ctxsys.context
il comando per default assume che:– la colonna sia di tipo A– il linguaggio sia quello specificato durante l’installazione
è possibile modificare le impostazioni di base, customizzando il comando CREATE INDEX
– sistema di preferences
115
Indicizzazione documenti
In generale, il comando di creazione di indice esegue un insieme di processi che creano oggetti intermedi
per ogni processo è possibile specificare delle preferenze
116
Indicizzazione documenti
117
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
– 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
118
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:
119
Indicizzazione documenti - preferenze
tali oggetti non possono essere usati direttamente negli indici:– si crea una preference a partire da tali oggetti
template– la si personalizza settandone gli attributi– si usa tale preference per creare l’indice
120
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');
121
Indicizzazione documenti - preferenze
nella clausola parameters si possono specificare più classi, semplicemente aggiungendo una coppia keyword-preference
– 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)
122
Datastore
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
...
123
Filter
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
124
Lexers
BASIC_LEXER: per la maggioranza delle lingue europee, si può modificare il comportamento di default attraverso gli attributi
– 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
125
Stoplist
lista delle stopword, che non vengono considerate per l’indicizzazione
API separata: ctx_ddl.create_stoplist('mylist'); ctx_ddl.add_stopword('mylist', 'the');
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
126
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:– 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)
127
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
– 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
128
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 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
129
Section Groups
le sezioni hanno tre attributi:– 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: – 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
130
Section Groups
SPECIAL: non sono riconosciute attraverso tag, ma dal lexer attraverso la punteggiatura
– SENTENCE– PARAGRAPH
131
Section groups
FIELD: – 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
132
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');
133
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');
134
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
possibilità di ricostruzione totale o parziale
135
Interrogazioni
La creazione di un indice di tipo CONTEXT permette di eseguire interrogazioni sul contenuto dei documenti
funzione CONTAINS, con vari criteri di selezione– logici– di prossimità– fuzzy– stemming– thesaurus– wildcards– ricerche su sezioni
Sono case-insensitive per default– modificabile con preferenze BASIC_LEXER
136
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 0 = no match
137
Interrogazioni - scoring
select id, score(1) from texttab where contains(textcol, 'query', 1) > 0 order by score(1) desc
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)
138
Interrogazioni - scoring
Modello vettoriale Pesi wij = 3f(1+log(N/n)) con
– 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
139
Interrogazioni - tipologie
interrogazioni semplici
contains(text, 'dog') > 0
si possono interrogare frasi:
contains(text,'dog my cat') > 0 le stopword sono trattate come wildcard (matchano
qualsiasi parola)
contains(text, 'dog the cat') > 0restituisce 'dog my cat’, 'dog your cat’, 'dog the cat'
le stopword da sole vengono eliminate dalla query
140
Interrogazioni - operatori booleani
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
141
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
142
Interrogazioni - operatori di espansione delle parole
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
143
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
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
144
Interrogazioni - sezioni
WITHIN: limita una query a una particolare sezione
contains(text, ’tiger & cat within sentence') > 0
145
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');
contains(text, 'rat within asec') > 0
restituisce il documento contains(text, 'tiger within asec') > 0
non restituisce il documento
146
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') > 0sì
nel caso di sezioni FIELD il contenuto di diverse istanze viene unito, quindi la seconda query restituirebbe il documento
147
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
– 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
148
Interrogazioni tematiche - esempio
contains(text, 'about(canines)')
se esiste l’indice, può restituire documenti che contengono “dog”
se non esiste, about(go home now) è trasformata in $go,$home,$now
149
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
– 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
150
Interrogazioni - Thesaurus
file con formattazione particolare
alcune relazioni considerate
– 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
151
Thesaurus - operatori
SYN( term [, thesname] )
PT( term [, thesname] )
BT( term [, level [,thesname]] )
NT( term [, level [,thesname]] )
TT( term [, thesname] )
RT( term [,thesname] )
TR( term [,lan [,thesname] ])
152
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– tiger e preferibilmente rabbit
– somma i punteggi
153
Osservazione
AND– 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
ACCUM– semplicemente somma i punteggi– più termini compaiono, più il documento è rilevante
154
Osservazione
OR– 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
MINUS– toglie punteggi – un documento è più rilevante se i termini a destra non
compaiono
155
Basi di dati per la gestione di immagini
156
Problematiche
La realizzazione di un sistema per la gestione di immagini deve affrontare le seguenti problematiche
– rappresentazione delle immagini– Misura della similarità– Metodi di accesso e ritrovamento
157
Rappresentazione
immagini Features +
attributi
Generazione metadati(automatica + manuale)
Quali features e attributi?
158
Features
Forme (shape)– l’idea è quella di estrarre delle forme dall’immagine – possono rappresentare contorni o approssimazione di contorni
Approssimazione contornocontorno
159
Features - shape
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
160
Features
Oggetti semantici– con oggetto semantico si intende un oggetto
significativo dal punto di vista dell’applicazione 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
161
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
coarseness (rugosità) contrasto direzionalità
162
Features
Colore– 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
163
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)
proprietà globali
– 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)
proprietà locali
le proprietà sono rappresentate da un nome (Red, Green, Blue) e da un dominio (ad esempio {0,…,8})
164
Esempio
165
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 Red = 5 Green = 1 Blue = 3
166
Descrittori di proprietà
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à
167
Osservazione
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
168
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 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
169
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 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
170
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:
– 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
171
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:
– 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,256i=1,256 (diffr[i,j] + diffg[i,j] + diffb[i,j]))1/2
172
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)
per determinare se le immagini I1 e I2 sono simili in base alla distanza Euclidea:
– 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
173
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– 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– in questo caso s coincide con n
si noti che il punto ottenuto si può interpretare come una proprietà globale dell’immagine
174
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
Spazio n-dimensionale
Spazio s-dimensionale
Algo di indiciz. indice DB
immagini
175
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– se la shape è rappresentata da una spezzata costituita da n
segmenti, la spezzata può essere descritta da una sequenza di n punti bidimensionali p2
p1
p3
p4
p5
176
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
p1
p3
p4
p5
177
Indicizzazione per shape
shape Approssimazionishape
Algo di indiciz. indice DB
immagini
178
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:– data un’immagine, trovare le immagini simili a quella
in input
179
La gestione delle immagini nei vari DBMS dipende dal sistema prescelto
in genere, viene permessa una duplice rappresentazione
– riferimento esterno: il DB contiene riferimento ai file che contengono le immagini
– rappresentazione interna: 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
180
Quindi, per rappresentare un database di immagini IDB=(GI, Prop, Rec) in un 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
Rappresentazione immagini nei DBMS
181
Rappresentazione immagini nei DBMS
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
182
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:
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
183
Tipi di dato
+ attributi strutturali
features
ORDImage
ORDImageSignature
ORDSource
184
Esempio
Si supponga di volere creare una tabella contenente delle fotografie in particolare la tabella deve contenere:
– 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);
185
ORDImage - attributi
186
ORDImage - Attributi
187
ORDImage - Costruttori
Init()– immagine memorizzata internamente
inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi:
– source.localdata=empty_blob()– source.local = 1 (indica che l’immagine è caricata nel file system
locale)– source.updateTime = SYSDATE
Esempioinsert into stockphotos (1, “John Ross”, NULL, OrdImage.init());
188
ORDImage - Costruttori
Init( srcType IN VARCHAR2
srcLocation IN VARCHAR2,
srcName IN VARCHAR2) – immagine memorizzata all’esterno
inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi:– 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
189
ORDImage - esempio
Esempio– insert into stockphotos (1, “John Ross”, NULL,
ORDImage.init(‘FILE’,’MY_IMAGES,’image1.gif’));
190
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_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
191
Esempio - caricamento dati nel DBMS
DECLAREImage ORDSYS.ORDImage;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 stockphotosWHERE photo_id = 1 for UPDATE;Image.importFrom(ctx, ’file’,’ORDIMGDIR’,’redplaid.gif’);…UPDATE stockphotos SET photo = Image WHERE photo_id = 1;COMMIT;
END;
FOR UPDATE: lock sulla tupla
192
Esempio - riferimento esterno
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;
193
ORDImage- Metodi per la manipolazione
Si dividono in diversi gruppi tra cui:– metodi di copia– metodi di processamento– metodi di settaggio attributi– metodi di accesso agli attributi (circa uno per
attributo)
194
Metodi di manipolazione
Metodo di copia:– Copy (dest IN OUT ORDImage)– copia l’immagine in dest, inclusi i valori di tutti gli
attributi
metodi di processamento:– process(command IN VARCHAR2)– command rappresenta una lista di tecniche di image
processing da applicare alle immagini esempio: cambiamento scala
195
Metodi di manipolazione
Metodi di settaggio attributi:– setProperties()– determina i valori per gli attributi di ORDImage, escluso
source– importFrom() chiama direttamente setProperties– da chiamare manualmente negli altri casi
Metodi di accesso:– circa uno per ogni attributi (si veda il manuale)– getHeight() RETURN INTEGER– restituisce il valore associato all’attributo HEIGHT
196
Esempio
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;
197
ORDImageSignature
Rappresenta le feature calcolate a partire da un’immagine
l’insieme delle features viene chiamato signature– unico attributo, di tipo BLOB
198
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 I valori associati alle precedenti proprietà rappresentano un punto:
multidimensionale la somma di tali valori per un’immagine è 100
199
ORDImageSignature - segnatura
Image1 e Image2 sono simili rispetto al colore globale ma non rispetto alla locazione
200
ORDImageSignature - segnatura
201
ORDImageSignature - metodi
inizializzazione:– metodo init()
generazione segnatura:– metodo generateSignature(ORDImage)
altri che non vediamo
202
Esempio
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;
203
Caricamento completo immagine
In Oracle, un’immagine è rappresentata secondo tre componenti:
– immagine stessa (BLOB o BFILE) 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())
– attributi descrittivi determinati con metodo setProperties()
– segnatura calcolata con metodo generateSignature()
204
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;
205
Interrogazioni
Due operatori (non metodi) principali:– IMGsimilar: prese due segnature, stabilisce se sono
simili, confrontando le segnature– IMGscore: restituisce il valore di similarità per due
segnature
206
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
207
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)
– 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
208
IMGScore
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
209
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:
– 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
210
Esempio (continua)
Supponendo di considerare una variabile– 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
211
Esempio (continua)
Si consideri adesso un’immagine con le seguenti distanze dalle feature della query:
– texture = 5– color = 90– shape = 50– location = 15
la distanza è calcolata come segue:– 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:– 0.6 * 15 + 0.1 * 90 + 0.2 * 5 + 0.1 * 50 = 24.0
in questo caso l’immagine verrebbe restituita
212
Esempio (continua)
Supponiamo di volere determinare la fotografica più simile a FSELECT 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;
213
Esempio
Si consideri la tabella Panorami, memorizzata in una base di dati Oracle 9i. Tale tabella contiene i seguenti campi:
– Id, di tipo NUMBER– Nome, di tipo VARCHAR(30)– Descrizione, di tipo VARCHAR(200)– Panorama, di tipo ORDSYS.ORDImage– Panorama_sign ORDSYS.ORDImageSignature
214
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é.
215
Esempio (continua)
INSERT INTO Immagini
VALUES
(1, “Genova3”,”Il porto antico di notte”,ORDSYS.ORDImage.init(), ORDImageSignature());
SELECT Panorama INTO Image FROM PanoramiWHERE id = 1 for UPDATE;
Image.importFrom(ctx, ‘FILE’,’IMMAGINI’,’GePA.gif’);sign.generateSignature(Image);
UPDATE Panorami SET Panorama = Image, Panorama_sign = signWHERE id = 1;
216
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
la scelta di un threshold del 10% mi permette di selezionare solo le immagini molto simili a quella data
217
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