Basi di dati multimediali - person.dibris.unige.it fileIndici: – come indicizzare gli oggetti...
Transcript of Basi di dati multimediali - person.dibris.unige.it fileIndici: – come indicizzare gli oggetti...
1
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
2
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 forward– 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
3
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
4
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
11
Rappresentazione - ORDBMS
� Gli ORDBMS forniscono inoltre nuovi tipi didato complessi che supportano:– la rappresentazione del dato multimediale– Metodi per la manipolazione dei dati multimediali– Predicati e funzioni per l’interrogazione dei dati
multimediali
12
Rappresentazione
� Gli oggetti multimediali sono completamente non strutturati� per poterli interrogare in modo ragionevole, è necessario
sovraimporre a ciascun oggetto una rappresentazione concettuale (surrogato)
– 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
5
13
Rappresentazione
� Surrogato composto da 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
14
Rappresentazione - esempio
Attributi descrittivinome: Villa Medicilocalità:Roma
Features:forma:
15
Rappresentazione
Oggetti multimediali
Features+
attributi
Generazione metadati(automatica + manuale)
I sistemi mettono a disposizione funzionalità per estrarre feature e per utilizzare tali featurenel contesto delle interrogazioni
6
16
Rappresentazione
� Conseguenza– i documenti multimediali potranno essere confrontati
solo rispetto agli attributi e alle feature– feature uguali non sempre si riferiscono ad oggetti
uguali– Esempio
si puo’ riferire sia ad una villa che ad un’industria
17
Query processing: idea di base
Oggetti multimediali
Features+
attributi
Generazione metadati
Meccanismo di interrogazione
1
2
3
1. La query viene eseguita sui metadati (attributi + features)2. dai metadati si risale ai documenti originali3. i documenti originali vengono restituiti all’utente
18
Query processing: caratteristiche
1. Le query devono potere essere eseguite su diversi tipi di media contemporaneamente
2. devono considerare attributi e features3. devono supportare query per similitudine4. devono associare un valore di rilevanza ad
ogni oggetto restituito5. devono poter essere pesate
7
19
2. 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)
20
3. Query per similitudine
� 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 abbiamotrovato
21
3. Query per similitudine
� il linguaggio e il query processing devono permettere di esprimere ed eseguire query di questo tipo
� Esempio– 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
8
22
4. 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 e dal modello utilizzato per la sua rappresentazione e interrogazione
� Esempio: – ritrova le 5 immagini in cui più probabilmente appare una certa
persona, presente in una specifica foto
23
5. 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
24
Approcci alla specifica delle query
� Si estende un query language con operazioni specifiche per l’interrogazione di dati multimediali
– 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
– 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
9
25
Nel seguito ...
� Considereremo due media:– testo– immagini
� per ciascuno illustreremo– rappresentazione del contenuto– query in alcuni sistemi
26
Basi di dati testuali
27
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:– 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 …
10
28
Scopo
� 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
29
� Precisione (precision)– Permette di quantificare quanto bene un sistema
soddisfa la proprieta’:� Solo i documenti rilevanti vengono restituiti
� Richiamo (recall)– Permette di quantificare quanto bene un sistema
soddisfa la proprieta’:� Tutti i documenti rilevanti vengono restituiti
Criteri di valutazione
30
Criteri di valutazione
RilevantiRestituiti
RilevantiNon restituiti
Non rilevantirestituiti
Non rilevantiNon restituiti
Documenti contenuti nel database
11
31
Criteri di valutazione: richiamo
� Il potere di richiamo è la percentuale di documenti rilevanti restituiti rispetto al totale di documenti rilevanti presenti nel sistema
Rilevanti RestituitiRichiamo =
Totale Rilevanti
32
Criteri di valutazione: 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
33
Criteri di valutazione: Precisione
� La precisione è la percentuale di documenti rilevanti sul totale dei documenti restituiti
Rilevanti RestituitiPrecisione =
Totale Restituiti
12
34
Criteri di valutazione: considerazioni
� La condizione ideale è avere il 100% di precisione e richiamo
� In generale, aumentando il numero di documenti restituiti:
– 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
35
Rappresentazione di documenti testuali
36
Features
� 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:– Una parola chiave o un insieme di parole chiave– Un insieme di concetti che caratterizzano il
contenuto informativo del documento
13
37
Uso dei termini indice
Docs
Information Need
Index Terms
doc
query
Rankingmatch
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:
– 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
39
� Sia– 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
� 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
14
40
� 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
Modelli Classici – Concetti Base
41
� 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
42
Modelli classici: proposte
� Modello booleano� Modello vettoriale� Modello probabilistico
� Ogni modello specifica– Come rappresentare i pesi– come rappresentare le interrogazioni– Come calcolare la similarita’ tra due documenti (tra un
documento e un’interrogazione)
15
43
� E’ un modello semplice basato sulla teoria degli insiemi
� 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: i pesi
44
Modello booleano: le interrogazioni
� Le interrogazioni sono espressioni booleane – Semantica precisa– Formalismo consolidato
� Formule atomiche– Termini indici
� Classici connettivi: ∧, ∨, ¬� La negazione di un termine indica che il termine non
deve comparire nei documenti cercati� Esempio
– q = ka ∧ (kb ∨ ¬kc)
45
Modello Booleano: le interrogazioni
� Per garantire uniformita’ di rappresentazione, le interrogazionivengono tradotte in un insieme di vettori
– Ogni interrogazione viene rappresentata come se fosse un insieme di documenti
� Idea– Query booleana q– Si riscrive q in forma normale disgiuntiva, ottenendo una nuova query
booleana qdnf equivalente a q� Ogni congiunzione impone condizione su termini che si vuole che
appaiano/non appaiano nei documenti cercati
– Si riscrive qdnf in un insieme di vettori sull’insieme di termini indice Kqche compaiono nella query
� Ogni vettore viene chiamato componenti congiuntive della query q(qcc)
16
46
Modello booleano: esempio
� Esempio– Interrogazione boolena:
� q = ka ∧ (kb ∨ ¬kc) – Interrogazione in forma disgiuntiva
� qdnf = (ka ∧ kb) ∨ (ka ∧ ¬kc)– Ogni congiunzione viene riscritta in un insieme di vettori
sull’insieme dei termini indice che compaiono nella query� 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)}
47
1 se ∃ vec(qcc) t.c. vec(qcc) ∈ vec(qdnf) ∧sim(q,dj) = ∀ki ∈ Kq gi(vec(dj)) = gi(vec(qcc)))
0 altrimenti
Un documento viene restituito come risultato di una query solo se la sua similitudine con l’interrogazione è pari ad uno
Modello Booleano: similarità
48
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
17
49
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
– 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
50
Modello vettoriale
� 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
51
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)
� Piu’ e’ alto il peso di un termine indice in un documento, tanto meglio il termine rappresenta il documento
18
52
Modello Vettoriale: documenti e interrogazioni
� Sia t il numero di termini indice� Sia la query che il documento sono vettori in
uno spazio t-dimensionale
i
j
dj
qΘ
53
� Similarita’ calcolata come correlazione tra i vettori vec(dj) e vec(q)
� sim(q,dj) = cos(Θ) = [vec(dj) • vec(q)] / |vec(dj)| * |vec(q)| =
Modello Vettoriale: similarita’
∑∑
∑
ii
i
22iqij
iq * ij
w*w
ww
54
Modello vettoriale: similarita’
� vec(q) non influenza ranking – Uguale per tutti i documenti
� 0 ≤ sim(q,dj) ≤ 1– 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
19
55
Modello vettoriale: calcolo dei 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� 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
56
Modello vettoriale - pesi
wij = tf(i,j) * idf(i)
� + tf(i,j)– + ki rilevante per dj
� + idf(i)– - rilevante in generale
57
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) è:– f(i,j) = freq(i,j) / maxl=1,...,t(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
20
58
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
59
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)
60
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
� Attualmente, e’ il metodo piu’ utilizzato
21
61
d1
d2
d3d4 d5
d6d7
k1k2
k3
k1 k2 k3 d1 2 0 1 d2 1 0 0 d3 0 1 3 d4 2 0 0 d5 1 2 4 d6 1 2 0 d7 0 5 0
q 1 2 3
Esempio
Contenuto celle = freq(i,j)
62
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]
63
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
22
64
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� Ranking:
– d5 >d3>d1>d6>d7>d2=d4
65
k1 k2 k3 d1 1 0 1 d2 1 0 0 d3 0 1 1 d4 1 0 0 d5 1 1 1 d6 1 1 0 d7 0 1 0
q 1 1 1
d1
d2
d3d4 d5
d6d7
k1k2
k3
Esempio
Pesi documenti e query booleani
Viene restituito solo d5
66
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
� Query processing come processo di specifica delle caratteristice ideali della risposta
23
67
� 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
Modello Probabilistico
68
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
69
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
24
70
Riconoscimentostruttura
stopwordsNoungroups stemming
ManualindexingDocs
struttura Full text Index terms
Determinazione termini indice
Analisi lessicale
71
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)
72
Analisi lessicale
� L’obiettivo è quello di trasformare il testo da una sequenza di caratteri ad una sequenza di parole, candidate ad essere utilizzate come termini indice– Eliminazione della punteggiatura– Spesso elimnazione di sequenze numeriche (in
genere troppo vaghe per essere significative)– Conversione da maiuscolo a minuscolo
25
73
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– 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
74
Normalizzazione (stemming)
� Spesso l’utente specifica un termine in una query ma i documenti rilevanti ne contengono una sua variante
– Plurali, gerundi, passati,…
� 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
75
Normalizzazione (stemming)
� Non esiste consenso comune sull’utilizzo della fase di normalizzazione
� Molti Web search engines non usano lo stemming
26
76
Selezione degli indici
� Due alternative:– full-text index: tutte le parole sono utilizzate per
caratterizzare il contenuto informativo del documento� a volte le stopword non vengono eliminate
– selezione dei termini rilevanti:1. Specialisti 2. Mediante un processo automatico3. Usando un thesaurus
77
Selezione degli indici: processo automatico
� 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.
78
Thesaurus
� 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
27
79
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.)
� 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 …
80
Thesaurus: termini indice
� Ogni termine indice rappresenta un concettosignificativo in un certo dominio applicativo– Parole, gruppi di parole, frasi– Spesso singole parole, in genere sostantivi o
gerundi
� Ogni concetto e’ associato ad una descrizione
81
Thesauri: 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
28
82
Thesauri: 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
83
Thesauri: 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)
84
Thesauri : 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
29
85
Thesauri: 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
� Permette quindi l’espansione della query
86
Interrogazioni
� 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
87
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)
30
88
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)
89
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
90
Indice inverso
termine documenti
a 1,3,4,6,7
b
c
d
1,7
3,7
4,7
31
91
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
92
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)
93
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
32
94
Gestione di testi in Oracle 9i
� Oracle 9i Text� permette di
– indicizzare testi e documenti memorizzati in Oracle9i, 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
95
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
96
Sviluppo applicazione testuale
� Caricamento documenti� indicizzazione� interrogazione
– operatori– thesauri
33
97
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 docswhere contains(text, 'first') > 0;
98
Rappresentazione documenti
A
B
C
99
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
34
100
Caricamento documenti
� Direttamente con statement INSERT� SQL Loader� procedure ad hoc� OCI
101
Indicizzazione documenti
� Oracle supporta diverse tipologie di indice– CONTEXT, per ricerche su documenti arbitrari– CTXCAT, per ricerche combinate su documenti
brevi e dati 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
102
Indice CONTEXT
� Determina i termini indice associati ad ogni documento– crea il surrogato– organizza il surrogato come indice inverso
35
103
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– Usa lista di stopword di default– Abilita stemming
� è possibile modificare le impostazioni di base, customizzando il comando CREATE INDEX
– sistema di preferences
104
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
105
Indicizzazione documenti
36
106
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
107
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:
108
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
37
109
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.contextparameters ('datastore mypref');
110
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)
111
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
� ...
38
112
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
113
Lexers
� BASIC_LEXER: per la maggioranza delle lingue europee, si può modificare il comportamento di defaultattraverso 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
114
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
ridefinirealter index myidx rebuild parameters ('addstopword AND');
� stop classes (es. NUMBERS) e stop themes
39
115
Wordlist
� non ha effetto sull’indicizzazione, ma contiene i settingper 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)
116
Section Groups
� La classe section group prende un formato di testo (es. XML o HTML) come input e restituisce i sectionboundaries 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
117
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� 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
40
118
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
119
Section Groups
� SPECIAL: non sono riconosciute attraverso tag, ma dal lexer attraverso la punteggiatura
– SENTENCE– PARAGRAPH– Vedremo solo queste
120
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
41
121
Section Groups - esempio
� Documento:
<A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C>
� Creazione section groupctx_ddl.create_section_group('mygroup',
’xml_section_group');
� aggiunta sezioni di tipo ZONEctx_ddl.add_zone_section('mygroup', 'asec', 'a');
ctx_ddl.add_zone_section('mygroup', 'bsec', 'b');ctx_ddl.add_zone_section('mygroup', 'csec', 'c');
122
Section Groups - esempio
� Documento plain text� Creazione section group
ctx_ddl.create_section_group('mygroup',’null_section_group');
� aggiunta sezioni di tipo SPECIALctx_ddl.add_special_section('mygroup', ’SENTENCE');
123
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 – Procedura ctx_ddl.sync_index
42
124
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
125
Interrogazioni - contains
select idfrom texttabwhere 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
126
Interrogazioni - scoring
select id, score(1)
from texttabwhere contains(textcol, 'query', 1) > 0order 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)
43
127
Interrogazioni - scoring
� 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
128
Interrogazioni - tipologie
� A. Ricerca di documenti che contengonoparole o frasi– Per default case insensitive– operatori di espansione, di prossimita’
� B. Ricerca all’interno di sezioni di documenti(WITHIN)
� C. Ricerca di documenti che trattano un certoargomento (ABOUT)
� Operatori logici, operatori di score
129
Interrogazioni A – ricerca atomica per parole o frasi
� interrogazioni semplici
contains(text, 'dog') > 0
� si possono interrogare frasi:
contains(text,'dog my cat') > 0
� le stopword sono trattate come wildcard (matchanoqualsiasi parola)contains(text, 'dog the cat') > 0restituisce 'dog my cat’, 'dog your cat’, 'dog the cat'
� le stopword da sole vengono eliminate dalla query
44
130
Interrogazioni A - operatori di espansione delle parole
� WILDCARD (%_) per pattern matching (come in LIKE di SQL)
� 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
– Si considera indifferentemente labrador o alsatians
� E’ possibile applicare questi operatori anche all’italiano, settando opportuni parametri
131
Interrogazioni A - 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) tra tutte le parole indicate
– terzo specifica se tenere conto dell’ordine in cui appaiono nella lista
� True: considero ordine
� Default false
132
Interrogazioni B - sezioni
� WITHIN: limita una query a una particolare sezione� Approccio
– Documento plain text– Creazione section group
ctx_ddl.create_section_group('mygroup',’null_section_group');
– aggiunta sezioni di tipo ZONEctx_ddl.add_special_section('mygroup', ’SENTENCE');
– Creazione indice con preferenzacreate index myindex on docs(text)
parameters (section group mygroup)
– Query di tipo withincontains(text, ’tiger & cat within
sentence') > 0
45
133
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');
� 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
134
Interrogazioni B - esempio
� ogni istanza è considerata distinta:contains(text, '(tiger and rabbit) within bsec') > 0
trova il documentocontains(text, '(rat and ox) within asec') > 0
no
contains(text, '(dragon and snake) within csec') > 0
sì
� nel caso di sezioni FIELD il contenuto di diverse istanze viene unito, quindi la seconda query restituirebbe il documento
135
Interrogazioni tematiche C
� Si vogliono determinare i documenti che trattano un certo concetto– ABOUT(frase)
� la stringa specifica rappresenta il concetto (tema) cercato, rappresentato da ‘frase’
� 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
– E’ case sensitive� l’indice deve avere una componente tematica� se non ce l’ha, l’interrogazione viene espansa in una query non
tematica
46
136
Interrogazioni tematiche C -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
137
Interrogazioni C - 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
138
Interrogazioni C - 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
47
139
Interrogazioni C - Thesaurus
� 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
140
Interrogazioni C - esempio
� Se la query contiene– BT(dog)E nel thesaurus dog viene generalizzato con – animalla query viene sostituita con– dog OR animal
� Si veda dopo per il significato di OR
141
Interrogazioni - operatori logici
� AND (&): documenti che contengono almeno un’occorrenza di ciascun termine indicato
– Restituisce il punteggio minimo tra quelli degli operandi
� OR (|): documenti che contengono almeno un’occorrenza di almeno un termine indicato
– Restituisce il punteggio massimo tra quelli degli operandi
� NOT (~) è "AND NOT” (differenza):– 'dog NOT cat' restituisce i documenti che contengono "dog" ma
non contendono "cat”
– il punteggio restituito è quello del figlio sinistro
48
142
Interrogazioni - operatori logici
� 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 punteggicontains(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
143
Interrogazioni - 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
144
Interrogazioni - 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
49
145
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
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
146
Basi di dati per la gestione di immagini
147
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
50
148
Rappresentazione
immagini Features+
attributi
Generazione metadati(automatica + manuale)
Quali features e attributi?
149
Features
� Forme (shape)– l’idea è quella di estrarre delle forme dall’immagine – possono rappresentare contorni o approssimazione di contorni
Approssimazione contornocontorno
150
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
51
151
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
152
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à
153
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 Green e B la percentuale di Blu
52
154
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})
155
Esempio
156
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
53
157
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à
158
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
159
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
54
160
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
161
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
162
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,256 ∑i=1,256 (diffr[i,j] + diffg[i,j] + diffb[i,j]))1/2
55
163
Approccio metrico per proprietàlocali
� La distanza precedente rappresenta la distanzaEuclidea 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
164
Approccio metrico per proprietà locali
� L’approccio metrico richiede che per ogni proprietà locale vengacalcolata 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
165
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
Algodi indiciz. indice DB
immagini
56
166
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 sulleshape
� 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
167
Approccio metrico per proprietàglobali
� In questo caso è possibile passare da n punti a 2 punticonsiderando il minimo rettangolo che contiene la shape (minimum bounding box - MBB)
� 2 punti si possono vedere come un punto in uno spazio4-dimensionale (s = 4)
p2
p1
p3
p4
p5
168
Indicizzazione per shape
shape Approssimazionishape
Algodi indiciz. indice DB
immagini
57
169
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
170
� 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 toolprescelto),per gestire le immagini e per interrogarle
Rappresentazione immagini nei DBMS
171
� 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
58
172
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
173
Gestione immagini in Oracle
� Ogni oggetto multimediale in Oracle può esserememorizzato, 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
174
Tipi di dato
+ attributi strutturali
features
ORDImage
ORDImageSignature
ORDSource
59
175
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);
176
ORDImage - attributi
177
ORDImage - Attributi
60
178
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());
179
ORDImage - Costruttori
� Init( srcType IN VARCHAR2srcLocation 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
180
ORDImage - esempio
� Esempio– insert into stockphotos (1, “John Ross”, NULL,
ORDImage.init(‘FILE’,’MY_IMAGES,’image1.gif’));
61
181
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
� Aggiorna source– il file viene caricato in localData e local viene posto a 1– inizializzati tutti gli altri campi con valori in INPUT
182
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
183
Esempio - riferimento esterno
DECLAREImage 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 stockphotosWHERE photo_id = 1 FOR UPDATE;… aggiornamento info immagine ...UPDATE stockphotos SET photo = Image WHERE photo_id = 1;COMMIT;END;
62
184
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)
185
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
186
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
63
187
Esempio
DECLAREImage 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 stockphotosWHERE photo_id = 1 FOR UPDATE;Image.setProperties();UPDATE stockphotos SET photo = Image WHERE photo_id = 1;COMMIT;END;
188
ORDImageSignature
� Rappresenta le feature calcolate a partire da un’immagine
� l’insieme delle features viene chiamato signature– unico attributo, di tipo BLOB
189
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
64
190
ORDImageSignature - segnatura
� Image1 e Image2 sono simili rispetto al coloreglobale ma non rispetto alla locazione
191
ORDImageSignature - segnatura
192
ORDImageSignature - metodi
� inizializzazione:– metodo init()
� generazione segnatura:– metodo generateSignature(ORDImage)
� altri che non vediamo
65
193
Esempio
DECLAREt_image ORDSYS.ORDImage;image_sig ORDSYS.ORDImageSignature;
BEGINSELECT photo, photo_sig INTO t_image, image_sigFROM stockphotosWHERE photo_id=1 FOR UPDATE;image_sig.generateSignature(t_image);UPDATE stockphotos SET photo_sig = image_sig WHERE photo_id =1;
END;
194
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()
195
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;
66
196
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
197
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
198
IMGSimilar
� l’operatore calcola la media delle distanze di ogniproprietà considerata, pesandola rispetto ai pesispecificati in weightstring
� restituisce 1 se la distanza è minore di threshold (valore tra 0 e 100)
– 0 distanza minima (similarità massima)
� referencetoScore assegna un identificatore allachiamata della funzione
� potrà poi essere utilizzato nella chiamata dellafunzione VIRScore, nel contesto della stessa query
67
199
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 rappresental’identificatore di una chiamata a IMGSimilar
� lo score viene calcolato rispetto agli oggetti suiquali è stata applicata IMGSimilar
200
Esempio
� Supponiamo di volere determinare tutte le fotografiesimile ad una fotografia F data
� nel determinare la similitudine, vogliano attribuire un peso maggiore al colore, in particolare vogliamo fissarei 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
201
Esempio (continua)
� Supponendo di considerare una variabile– F ORDImageSignature
� ecco la query:SELECT photo_id,ORDSYS.IMGScore(12)FROM stockphotosWHERE ORDSYS.IMGSimilar(photo_sig,F,‘color = “0.6” texture = “0.2” shape = “0.1” location = “0.1” ‘ , 50, 12) = 1
68
202
Esempio (continua)
� Si consideri adesso un’immagine con le seguenti distanze dallefeature 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
203
Top-N
SELECT A1,…,AnFROM
(SELECT A1,…,Am,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
204
Esempio (continua)
� Supponiamo di volere determinare la fotografica più simile a FSELECT photo_idFROM
(SELECT photo_id,ORDSYS.IMGScore(12), RANK() OVER (ORDER BY ORDSYS.IMGScore(12) ASC) AS rank;
FROM stockphotosWHERE ORDSYS.IMGSimilar(photo.signature,query.signature,‘color = “0.6”
texture =“0.2” shape = “0.1” location = “0.1”,50, 12) = 1)WHERE rank = 1;
69
205
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
206
Esempio (continua)
Si supponga di volere inserire nella tabella la seguente tupla:Id = 1Nome = “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é.
207
Esempio (continua)
INSERT INTO ImmaginiVALUES(1, “Genova3”,”Il porto antico di notte”,ORDSYS.ORDImage.init(),
ORDSYS.ORDImageSignature.init());
SELECT Panorama, Panorama_sign INTO Image, sign 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;
70
208
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 PanoramiWHERE
ORDSYS.IMGSimilar(panorama_sign,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
209
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