Basi di dati multimediali Basi di dati multimediali Basi di dati

Transcript

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