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