Basi di dati multimediali

217
1 Basi di dati multimediali

description

Basi di dati multimediali. Basi di dati multimediali. Nuove applicazioni richiedono la rappresentazione e la gestione di dati non tradizionali: testi arbitrari immagini audio video dati tradizionali (relazionali, orientati ad oggetti). Basi di dati multimediali. - PowerPoint PPT Presentation

Transcript of Basi di dati multimediali

Page 1: Basi di dati multimediali

1

Basi di dati multimediali

Page 2: Basi di dati multimediali

2

Basi di dati multimediali

Nuove applicazioni richiedono la rappresentazione e la gestione di dati non tradizionali:– testi arbitrari – immagini– audio– video– dati tradizionali (relazionali, orientati ad oggetti)

Page 3: Basi di dati multimediali

3

Basi di dati multimediali

Un sistema di gestione dati multimediali (MMDBMS) permette la rappresentazione e la gestione di diversi tipi di dati, potenzialmente rappresentati secondo diversi formati

Un MMDBMS deve permettere di:– rappresentare dati corrispondenti a diverse tipologie di media– interrogare dati rappresentati in formati diversi in modo uniforme – interrogare dati in formati diversi simultaneamente nel contesto

della stessa query– recuperare gli oggetti dal supporto su cui risiedono,

compatibilmente con il tipo di media che rappresentano

Page 4: Basi di dati multimediali

4

MMDBMS: aspetti da considerare

Rappresentazione– i dati sono tipicamente non strutturati– si vuole analizzare il contenuto– come è possibile rappresentare il contenuto di un

documento multimediale? Come si fa a capire che un’immagine contiene una certa persona

Query– un linguaggio di query per MMDBMS deve avere

caratteristiche particolari– query processing deve analizzare il contenuto degli oggetti

Page 5: Basi di dati multimediali

5

MMDBMS: aspetti da considerare

Memorizzazione:– quali supporti utilizzare? (dischi, CD-ROM, nastri)– che operazioni supportare:

non solo lettura/scrittura ma anche (video/audio)– playback– rewind– fast foward– pause

Indici:– come indicizzare gli oggetti multimediali?

Analizzeremo solo i primi due aspetti

Page 6: Basi di dati multimediali

6

Rappresentazione

Un oggetto multimediale in genere può essere composto da diversi sotto-oggetti, ciascuno relativo ad un particolare media

le relazioni tra oggetti e sotto-oggetti possono essere modellate utilizzando un approccio orientato ad oggetti o relazionale ad oggetti

rimane il problema di come rappresentare il contenuto di un oggetto corrispondente ad un singolo media

Page 7: Basi di dati multimediali

7

Rappresentazione

Nelle basi di dati relazionali ad oggetti, i dati multimediali vengono memorizzati secondo due distinte modalità:– internamente al sistema come valori non strutturati

in campi LOB (Large Object)– esternamente al sistema, mantendo all’interno del

DBMS solo il riferimento alla posizione del file

Page 8: Basi di dati multimediali

8

Rappresentazione

Oggettomultimediale

riferimento

LOB

DBMS

Oggettomultimediale

Page 9: Basi di dati multimediali

9

Rappresentazione - LOB

Facilitano la memorizzazione di dati multimediali (documenti, immagini, audio, ecc.)

Possono contenere fino a 4GB di dati (di solito i RDBMS non vanno oltre 2-32KB)

Il DBMS non associa alcuna interpretazione a questi dati

Page 10: Basi di dati multimediali

10

Rappresentazione - LOB

Si distinguono in:– BLOB (Binary Large Object)– CLOB (Character Large Object)

Supportati da SQL-99 Sono fisicamente memorizzati esternamente

alle tabelle ma internamente al DB (comportamento transazionale)

Page 11: Basi di dati multimediali

11

Rappresentazione - ORDBMS

Gli ORDBMS forniscono inoltre nuovi tipi di dato complessi che supportano:– la rappresentazione del dato multimediale– nuovi metodi & operatori– metodi per l’ottimizzazione di interrogazioni

Page 12: Basi di dati multimediali

12

Rappresentazione - ORDBMS

Illustra/Informix DataBlade IBM Database Extender Oracle Oracle Intermedia Librerie fornite da terze parti

Page 13: Basi di dati multimediali

13

Rappresentazione

In entrambe le soluzioni di rappresentazione introdotte, gli oggetti sono completamente non strutturati

per poterli interrogare in modo ragionevole, è necessario sovraimporre a ciascun oggetto una rappresentazione concettuale

la rappresentazione concettuale è costituita da un insieme di dati strutturati che descrivono l’oggetto multimediale (surrogato) dal punto di vista della struttura e del contenuto semantico

ogni oggetto dello stesso tipo sarà descritto dallo stesso tipo di surrogato

il surrogato del documento non descrive pienamente il contenuto informativo del documento ma costituisce una sua sintesi

i surrogati rappresentano gli oggetti sui quali definire le tecniche di indice

Page 14: Basi di dati multimediali

14

Rappresentazione

Spesso il surrogato si ottiene associando a ciascun oggetto un insieme di attributi

due tipi di attributi:– descrittivi

associano informazioni descrittive (relazionali) a ciascun oggetto vengono associati manualmente all’oggetto

– content-based (anche chiamati features) associano informazioni relative al contenuto vengono estratti direttamente dal sistema

entrambi i tipi di attributi si possono interpretare come una sorta di metadati

i metadati associati ad un documento multimediale dipendono dal tipo di media considerato

Page 15: Basi di dati multimediali

15

Esempio

Attributi descrittivinome: Villa Medicilocalità:Roma

Features:forma:

Page 16: Basi di dati multimediali

16

Rappresentazione

Oggetti multimediali

Features +

attributi

Generazione metadati(automatica + manuale)

I sistemi mettono a disposizione funzionalità per estrarre feature e per utilizzare tali feature nel contesto delle interrogazioni

Page 17: Basi di dati multimediali

17

Rappresentazione

Conseguenza– i documenti multimediali potranno essere confrontati

solo rispetto agli attributi e alle feature– feature uguali non sempre si riferiscono ad oggetti

uguali– Esempio

si puo’ riferire sia ad una villa che ad un’industria

Page 18: Basi di dati multimediali

18

Query

Due aspetti– definizione caratteristiche linguaggio di

interrogazione– query processing

è necessario stabilire:– approccio generale all’esecuzione delle query– aspetti che devono essere supportati

Page 19: Basi di dati multimediali

19

Idea di base query processing

Oggetti multimediali

Features+

attributi

Generazione metadati

Meccanismo di interrogazione

1

2

3

La query viene eseguita sui metadati (attributi + features) dai metadati si risale ai documenti originali i documenti originali vengono restituiti all’utente

Page 20: Basi di dati multimediali

20

Aspetti da supportare

Le query devono potere essere eseguite su diversi tipi di media contemporaneamente

devono considerare attributi e features devono supportare query per similitudine devono associare un valore di rilevanza ad ogni

oggetto restituito devono poter essere pesate devono supportare query spazio-temporali

Page 21: Basi di dati multimediali

21

Attributi e feature

Le query interrogano gli oggetti multimediali considerando gli attributi e le feature ad essi associati

Esempio: ritrova tutte le immagini di abitazioni importanti in Liguria– assumo di avere estratto le forme dalle immagini– assumo di avere associato informazione descrittiva

(luogo, tipo abitazione)

Page 22: Basi di dati multimediali

22

Query per similitudine

Poiché il contenuto degli oggetti viene espresso attraverso features e poiché le feature non rappresentano pienamente il contenuto semantico di un oggetto, le condizioni di selezione sugli oggetti multimediali non sempre sono certe

ciò significa che le condizioni non sono in generale condizioni di uguaglianza ma di similitudine

– le condizioni in genere sono verificate in una certa misura, data dalla similitudine tra ciò che stiamo cercando e ciò che abbiamo trovato

Page 23: Basi di dati multimediali

23

Query per similitudine

il linguaggio deve permettere di esprimere query di questo tipo

il query processing deve essere in grado di supportare tali tipi di query

Query: determina tutte le immagini in cui appare una certa persona, presente in una specifica foto

– difficilmente verranno restituite tutte le immagini che contengono questa persona

– molto probabilmente verranno trovate anche immagini in cui compaiono persone che, per qualche motivo (dipende dalle feature considerate) assomigliano alla persona cercata

Page 24: Basi di dati multimediali

24

Ranking

Una conseguenza della necessità di eseguire query per similitudine è quello di decidere i criteri di rilevanza di un oggetto rispetto ad una interrogazione: ranking

Il ranking è un ordinamento degli oggetti restituiti da una interrogazione che riflette il grado di rilevanza dei documenti rispetto all’interrogazione

I criteri per effettuare il ranking dipendono dal media considerato

Esempio: ritrova le 5 immagini in cui più probabilmente appare una certa persona, presente in una specifica foto

– in questo modo, si aumenta la certezza del risultato

Page 25: Basi di dati multimediali

25

Query pesate

In alcuni casi può essere utile pesare le varie condizioni nel contesto di una query

questo permette di associare un livello di importanza alla condizione nel determinare la similarità degli oggetti

Esempio: determinare le immagini che– contengono una persona (0.7)– non contengono alberi (0.3)

la similarità viene pesata

Page 26: Basi di dati multimediali

26

Query spazio-temporali

Necessità di interrogare relazioni spazio-temporali esistenti tra gli oggetti

relazioni spaziali: associano le feature associate ad un oggetto da un punto di vista spaziale

– importante per immagini/testo– in un’immagine, relaziono le forme che compaiono rispetto alla loro

posizione (vicino, lontano, a destra, a sinistra)– in un testo, relaziono il contenuto (prima, dopo)

relazioni temporali: associano le feature associate ad un oggetto da un punto di vista temporale

– importante per audio/video– sequenze audio/video: prima, dopo, subito prima, subito dopo,

contemporaneamente

Page 27: Basi di dati multimediali

27

Due approcci alla specifica delle query

Si definisce un linguaggio di query– ad esempio, si estende SQL con condizioni specifiche da

applicare ad oggetti multimediali– tipico DBMS estesi alla gestione di dati multimediali

query by example:– si fornisce un oggetto di esempio e si vogliono determinare

tutti gli oggetti simili– esempio: si fornisce la fotografia del viso di una persona e si

vogliono ritrovare tutti i visi simili– tipico di sistemi dedicati alla gestione di un solo tipo di media

Page 28: Basi di dati multimediali

28

Nel seguito ...

Considereremo due media:– testo– immagini

per ciascuno illustreremo– rappresentazione del contenuto– query in alcuni sistemi

Page 29: Basi di dati multimediali

29

Basi di dati testuali

Page 30: Basi di dati multimediali

30

Basi di dati testuali

E’ un database in grado di memorizzare, gestire ed interrogare documenti testuali non strutturati

L’obiettivo è di minimizzare il tempo necessario per localizzare le informazioni

I risultati di una interrogazione sono ordinati in ordine decrescente di rilevanza

– Un documento è rilevante se l’utente che formula l’interrogazione giudica che il documento e l’interrogazione si riferiscono entrambi allo stesso argomento

Page 31: Basi di dati multimediali

31

Basi di dati testuali

L’enfasi è sulla caratterizzazione dei requisiti informativi dell’utente– Ritrova tutti i documenti che contengono

informazioni sulle squadre di tennis dei college americani che (1) hanno partecipato al torneo NCAA e (2) contengono informazioni sull’allenatore della squadra

Page 32: Basi di dati multimediali

32

Basi di dati testuali

I database di testi sfruttano tecniche sviluppate per i sistemi di Information Retrieval (IR)

L’ambito dell’IR ha prodotto negli ultimi 20 anni:– Modelli per la rappresentazione di documenti– Architetture e linguaggi– Interfacce e metodi di visualizzazione

Nonostante questo l’area dell’IR è sempre stata di interesse limitato

Page 33: Basi di dati multimediali

33

Basi di dati testuali

L’avvento del Web ha cambiato le cose:– È un repository universale di conoscenza– Accesso universale a costi ridotti– Nessuna autorità centrale– Il Web ha però introdotto nuove problematiche (ad

es. bassa qualità di definizione e struttura delle informazioni): le tecniche di IR sono viste come una chiave per trovare le soluzioni

Page 34: Basi di dati multimediali

34

Basi di dati testuali

Lo scopo è di reperire tutti e soli quei documenti che interessano l’utente

Un sistema con tali caratteristiche non può però essere realizzato in pratica

Per tale motivo si valuta un sistema tanto più efficiente quanto più e’ in grado di avvicinarsi a tale requisito

Page 35: Basi di dati multimediali

35

Due criteri di valutazione:– precisione (precision)– richiamo (recall)

Basi di dati testuali

Page 36: Basi di dati multimediali

36

Valutazione di una Interrogazione

RilevantiRestituiti

RilevantiNon restituiti

Non rilevantirestituiti

Non rilevantiNon restituiti

Documenti contenuti nel database

Page 37: Basi di dati multimediali

37

Richiamo

Il potere di richiamo è la percentuale di documenti rilevanti restituiti rispetto al totale di documenti rilevanti presenti nel sistema

Rilevanti Restituiti

Richiamo =

Totale Rilevanti

Page 38: Basi di dati multimediali

38

Richiamo

Il potere di richiamo ideale è uguale ad uno In generale il potere di richiamo sarà un valore

inferiore ad uno perché il numero di documenti pertinenti restituiti è inferiore al numero di documenti pertinenti presenti nel sistema

Page 39: Basi di dati multimediali

39

Precisione

La precisione è la percentuale di documenti rilevanti sul totale dei documenti restituiti

Rilevanti Restituiti

Precisione =

Totale Restituiti

Page 40: Basi di dati multimediali

40

Precisione & Richiamo

La condizione ideale è avere il 100% di precisione e richiamo

In generale, aumentando il numero di documenti restituiti si aumenta il potere di richiamo a spese della precisione

Page 41: Basi di dati multimediali

41

Basi di dati testuali

Due problemi principali:– Sviluppo di tecniche efficienti per la

rappresentazione dei documenti all’interno del sistema

– Sviluppo di tecniche per la formulazione e l’esecuzione delle interrogazioni

Page 42: Basi di dati multimediali

42

Rappresentazione di documenti testuali

Page 43: Basi di dati multimediali

43

Modellazione

Estrazione di feature

Database

Page 44: Basi di dati multimediali

44

Modellazione

Nel caso di documenti testuali le feature sono i termini utilizzati come indici

Gli indici possono essere:– Una parola chiave o un insieme di parole chiave– Un insieme di concetti che caratterizzano il

contenuto informativo del documento

sia i documenti che le interrogazioni vengono rappresentati in termini di feature

Page 45: Basi di dati multimediali

45

structure

stopwordsNoungroups stemming

Manual indexingDocs

structure Full text Index terms

Modellazione - determinazione termini indice

Page 46: Basi di dati multimediali

46

Modellazione - determinazione termini indice

structure: struttura interna del documento (capitoli, sezioni, sottosezioni)

stopwords: articoli e congiunzioni noun groups: si eliminano (o si raggruppano

insieme ai sostantivi) aggettivi, avverbi, verbi stemming: ci si riduce a radice comune (es.

plurale, singolare)

Page 47: Basi di dati multimediali

47

Modellazione e query

Docs

Information Need

Index Terms

doc

query

Rankingmatch

Page 48: Basi di dati multimediali

48

Modellazione

Vedere il testo come un insieme di parole chiave è limitativo

Questo causa spesso insoddisfazione da parte dell’utente

Il problema è ulteriormente complicato dal fatto che spesso gli utenti non sono in grado di formulare interrogazioni che riflettono i loro requisiti informativi

Page 49: Basi di dati multimediali

49

Ranking

Uno dei problemi più critici è quello di decidere i criteri di rilevanza di un documento rispetto ad una interrogazione

Il ranking è un ordinamento dei documenti restituiti da una interrogazione che riflette il grado di rilevanza dei documenti rispetto all’interrogazione

I criteri per effettuare il ranking dipendono dal modello adottato per rappresentare i documenti (e di conseguenza anche le query)

Page 50: Basi di dati multimediali

50

Modelli

Non-Overlapping ListsProximal Nodes

Structured Models

Retrieval: Adhoc Filtering

Browsing

U s e r

T a s k

Classic Models

boolean vector probabilistic

Browsing

Flat Structure Guided Hypertext

Page 51: Basi di dati multimediali

51

Modelli Classici – Concetti Base

Ogni documento è rappresentato da un insieme di termini indice rappresentativi

Un indice è una parola utile per ricordare l’argomento del documento

Solitamente gli indici sono dei nomi I motori di ricerca assumono che tutte le parole

nel testo siano indici (rappresentazione full text)

Page 52: Basi di dati multimediali

52

Modelli Classici – Concetti Base

Non tutti i termini che compaiono in un documento sono egualmente rappresentativi del suo contenuto informativo:– di solito i termini troppo frequenti non sono buoni

candidati per diventare indici

L’importanza di un indice è rappresentata da un peso ad esso associato

Page 53: Basi di dati multimediali

53

Sia– ki il termine indice

– dj un documento

– wij il peso associato a ki nel documento dj

wij quantifica l’importanza dell’indice ki per descrivere il contenuto informativo del documento dj

wij = 0 indica che ki non compare in dj

Modelli Classici – Concetti Base

Page 54: Basi di dati multimediali

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

Page 55: Basi di dati multimediali

55

Si assume che i pesi degli indici siano indipendenti

Questa assunzione è una semplificazione perché esistono delle correlazioni tra termini che compaiono in un documento

Questo facilita la definizione dei pesi ma rende meno precisa la ricerca:– Es: computer network

Modelli Classici – Concetti Base

Page 56: Basi di dati multimediali

56

Modello booleano

E’ un modello semplice basato sulla teoria degli insiemi

Le interrogazioni sono espressioni booleane – Semantica precisa– Formalismo consolidato– q = ka (kb kc)

Page 57: Basi di dati multimediali

57

I pesi assumono valori binari:– wij {0,1}

Un peso uguale a uno indica che il termine compare nel documento

Un peso uguale a zero indica che il termine non compare nel documento

Modello booleano

Page 58: Basi di dati multimediali

58

Si supponga:– q = ka (kb kc) = (ka kb) (ka kc)

La query può essere equivalentemente formulata come una disgiunzione di vettori della forma (ka,kb,kc)– vec(qdnf) = (1,1,1) (1,1,0) (1,0,0)

I vettori vengono chiamati componenti congiuntive della query q (qcc)

Modello Booleano

Page 59: Basi di dati multimediali

59

sim(q,dj) = 1 se vec(qcc) | vec(qcc) vec(qdnf)) ki, gi(vec(dj)) = gi(vec(qcc)))

0 altrimenti

Un documento viene restituito solo se la sua similitudine con l’interrogazione è pari ad uno

Modello Booleano - similarità

Page 60: Basi di dati multimediali

60

Modello Booleano

Esempio:– q=vec(qdnf) = (1,1,1) (1,1,0) (1,0,0)

– dj = (0,1,0,…….) non è rilevante per q anche se contiene il termine kb

– di = (1,1,0,….) è rilevante per q

Page 61: Basi di dati multimediali

61

Modello booleano - svantaggi

Nessuna nozione di matching parziale Nessun meccanismo di ranking I bisogni informativi di un utente devono essere

tradotti in una espressione booleana Le interrogazioni formulate dagli utenti sono

spesso troppo approssimate

Page 62: Basi di dati multimediali

62

Modello vettoriale

L’utilizzo di pesi binari è troppo limitante Pesi non binari consentono di attuare matching

parziali I pesi sono usati per calcolare un grado di

similitudine tra una interrogazione e ogni documento nella base di dati

I documenti sono restituiti in ordine decrescente di similitudine (ranking)

Page 63: Basi di dati multimediali

63

Modello vettoriale

Sia i documenti che le interrogazioni sono rappresentate come dei vettori di pesi

Si definisce:– wij > 0 quando ki dj

– wiq > 0 quando ki q

– vec(dj) = (w1j, w2j, ..., wtj)

– vec(q) = (w1q, w2q, ..., wtq)

Page 64: Basi di dati multimediali

64

Modello Vettoriale

Nel modello vettoriale sia la query che il documento sono rappresentati come dei vettori in uno spazio t-dimensionale (dove t è il numero complessivo di termini indice)

i

j

dj

q

Page 65: Basi di dati multimediali

65

sim(q,dj) = cos() = [vec(dj) vec(q)] / |dj| * |q| =

Modello Vettoriale

ii

i

22iqij

iq * ij

w*w

ww

Page 66: Basi di dati multimediali

66

Modello vettoriale

Dato che wij >= 0 and wiq >= 0:– 0 sim(q,dj) 1

Un documento è restituito anche se soddisfa solo parzialmente l’interrogazione

si può decidere di restituire solo i documenti la cui similarità con la query supera una certa soglia

Page 67: Basi di dati multimediali

67

Modello vettoriale - pesi

Quali strategie adottare per computare i pesi wij e wiq?

Un buon peso deve tener conto di due fattori:– Quanto un termine descrive il contenuto informativo di

un documento Fattore tf, la frequenza di un termine all’interno di un documento

– Quanto un termine compare all’interno di tutti i documenti nel db

Fattore idf, l’inverso della frequenza di un termine tra tutti i documenti considerati

Page 68: Basi di dati multimediali

68

Modello vettoriale - pesi

wij = tf(i,j) * idf(i) + tf(i,j)

– + ki rilevante per dj

+ idf(i,)– - ki rilevante in generale

– termini che compaiono spesso in tutti i documenti non sono utili per distinguere un documento rilevante da uno non rilevante

Page 69: Basi di dati multimediali

69

Modello vettoriale

Sia:– N il numero totale di documenti nel db– ni il numero di documenti che contengono ki

– freq(i,j) la frequenza di ki in dj

Il fattore tf normalizzato è:– f(i,j) = freq(i,j) / max(freq(l,j))– il massimo è calcolato su tutti i termini kl che compaiono in dj

Il fattore idf è dato da:– idf(i) = log (N/ni)

– il log è usato per rendere comparabili i valori di tf e idf

Page 70: Basi di dati multimediali

70

Modello vettoriale

Il metodo più utilizzato è quello di usare come peso:– wij = f(i,j) * log(N/ni)

Tale strategia è chiamata schema di pesatura tf-idf

Page 71: Basi di dati multimediali

71

Modello vettoriale

Per i pesi da utilizzare nelle interrogazioni, Salton & Bucley propongono

– wiq = (0.5 + [0.5 * freq(i,q) / max(freq(l,q)]) * log(N/ni)

Page 72: Basi di dati multimediali

72

Modello vettoriale

Vantaggi:– I pesi migliorano la qualità delle risposte alle

interrogazioni– Possibilità di matching parziale– La formula per il ranking ordina i documenti in base

alla rilevanza che hanno per l’interrogazione

Svantaggi:– Considera tutti gli indici come indipendenti

Page 73: Basi di dati multimediali

73

k1 k2 k3 q djd1 1 0 1 2d2 1 0 0 1d3 0 1 1 2d4 1 0 0 1d5 1 1 1 3d6 1 1 0 2d7 0 1 0 1

q 1 1 1

d1

d2

d3d4 d5

d6d7

k1k2

k3

Esempio

Pesi documenti e query booleani

Page 74: Basi di dati multimediali

74

d1

d2

d3d4 d5

d6d7

k1k2

k3

k1 k2 k3 q djd1 1 0 1 4d2 1 0 0 1d3 0 1 1 5d4 1 0 0 1d5 1 1 1 6d6 1 1 0 3d7 0 1 0 2

q 1 2 3

Esempio

Pesi documenti booleani, query non booleani

Page 75: Basi di dati multimediali

75

d1

d2

d3d4 d5

d6d7

k1k2

k3

k1 k2 k3 q djd1 2 0 1 5d2 1 0 0 1d3 0 1 3 11d4 2 0 0 2d5 1 2 4 17d6 1 2 0 5d7 0 5 0 10

q 1 2 3

Esempio

Pesi documenti e query non booleani

Page 76: Basi di dati multimediali

76

d1

d2

d3d4 d5

d6d7

k1k2

k3

Esempio

Calcoliamo TF-IDF per i documenti, supponendo contenuto celle = freq(i,j)

d1– K1: ((2/2)*(log (7/5))= .33– K2: (0*(log (7/4))) = 0– K3: ((1/2)*(log (7/3))) = .42

per gli altri:– [.34 0 0], [0 .19 .85], [.34 0 0], [.08 .28 .85], [.17 .56

0], [0 .56 0]

Page 77: Basi di dati multimediali

77

Esempio

Calcoliamo TF-IDF per la query– K1: (.5 + ((.5 * 1)/3))*(log (7/5)))– K2: (.5 + ((.5 * 2)/3))*(log (7/4)))– K3: (.5 + ((.5 * 3)/3))*(log (7/3)))

quindi: [.22 .47 .85]

d1

d2

d3d4 d5

d6d7

k1k2

k3

Page 78: Basi di dati multimediali

78

Esempio

Calcoliamo similarità per ogni documento sim(d1,q)

– d1* q = (.33 * .22) + (0 * .47) + (.42 * .85) = .43– |d1| = sqrt((.33^2) + (.42^2)) = .53– |q| = sqrt((.22^2) + (.47^2) + (.85^2)) = 1.0– sim(d1,q) = .43 / (.53 + 1.0) = .28

d2: .06 d3: .43 d4: .06 d5: .46 d6: .19 d7: .17

Page 79: Basi di dati multimediali

79

Modello Probabilistico

L’obiettivo è quello di utilizzare tecniche di calcolo delle probabilità

Data una interrogazione esiste sempre un insieme di documenti che costituiscono la risposta ideale

La specifica dell’interrogazione consiste nel definire le caratteristiche della risposta ideale

Page 80: Basi di dati multimediali

80

Il problema è capire quali sono tali caratteristiche

All’inizio viene effettuata una ipotesi su quali queste caratteristiche possono essere

Tale ipotesi viene poi raffinata durante un processo di iterazione

Modello Probabilistico

Page 81: Basi di dati multimediali

81

Modello Probabilistico

Data una query q e un documento dj, il modello probabilistico cerca di stimare la probabilità che l’utente consideri il documento dj rilevante

Il modello assume che tale probabilità dipenda solo dalla interrogazione e dal modo in cui il documento è rappresentato

I documenti sono ordinati in ordine descrescente rispetto alla probabilità di rilevanza

Non si tengono in considerazione i fattori tf e idf

Page 82: Basi di dati multimediali

82

Modelli classici - confronto

Il modello Booleano è il meno potente in quanto non consente il matching parziale

Risultati sperimentali indicano che il modello vettoriale ha prestazioni migliori del modello probabilistico

Page 83: Basi di dati multimediali

83

Estrazione di Feature dal Testo

Quattro fasi:– Analisi lessicale del testo– Eliminazione delle “stopword” – Normalizzazione delle parole rimanenti– Selezione dei termini caratterizzanti (indici)

Page 84: Basi di dati multimediali

84

Analisi lessicale

L’obiettivo è quello di trasformare il testo da una sequenza di caratteri ad una sequenza di parole– Eliminazione della punteggiatura– Conversione da maiuscolo a minuscolo

Page 85: Basi di dati multimediali

85

Eliminazione delle stopword

Parole troppo frequenti nei documenti (ad esempio che compaiono in più dell’80% dei documenti) non sono utili per determinare il risultato di una interrogazione

Esempi di stopword sono articoli, proposizioni e congiunzioni

L’eliminazione delle stopword consente di ridurre notevolmente le dimensioni del documento originale

L’eliminazione delle stopword può però ridurre il potere di richiamo:

to be or not to be

Page 86: Basi di dati multimediali

86

Normalizzazione (stemming)

Spesso l’utente specifica un termine in una query ma i documenti rilevanti ne contengono una sua variante

La fase di normalizzazione sostituisce le varianti di una stessa parola con la loro radice comune (es: connesso, connettere, connessione,ecc.)

Non esiste consenso comune sull’utilizzo della fase di normalizzazione

Page 87: Basi di dati multimediali

87

Selezione degli indici

Due alternative:– full-text index: tutte le parole sono utilizzate per

caratterizzare il contenuto informativo del documento

– selezione dei termini rilevanti:1. Mediante un processo automatico

2. Tramite l’utilizzo di un Thesaurus

Page 88: Basi di dati multimediali

88

Selezione degli indici

Un metodo consolidato è quello di identificare gruppi di nomi all’interno del testo (es. computer science)

Un gruppo di nomi è un insieme di nomi la cui distanza nel testo non supera una soglia predefinita (es: 3)

Page 89: Basi di dati multimediali

89

Thesaurus

Un thesaurus consiste di:– un insieme di vocaboli ed espressioni-chiave

rilevanti per un particolare dominio– un insieme di sinonimi per ogni vocabolo

nell’insieme

I thesauri sono di solito definiti da esperti del settore

Page 90: Basi di dati multimediali

90

Thesaurus

La fase di indicizzazione e di ricerca avviene solo facendo riferimento ai termini del thesaurus

L’utilizzo di thesauri è vantaggioso per domini in cui è possibile la standardizzazione dei termini di ricerca (esempio: ambito medico, legale,ecc.)

Page 91: Basi di dati multimediali

91

Thesauri con reti semantiche

In un thesaurus che utilizza una rete semantica i termini possono essere strutturati attraverso una rete di collegamenti concettuali

Una relazione semantica puo’ essere:– preferenziale– gerarchica– associativa

Page 92: Basi di dati multimediali

92

Relazione preferenziale

La relazione preferenziale rappresenta l’equivalenza (sinonimia) tra termini:– SP (sinonimo preferenziale)– USA (è il contrario di SP)

Allievo SP Alunno Alunno USA Allievo

Page 93: Basi di dati multimediali

93

Relazione gerarchica

La relazione gerarchica rappresenta la relazione di specializzazione che esiste tra i termini– TL (termine largo)– TS (termine stretto)

Veicolo TL Auto Auto TS Veicolo Il vertice della gerarchia si chiama TA (termine

più ampio)

Page 94: Basi di dati multimediali

94

Relazione associativa

La relazione associativa esprime un legame biunivoco tra le componenti lessicali

– RT (termine in relazione)

La tipologia di relazione dipende dal contesto Esempi:

– antinomia: vittoria--sconfitta– concomitanza: sintomo--malattia– proprietà: trampolino--altezza– inclusione: contenuto--contenente– localizzazione: partita--stadio

Page 95: Basi di dati multimediali

95

Reti semantiche

Un thesaurus con rete semantica rende più efficienti le interrogazioni perché consente di ricercare automaticamente i termini sinonimi, quelli più ampi o più ristretti ed i termini correlati

Page 96: Basi di dati multimediali

96

Thesaurus

Per semplificare le ricerche al thesaurus è associato un indice inverso cioè una tabella che per ogni parola contenuta nel thesaurus contiene una lista dei documenti che la contengono

Page 97: Basi di dati multimediali

97

Indice inverso

termine documenti

a 1,3,4,6,7

b

c

d

1,7

3,7

4,7

Page 98: Basi di dati multimediali

98

Indici inversi

Solitamente gli indici inversi vengono estesi per mantenere per ogni termine non solo i documenti che lo contengono ma anche il numero di occorrenze di tale termine nei vari documenti

Page 99: Basi di dati multimediali

99

Architettura di riferimento

Text db

DB managerindicizzazione

indice

Interfacciautente

traduttore

Ricerca

ordinamento

Page 100: Basi di dati multimediali

100

Interrogazioni

Due tipi fondamentali:– su stringhe, con caratteri jolly e sottostringhe– con operatori booleani

Page 101: Basi di dati multimediali

101

Interrogazioni su stringhe

E possibile ricercare tutti i testi che contengono una certa parola, una sua “variante” o un suo sinonimo

– comput? --> computa, computo,...– comp* --> computer, compilato, compito, ecc.

Varianti:– ricerca di frasi– ricerche fuzzy– ricerca per prossimità (insieme di parole e indicazione della

distanza massima che devono avere all’interno del testo)

Page 102: Basi di dati multimediali

102

Interrogazioni booleane

I termini dell’interrogazione possono essere composti mediante gli operatori booleani:

– p1 AND p2– p1 OR p2– NOT p1

Gli operatori booleani possono essere combinati:– (p1 AND p2) OR (p3 AND p4)

Page 103: Basi di dati multimediali

103

Sistemi di IR: esempi

DIALOG Corporation: offre più di 500 sistemi di IR su svariati argomenti, quali scienze, medicina, economia e giornali elettronici (www.dialog.com)

LEXIS-NEXIS: ambito legale ed economico (www.lexis-nexis.com)

OCLC (the online computer library center) offre l’accesso ad 1.5 milioni di articoli (www.oclc.org)

H.W. Wilson: offre più di 40 sistemi di IR per scuole ed istituzioni pubbliche (www.hwwilson.com)

Page 104: Basi di dati multimediali

104

Sistemi di IR: esempi

CA SEARCH: Chemical Abstract. Contiene 14 milioni di documenti con una frequenza di aggiornamento di 11.000 documenti alla settimana

MEDLINE: indicizza articoli provenienti da 3.700 riviste mediche

NewYork Times -- Fulltext: contiene tutte le edizioni del NewYork Times dal 1981 ad oggi

PsycINFO: Psycological Abstract. Contiene 1.5 milioni di documenti riguardanti psicologia, sociologia, psichiatria, linguistica ed antroplogia dal 1887 fino ad oggi

Page 105: Basi di dati multimediali

105

Gestione di testi in Oracle 9i

Oracle 9i Text permette di

– indicizzare testi e documenti memorizzati in Oracle 9i, in file del sistema operativo o URL, in maniera integrata con i dati relazionali tradizionali con possibilità di interrogazioni basate sul contenuto

possibilità di utilizzare un thesaurus

– classificare documenti in base al loro contenuto vedremo solo il primo aspetto

Page 106: Basi di dati multimediali

106

Gestione di testi in Oracle 9i

Formati– File di testo– HTML, XML– documenti Word– PDF– …

Linguaggi– per ricerche tematiche, inglese e francese– possibilità di estendere i linguaggi caricando opportuni thesauri

per il linguaggio di interesse

Page 107: Basi di dati multimediali

107

Sviluppo applicazione testuale

Caricamento documenti indicizzazione interrogazione

– operatori– thesauri

Page 108: Basi di dati multimediali

108

Esempio

create table docs (id number primary key,

text varchar2(80));

insert into docs values (1,'first document'); insert into docs values (2, 'second document');

create index doc_index on docs(text) indextype is ctxsys.context;

select id from docs where contains(text, 'first') > 0;

Page 109: Basi di dati multimediali

109

Rappresentazione documenti

A

B

C

Page 110: Basi di dati multimediali

110

Rappresentazione documenti

A. Documento contenuto in un campo di tipo CHAR, VARCHAR, VARCHAR2, LONG, LONG RAW, BLOB, CLOB

B. Campo di tipo BFILE C. Campo di tipo URIType

la tabella deve avere una chiave primaria, utilizzata per identificare i documenti

Page 111: Basi di dati multimediali

111

Caricamento documenti

Direttamente con statement INSERT SQL Loader procedure ad hoc OCI

Page 112: Basi di dati multimediali

112

Indicizzazione documenti

Oracle supporta diverse tipologie di indice– CONTEXT, per ricerche su documenti arbitrari– CTXCAT, per ricerche su documenti brevi e strutturati– MATCHES, per classificazione documenti

noi vedremo solo il tipo CONTEXT la creazione dell’indice è un passo necessario per

l’esecuzione di interrogazioni sul documento

Page 113: Basi di dati multimediali

113

Indice CONTEXT

Determina i termini indice associati ad ogni documento– crea il surrogato– organizza il surrogato come indice inverso

Page 114: Basi di dati multimediali

114

Indicizzazione documenti

comando per la creazione di indicicreate index INDEXNAME on TABLE(COLUMN)

indextype is ctxsys.context

il comando per default assume che:– la colonna sia di tipo A– il linguaggio sia quello specificato durante l’installazione

è possibile modificare le impostazioni di base, customizzando il comando CREATE INDEX

– sistema di preferences

Page 115: Basi di dati multimediali

115

Indicizzazione documenti

In generale, il comando di creazione di indice esegue un insieme di processi che creano oggetti intermedi

per ogni processo è possibile specificare delle preferenze

Page 116: Basi di dati multimediali

116

Indicizzazione documenti

Page 117: Basi di dati multimediali

117

Indicizzazione documenti - processi

Datastore: scorre le righe della tabella e legge i dati della colonna, restituendo i dati contenuti nel documento

Filter: prende i documenti restituiti dal datastore e li trasforma in una rappresentazione testuale

– non necessaria per plain text, XML o HTML– documenti Word, PDF, ecc. Vengono convertiti in un testo con mark-up (esempio

HTML) Sectioner: divide l’informazione strutturale (markup) dal contenuto Lexer: suddivide il plain text in token (parole) e crea token tematici (in

relazione alle preferenze specificate) Indexing engine: crea l’inverted index, eliminando stopword, contenute in

STOPLIST e crea indici per stemming utilizzando informazioni in WORDLIST

Page 118: Basi di dati multimediali

118

Indicizzazione documenti - preferenze

per ciascun processo ci sono uno o più oggetti che rappresentano i possibili comportamenti

in generale, gli oggetti sono raggruppati in classi:

Page 119: Basi di dati multimediali

119

Indicizzazione documenti - preferenze

tali oggetti non possono essere usati direttamente negli indici:– si crea una preference a partire da tali oggetti

template– la si personalizza settandone gli attributi– si usa tale preference per creare l’indice

Page 120: Basi di dati multimediali

120

Indicizzazione documenti - Esempio

ctx_ddl.create_preference('mypref', 'FILE_DATASTORE');

ctx_ddl.set_attribute('mypref', 'PATH', '/docs');

create index doc_index on docs(text) indextype is ctxsys.context parameters ('datastore mypref');

Page 121: Basi di dati multimediali

121

Indicizzazione documenti - preferenze

nella clausola parameters si possono specificare più classi, semplicemente aggiungendo una coppia keyword-preference

– parameters('datastore mypref filter myfilter')

questo meccanismo è usato per tutte le classi tranne SECTION GROUP e STOPLIST, che hanno una API propria

esistono dei parametri utilizzati dal sistema di default (quelli per LEXER, WORDLIST e STOPLIST dipendono dal linguaggio)

Page 122: Basi di dati multimediali

122

Datastore

DIRECT_DATASTORE (default) assume che il documento sia memorizzato direttamente nella colonna indicizzata, ne restituisce semplicemente il contenuto

FILE_DATASTORE interpreta la colonna come un nome di file, lo apre e ne restituisce il contenuto

URL_DATASTORE interpreta la colonna come un URL, effettua una GET e restituisce il contenuto

...

Page 123: Basi di dati multimediali

123

Filter

NULL_FILTER (default) utilizzato quando il contenuto del documento non è in formato binario, passa semplicemente il testo dal datastore al sectioner

CHARSET_FILTER converte i documenti da un insieme di caratteri straniero al character set del database

USER_FILTER/PROCEDURE_FILTER filtering ad hoc (es. per convertire tutto in lettere maiuscole) in forma di procedura

INSO_FILTER riconosce automaticamente e filtra oltre un centinaio di formati diversi, tra cui Word e Acrobat, producendo HTML come output

Page 124: Basi di dati multimediali

124

Lexers

BASIC_LEXER: per la maggioranza delle lingue europee, si può modificare il comportamento di default attraverso gli attributi

– JOINS per specificare caratteri non alfanumerici da trattare come lettere valide

– PUNCTUATION per specificare i simboli di punteggiatura (importanti per sezioni SENTENCE e PARAGRAPH)

– per la normalizzazione del testo (es. accenti, maiuscole/minuscole, parole composte)

– per selezionare indicizzazione di testo o tematica

Page 125: Basi di dati multimediali

125

Stoplist

lista delle stopword, che non vengono considerate per l’indicizzazione

API separata: ctx_ddl.create_stoplist('mylist'); ctx_ddl.add_stopword('mylist', 'the');

stoplist di default, che dipendono dal linguaggio si possono aggiungere stopword all’indice senza doverlo

ridefinire alter index myidx rebuild parameters ('add stopword AND');

stop classes (es. NUMBERS) e stop themes

Page 126: Basi di dati multimediali

126

Wordlist

non ha effetto sull’indicizzazione, ma contiene i setting per espansione stem e fuzzy dei termini utilizzati per rispondere alle interrogazioni

un solo oggetto BASIC_WORLDLIST con attributi:– STEMMER (espansione di una parola a forme differenti, es.

ENGLISH, ITALIAN, NULL)– FUZZY_MATCH (considera parole mistyped, es. varie lingue e

OCR)– FUZZY_SCORE (score floor per espansione fuzzy)– FUZZY_NUMRESULT (max. numero parole per espansione

fuzzy)

Page 127: Basi di dati multimediali

127

Section Groups

La classe section group prende un formato di testo (es. XML o HTML) come input e restituisce i section boundaries e plain text

i section group non sono creati con create_preferences, ma con una API separata

– ctx_ddl.create_section_group('mygroup’, 'html_section_group');

il primo argomento è il nome del section group, il secondo è il tipo, che specifica il formato del testo di input e le regole per individuare le sezioni

Page 128: Basi di dati multimediali

128

Section Groups

tipi di section groups:– NULL_SECTION_GROUP: da usare quando non ci sono sezioni

o ci sono solo sezioni speciali: SENTENCES e PARAGRAPH default

– BASIC_SECTION_GROUP: per XML o HTML, rimuove semplicemente i markup tags, che devono essere bilanciati, non supporta attributi e commenti

– HTML_SECTION_GROUP: per HTML– XML_SECTION_GROUP: per XML– NEWS_SECTION_GROUP: per newsgroup style postings,

rimuove header lines

Page 129: Basi di dati multimediali

129

Section Groups

le sezioni hanno tre attributi:– TAG: specifica come riconoscere la sezione– NAME: specifica come riferirsi alla sezione nelle query (più tag possono

essere mappati sullo stesso nome)– TYPE: è il tipo di sezione, ci sono tre tipi diversi: ZONE, SPECIAL,

FIELD

ZONE: – si registra dove sono start e end– permette query di tipo WITHIN, cioè ricerche all’interno di sezioni

particolari– se una sezione ZONE si ripete viene trattata separatamente nelle query– possono essere annidate

Page 130: Basi di dati multimediali

130

Section Groups

SPECIAL: non sono riconosciute attraverso tag, ma dal lexer attraverso la punteggiatura

– SENTENCE– PARAGRAPH

Page 131: Basi di dati multimediali

131

Section groups

FIELD: – il contenuto della sezione è indicizzato separatamente dal

resto del documento– le query di tipo WITHIN vengono eseguite su questo indice

separato– sono pensate per sezioni non ripetute e non overlapping

Page 132: Basi di dati multimediali

132

Section Groups - esempio

Documento:

<A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C>

Creazione section group ctx_ddl.create_section_group('mygroup',

’xml_section_group'); aggiunta sezioni di tipo ZONE

ctx_ddl.add_zone_section('mygroup', 'asec', 'a');

ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c');

Page 133: Basi di dati multimediali

133

Section Groups - esempio

Documento plain text Creazione section group

ctx_ddl.create_section_group('mygroup',’null_section_group');

aggiunta sezioni di tipo ZONE ctx_ddl.add_special_section('mygroup', ’SENTENCE');

Page 134: Basi di dati multimediali

134

Aggiornamento degli indici

L’indice creato non viene aggiornato automaticamente dopo ogni operazione DML

– indicizzare un singolo documento richiede molto tempo– gli inverted index si aggiornano meglio su un insieme di

documenti per volta– le applicazioni in genere sono abbastanza statiche, e non è

necessaria una completa consistenza

possibilità di ricostruzione totale o parziale

Page 135: Basi di dati multimediali

135

Interrogazioni

La creazione di un indice di tipo CONTEXT permette di eseguire interrogazioni sul contenuto dei documenti

funzione CONTAINS, con vari criteri di selezione– logici– di prossimità– fuzzy– stemming– thesaurus– wildcards– ricerche su sezioni

Sono case-insensitive per default– modificabile con preferenze BASIC_LEXER

Page 136: Basi di dati multimediali

136

Interrogazioni - contains

select id from texttab where contains(textcol,'query') > 0

– il primo argomento è il nome della colonna, il secondo è il testo dell’interrogazione (max 2000 byte)

– restituisce un numero, che quantifica il match 0 = no match

Page 137: Basi di dati multimediali

137

Interrogazioni - scoring

select id, score(1) from texttab where contains(textcol, 'query', 1) > 0 order by score(1) desc

1 è contains label e può essere un qualsiasi numero, utilizzato per matchare lo score nella select list con quello nella clausola where

lo score è un numero compreso tra 0 e 100, ed è relativo (significativo solo per la query)

Page 138: Basi di dati multimediali

138

Interrogazioni - scoring

Modello vettoriale Pesi wij = 3f(1+log(N/n)) con

– f frequenza– N numero totale tuple– n numero tuple che contengono il termine– compresi tra 0 e 100

la similarità è un valore tra 0 e 100

Page 139: Basi di dati multimediali

139

Interrogazioni - tipologie

interrogazioni semplici

contains(text, 'dog') > 0

si possono interrogare frasi:

contains(text,'dog my cat') > 0 le stopword sono trattate come wildcard (matchano

qualsiasi parola)

contains(text, 'dog the cat') > 0restituisce 'dog my cat’, 'dog your cat’, 'dog the cat'

le stopword da sole vengono eliminate dalla query

Page 140: Basi di dati multimediali

140

Interrogazioni - operatori booleani

AND (&) e OR (|): restituiscono punteggi numerici invece che valori booleani

AND è il minimo dei punteggi dei suoi operandi, OR il massimo

NOT (~) è "AND NOT” (differenza):– 'dog NOT cat' restituisce i documenti che contengono

"dog" ma non contendono "cat”

– il punteggio restituito è quello del figlio sinistro

Page 141: Basi di dati multimediali

141

Interrogazioni - operatori di score

WEIGHT (*) moltiplica il punteggio di un termine di ricerca per renderlo più o meno importante nella query (peso tra .1 e 10)

contains(text,'(dog*2) AND cat') > 0 THRESHOLD (>) elimina i documenti sotto una certa

soglia

contains(text,'(dog*2) AND cat') > 50

Page 142: Basi di dati multimediali

142

Interrogazioni - operatori di espansione delle parole

WILDCARD (%_) per pattern matching (come in LIKE di SQL)

FUZZY (?) trova parole simili (usa wordlist) STEM ($) trova parole con radice comune (usa wordlist) SOUNDEX (!) trova parole con stesso suono (usa una

specifica espansione fuzzy) EQUIV (=) permette di indicare esplicitamente varie

forme della stessa parola

Page 143: Basi di dati multimediali

143

Interrogazioni - operatori di prossimità

operatore NEAR, che ha due forme

dog ; cat ; boat il punteggio dipende da quanto i termini sono vicini l’uno

all’altro, in termini di numero di parole

NEAR((dog,boat), 10, TRUE) – primo argomento è lista di parole

– secondo è distanza massima (numero di parole)

– terzo specifica se tenere conto dell’ordine in cui appaiono nella lista

Page 144: Basi di dati multimediali

144

Interrogazioni - sezioni

WITHIN: limita una query a una particolare sezione

contains(text, ’tiger & cat within sentence') > 0

Page 145: Basi di dati multimediali

145

Interrogazioni - esempio

<A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C>

ctx_ddl.create_section_group('mygroup','basic_section_group');

sezione ZONE

ctx_ddl.add_zone_section('mygroup', 'asec', 'a');

ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c');

contains(text, 'rat within asec') > 0

restituisce il documento contains(text, 'tiger within asec') > 0

non restituisce il documento

Page 146: Basi di dati multimediali

146

Interrogazioni - esempio

ogni istanza è considerata distinta: contains(text, '(tiger and rabbit) within bsec') > 0

trova il documento contains(text, '(rat and ox) within asec') > 0

no

contains(text, '(dragon and snake) within csec') > 0sì

nel caso di sezioni FIELD il contenuto di diverse istanze viene unito, quindi la seconda query restituirebbe il documento

Page 147: Basi di dati multimediali

147

Interrogazioni tematiche

Si vogliono determinare i documenti che trattano un certo concetto

la stringa specifica rappresenta il concetto (tema) cercato solo per inglese e francese richiede la presenza di una knowledge base

– gerarchia di concetti con 6 sottoalberi: scienza-tecnologia, affari e finanza, politica e militare, sociale, geografia, idee astratte

l’indice deve avere una componente tematica se non ce l’ha, l’interrogazione viene espansa in una query non

tematica

Page 148: Basi di dati multimediali

148

Interrogazioni tematiche - esempio

contains(text, 'about(canines)')

se esiste l’indice, può restituire documenti che contengono “dog”

se non esiste, about(go home now) è trasformata in $go,$home,$now

Page 149: Basi di dati multimediali

149

Interrogazioni - Thesaurus

Possibilità di creare Thesaurus che definiscono sinonimi e relazioni gerarchiche tra parole o frasi

il thesaurus non viene installato di default ma deve essere caricato

– il sistema contiene un thesaurus di default per l’inglese

il caricamento di un Thesaurus permette di espandere le ricerche ai sinomini di una certa parola o ad altre parole ad essa associate

Page 150: Basi di dati multimediali

150

Interrogazioni - Thesaurus

file con formattazione particolare

alcune relazioni considerate

– SYN: sinonimi

– PT: preferred term

– BT: broader term

– NT: narrower term

– RT: related term

– TR: traduzione in altri linguaggi

gli stessi identificatori corrispondono a procedure che permettono di utilizzare queste relazioni nelle interrogazioni

Page 151: Basi di dati multimediali

151

Thesaurus - operatori

SYN( term [, thesname] )

PT( term [, thesname] )

BT( term [, level [,thesname]] )

NT( term [, level [,thesname]] )

TT( term [, thesname] )

RT( term [,thesname] )

TR( term [,lan [,thesname] ])

Page 152: Basi di dati multimediali

152

Altri operatori di score

MINUS (-) sottrae il punteggio dell’operando destro a quello del sinistro

contains(text, 'tiger MINUS rabbit') > 0– tiger e preferibilmente non rabbit

– sottrae i punteggi

ACCUM (,) raggruppa più parole o frasi e ne accumula i punteggi

contains(text, 'tiger ACCUM rabbit)') > 0– tiger e preferibilmente rabbit

– somma i punteggi

Page 153: Basi di dati multimediali

153

Osservazione

AND– nella logica a due valori, richiede che entrambi gli

argomenti siano veri– interpretando vero = 1 e falso = 0, viene restituito il

valore minimo– stesso discorso nel caso di valori compresi tra 0 e 1

ACCUM– semplicemente somma i punteggi– più termini compaiono, più il documento è rilevante

Page 154: Basi di dati multimediali

154

Osservazione

OR– nella logica a due valori, richiede che almeno un

argomento sia vero– interpretando vero = 1 e falso = 0, viene restituito il valore

massimo– stesso discorso nel caso di valori compresi tra 0 e 1

MINUS– toglie punteggi – un documento è più rilevante se i termini a destra non

compaiono

Page 155: Basi di dati multimediali

155

Basi di dati per la gestione di immagini

Page 156: Basi di dati multimediali

156

Problematiche

La realizzazione di un sistema per la gestione di immagini deve affrontare le seguenti problematiche

– rappresentazione delle immagini– Misura della similarità– Metodi di accesso e ritrovamento

Page 157: Basi di dati multimediali

157

Rappresentazione

immagini Features +

attributi

Generazione metadati(automatica + manuale)

Quali features e attributi?

Page 158: Basi di dati multimediali

158

Features

Forme (shape)– l’idea è quella di estrarre delle forme dall’immagine – possono rappresentare contorni o approssimazione di contorni

Approssimazione contornocontorno

Page 159: Basi di dati multimediali

159

Features - shape

Una shape per un oggetto può essere rappresentata in vari modi

ad esempio, un contorno può sempre essere visto come una sequenza di punti p1,…,pn in uno spazio bidimensionale

Page 160: Basi di dati multimediali

160

Features

Oggetti semantici– con oggetto semantico si intende un oggetto

significativo dal punto di vista dell’applicazione casa, viso, strada

– se gli oggetti sono chiaramente identificabili e possono essere facilmente riconosciuti, il ritrovamento può essere basato su tali oggetto

– tipicamente richiedono intervento umano – approccio limitato dalle tecniche esistenti di analisi

delle immagini

Page 161: Basi di dati multimediali

161

Features

Texture (tessitura)– rappresentano informazioni relative alle “regolarità”

o “irregolarità” dell’immagine– dipendono dalla percezione visiva di un’immagine– si basano sulle cosiddette Tamura features

coarseness (rugosità) contrasto direzionalità

Page 162: Basi di dati multimediali

162

Features

Colore– proprietà globale che non richiede conoscenza degli oggetti contenuti

nelle immagini– può essere determinato in modo automatico quindi è molto utilizzato– spesso si usano istogrammi che rappresentano la composizione di

colori in un’immagine– ogni componente dell’istogramma corrisponde ad un colore (256 o 64

componenti)– per rappresentare un’immagine, si associa ad ogni componente il

numero di pixel dell’immagine più simili al colore considerato– il colore di ogni pixel in genere viene rappresentato come una tripla

(R,G,B), dove R indica la percentuale di Rosso, G la percentuale di Giallo e B la percentuale di Blu

Page 163: Basi di dati multimediali

163

Un possibile surrogato per le immagini

In generale, per rappresentare in modo sufficientemente dettagliato un’immagine è necessario utilizzare più features

In generale, ogni immagine può essere interpretata come – un insieme di oggetti interessanti, ciascuno caratterizzato da un

descrittore di forma, che rappresenta la shape dell’oggetto e/o la zona dell’immagine nella quale l’oggetto è collocato (approssimazione)

proprietà globali

– un descrittore di proprietà, che descrive le proprietà di un insieme di pixel nell’immagine (RGB, livelli di grigio per immagini in bianco e nero, texture)

proprietà locali

le proprietà sono rappresentate da un nome (Red, Green, Blue) e da un dominio (ad esempio {0,…,8})

Page 164: Basi di dati multimediali

164

Esempio

Page 165: Basi di dati multimediali

165

Esempio

Si consideri l’immagine pic1.gif l’immagine contiene due oggetti di interesse - o1 e

o2 -– le shape di questi oggetti sono rappresentate dai

rettangoli presenti nella figura– il descrittore di proprietà associato ad un insieme di pixel

potrebbe avere la seguente forma Red = 5 Green = 1 Blue = 3

Page 166: Basi di dati multimediali

166

Descrittori di proprietà

Le proprietà vengono in genere associate ad insiemi di pixel In genere, ogni immagine viene associata ad una coppia di interi

positivi (m,n), chiamata la griglia di risoluzione dell’immagine una griglia (m,n) divide l’immagine in (m x n) celle di uguale

dimensione, chiamate griglia dell’immagine ogni cella è costituita da un insieme di pixel le proprietà possono quindi essere associate a ciascuna cella le proprietà di ogni singola cella possono essere rappresentate

come un vettore, in cui ciascuna componente corrisponde ad una determinata proprietà

Page 167: Basi di dati multimediali

167

Osservazione

Le shape si possono interpretare come proprietà globali dell’immagine

le proprietà sono invece locali a ciascuna singola cella

dalle proprietà di ogni singola cella si possono ovviamente inferire le proprietà delle celle che rappresentano i vari oggetti identificati

Page 168: Basi di dati multimediali

168

Definizione di base di dati di immagini

Una base di dati di immagini è una tripla (GI, Prop, Rec) dove:

– GI è un insieme di immagini a cui è stata associata una griglia ogni immagine si può quindi vedere come una terna

(Immagine,m,n), dove (m,n) rappresenta la griglia di risoluzione

– Prop è un insieme di proprietà di celle– Rec è una funzione che associa ad ogni immagine un insieme

di shape, in base ad una qualche rappresentazione

Prop rappresenta le proprietà locali delle immagini Rec rappresenta le proprietà globali delle immagini

Page 169: Basi di dati multimediali

169

Query per similitudine

Le query possono coinvolgere sia proprietà locali che proprietà globali

problema: come determino la similitudine tra due immagini?

Approccio fondamentale: approccio metrico si assume che esista una distanza metrica d con la quale

confrontare ogni coppia di oggetti più bassa è la distanza, più simili sono gli oggetti

Page 170: Basi di dati multimediali

170

Approccio metrico

Una funzione da un insieme X a [0,1] è una funzione distanza se soddisfa i seguenti assiomi per ogni x,y,z in X:

– d(x,y) = d(y,x)– d(x,y) <= d(x,z) + d(z,y)– d(x,x) = 0

per ogni proprietà associata ad un’immagine può essere definita una funzione distanza

la distanza tra due immagini si ottiene quindi combinando le distanze tra le varie proprietà (locali e/o globali), ad esempio applicando la distanza Euclidea

Page 171: Basi di dati multimediali

171

Esempio applicato alle proprietà globali

Si consideri un insieme Obj di immagini (256 x 256). Si supponga che ogni cella sia associata a tre attributi (red, green, blue) che assumono un valore in {0,…,8}

un esempio di funzioni distanza tra due immagini o1 e o2 rispetto alle tre proprietà considerate è il seguente:

– diffr[i,j] = (o1[i,j].red - o2[i,j].red)2

– diffg[i,j] = (o1[i,j].green - o2[i,j].green) 2

– diffb[i,j] = (o1[i,j].blue - o2[i,j].blue) 2

– d(o1,o2) = (i=1,256i=1,256 (diffr[i,j] + diffg[i,j] + diffb[i,j]))1/2

Page 172: Basi di dati multimediali

172

Approccio metrico per proprietà locali

La distanza precedente rappresenta la distanza Euclidea tra i due oggetti

se si considerano n proprietà locali e t =h x k celle, in base all’approccio metrico ogni immagine è vista come un insieme di m punti n-dimensionali

– f(I) = {P1,…,Pt} Pi = (xi1,…,xin)

per determinare se le immagini I1 e I2 sono simili in base alla distanza Euclidea:

– f(I1) = {P1,…,Pt} Pi = (xi1,…,xin)

– f(I2) = {Q1,…,Qt} Qi = (yi1,…,yin)

– d(I1,I2) = (i=1,t d’(Pi,Qi))1/2

– d’(Pi,Qi) = (xi1 -yi1)2 + … + (xin -yin)2

Page 173: Basi di dati multimediali

173

Approccio metrico per proprietà locali

L’approccio metrico richiede che per ogni proprietà locale venga calcolata la distanza tra celle corrispondenti in immagini distinte

ogni immagine è quindi interpretata come un insieme di punti– ogni punto è dato dai valori per le proprietà locali di una certa cella– se le proprietà sono n, i punti sono n-dimensionali– ogni immagine sarà caratterizzata da tanti punti quante sono le celle

poiché il numero delle celle spesso è alto esistono approcci (che non vediamo) per mappare le immagini NON in un insieme di punti MA in un singolo punto in uno spazio s-dimensionale, con s <= n

Esempio: consideriamo la media degli n punti– in questo caso s coincide con n

si noti che il punto ottenuto si può interpretare come una proprietà globale dell’immagine

Page 174: Basi di dati multimediali

174

Indicizzazione per proprietà locali I punti ottenuti possono essere utilizzati come base per definire le tecniche di

indicizzazione nel caso limite in cui s = 1, si potrebbero usare I B-tree nel caso in cui s > 1, è necessario utilizzare specifici indici multidimensionali questi indici sono stati definiti nel contesto delle basi di dati spaziali

Spazio n-dimensionale

Spazio s-dimensionale

Algo di indiciz. indice DB

immagini

Page 175: Basi di dati multimediali

175

Approccio metrico per proprietà globali

Anche per gli oggetti (regioni) associati ad un’immagine è possibile applicare un approccio metrico

in questo caso la distanza deve essere definita sulle shape

anche le shape possono essere rappresentate come un insieme di punti

Esempio– se la shape è rappresentata da una spezzata costituita da n

segmenti, la spezzata può essere descritta da una sequenza di n punti bidimensionali p2

p1

p3

p4

p5

Page 176: Basi di dati multimediali

176

Approccio metrico per proprietà globali

In questo caso è possibile passare da n punti a 2 punti considerando il minimo rettangolo che contiene la shape (minimum bounding box - MBB)

2 punti si possono vedere come un punto in uno spazio 4-dimensionale (s = 4)

p2

p1

p3

p4

p5

Page 177: Basi di dati multimediali

177

Indicizzazione per shape

shape Approssimazionishape

Algo di indiciz. indice DB

immagini

Page 178: Basi di dati multimediali

178

Uso della distanza nelle query

L’utilizzo della funzione distanza permette di risolvere in modo formalmente semplice (ma non semplice dal punto di vista di un’ottimizzazione efficiente) le query per similitudine

Interrogazione di base:– data un’immagine, trovare le immagini simili a quella

in input

Page 179: Basi di dati multimediali

179

La gestione delle immagini nei vari DBMS dipende dal sistema prescelto

in genere, viene permessa una duplice rappresentazione

– riferimento esterno: il DB contiene riferimento ai file che contengono le immagini

– rappresentazione interna: le immagini vengono memorizzati nel DBMS di tipo BLOB (binary large

object)

i sistemi mettono quindi a disposizione tool per generare i surrogati delle immagini (il tipo di surrogato dipende dal DBMS e dal tool prescelto),per gestire le immagini e per interrogarle

Rappresentazione immagini nei DBMS

Page 180: Basi di dati multimediali

180

Quindi, per rappresentare un database di immagini IDB=(GI, Prop, Rec) in un DBMS

– ogni I in GI viene memorizzata in base all’approccio prescelto– ogni proprietà in Prop verrà implementata dai tool messi a

disposizione dal sistema per determinare i valori associati a specifiche proprietà (che dipendono dal sistema scelto)

– Rec rappresenta le shape degli oggetti riconosciuti utilizzando i tool messi a disposizione del sistema

Rappresentazione immagini nei DBMS

Page 181: Basi di dati multimediali

181

Rappresentazione immagini nei DBMS

Le proprietà possono riferirsi alle celle o all’immagine nel suo complesso e rappresentare, ad esempio, informazioni quali il nome dell’immagine, la data di caricamento, ecc.

queste informazioni possono essere rese disponibili all’utente per effettuare interrogazioni

Nel caso dell’approccio metrico, il sistema supporterà adeguati indici multidimensionali per supportare le query per similitudine

Page 182: Basi di dati multimediali

182

Gestione immagini in Oracle

Ogni oggetto multimediale in Oracle può essere memorizzato, manipolato e interrogato utilizzando un particolare tipo di dato

– definiti nel package ORDSYS (non indicato nel seguito)

Per le immagini– ORDImage: un’istanza è costituita da:

attributi, che rappresentano il dato sorgente, cioè l’immagine proprietà globali come lunghezza, larghezza, dimensione, tipo file (es.

TIFF), tipo di compressione (es. JPEG), tipo di contenuto (es. Monocromatico)

metodi, che permettono di gestire le immagini

– ORDImageSignature: un’istanza rappresenta le feature (signature) associate ad un’immagine

Page 183: Basi di dati multimediali

183

Tipi di dato

+ attributi strutturali

features

ORDImage

ORDImageSignature

ORDSource

Page 184: Basi di dati multimediali

184

Esempio

Si supponga di volere creare una tabella contenente delle fotografie in particolare la tabella deve contenere:

– id fotografia– nome fotografo– descrizione fotografia– la fotografia

una possibile dichiarazione di questa tabella è la seguente:CREATE TABLE stockphotos (

photo_id NUMBER,

photographer VARCHAR(64),

annotation VARCHAR(255),

photo ORDImage,

photo_sign ORDImageSignature);

Page 185: Basi di dati multimediali

185

ORDImage - attributi

Page 186: Basi di dati multimediali

186

ORDImage - Attributi

Page 187: Basi di dati multimediali

187

ORDImage - Costruttori

Init()– immagine memorizzata internamente

inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi:

– source.localdata=empty_blob()– source.local = 1 (indica che l’immagine è caricata nel file system

locale)– source.updateTime = SYSDATE

Esempioinsert into stockphotos (1, “John Ross”, NULL, OrdImage.init());

Page 188: Basi di dati multimediali

188

ORDImage - Costruttori

Init( srcType IN VARCHAR2

srcLocation IN VARCHAR2,

srcName IN VARCHAR2) – immagine memorizzata all’esterno

inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi:– source.localdata=empty_blob()– source.local = 0 (indica che l’immagine si assume memorizzata nel file

system esterno)– source.updateTime = SYSDATE– source.srcType, source.srcLocation, srcName, posti uguali ai valori in

input

Page 189: Basi di dati multimediali

189

ORDImage - esempio

Esempio– insert into stockphotos (1, “John Ross”, NULL,

ORDImage.init(‘FILE’,’MY_IMAGES,’image1.gif’));

Page 190: Basi di dati multimediali

190

ORDImage - Caricamento

I costruttori effettuano solo l’inizializzazione degli attributi ma non caricano l’immagine nel campo BLOB

nel caso in cui si intenda copiare l’immagine nel DBMS, sono previsti metodi per il caricamento (e di esportazione)

MEMBER PROCEDURE importFrom(

ctx IN OUT RAW,

source_type IN VARCHAR2,

source_name IN VARCHAR2) RAW: dati che non vengono interpretati da Oracle (simile a LOB), utilizzato

durante il caricamento, come “buffer” temporaneo

Aggiorna source– il file viene caricato in localData e local viene posto a 1– inizializzati tutti gli altri campi con valori in INPUT

Page 191: Basi di dati multimediali

191

Esempio - caricamento dati nel DBMS

DECLAREImage ORDSYS.ORDImage;ctx RAW(4000) := NULL;BEGIN

INSERT INTO stockphotos VALUES (1,’John Doe’, red plaid,ORDSYS.ORDImage.init(),ORDSYS.ORDImageSignature.init());

SELECT photo INTO Image FROM stockphotosWHERE photo_id = 1 for UPDATE;Image.importFrom(ctx, ’file’,’ORDIMGDIR’,’redplaid.gif’);…UPDATE stockphotos SET photo = Image WHERE photo_id = 1;COMMIT;

END;

FOR UPDATE: lock sulla tupla

Page 192: Basi di dati multimediali

192

Esempio - riferimento esterno

DECLARE

Image ORDSYS.ORDImage;

BEGIN

INSERT INTO stockphotos VALUES (1,’John Doe’,’red plaid’,

ORDSYS.ORDImage.init(’file’,’ORDIMGDIR’,’redplaid.gif’),

ORDSYS.ORDImageSignature.init());

SELECT photo INTO Image FROM stockphotos

WHERE photo_id = 1 FOR UPDATE;

… aggiornamento info immagine ...

UPDATE stockphotos SET photo = Image WHERE photo_id = 1;

COMMIT;

END;

Page 193: Basi di dati multimediali

193

ORDImage- Metodi per la manipolazione

Si dividono in diversi gruppi tra cui:– metodi di copia– metodi di processamento– metodi di settaggio attributi– metodi di accesso agli attributi (circa uno per

attributo)

Page 194: Basi di dati multimediali

194

Metodi di manipolazione

Metodo di copia:– Copy (dest IN OUT ORDImage)– copia l’immagine in dest, inclusi i valori di tutti gli

attributi

metodi di processamento:– process(command IN VARCHAR2)– command rappresenta una lista di tecniche di image

processing da applicare alle immagini esempio: cambiamento scala

Page 195: Basi di dati multimediali

195

Metodi di manipolazione

Metodi di settaggio attributi:– setProperties()– determina i valori per gli attributi di ORDImage, escluso

source– importFrom() chiama direttamente setProperties– da chiamare manualmente negli altri casi

Metodi di accesso:– circa uno per ogni attributi (si veda il manuale)– getHeight() RETURN INTEGER– restituisce il valore associato all’attributo HEIGHT

Page 196: Basi di dati multimediali

196

Esempio

DECLARE

Image ORDSYS.ORDImage;

BEGIN

INSERT INTO stockphotos VALUES (1,’John Doe’,’red plaid’,

ORDSYS.ORDImage.init(’file’,’ORDIMGDIR’,’redplaid.gif’),

ORDSYS.ORDImageSignature.init());

SELECT photo INTO Image FROM stockphotos

WHERE photo_id = 1 FOR UPDATE;

Image.setProperties();

UPDATE stockphotos SET photo = Image WHERE photo_id = 1;

COMMIT;

END;

Page 197: Basi di dati multimediali

197

ORDImageSignature

Rappresenta le feature calcolate a partire da un’immagine

l’insieme delle features viene chiamato signature– unico attributo, di tipo BLOB

Page 198: Basi di dati multimediali

198

ORDImageSignature - segnatura

La segnatura contiene le seguenti features:– color: distribuzione di colore nell’immagine– texture– shape: rappresenta gli oggetti (tipicamente forme geometriche)– location: tiene conto della posizione delle shape nell’immagine e della

distribuzione del colore I valori associati alle precedenti proprietà rappresentano un punto:

multidimensionale la somma di tali valori per un’immagine è 100

Page 199: Basi di dati multimediali

199

ORDImageSignature - segnatura

Image1 e Image2 sono simili rispetto al colore globale ma non rispetto alla locazione

Page 200: Basi di dati multimediali

200

ORDImageSignature - segnatura

Page 201: Basi di dati multimediali

201

ORDImageSignature - metodi

inizializzazione:– metodo init()

generazione segnatura:– metodo generateSignature(ORDImage)

altri che non vediamo

Page 202: Basi di dati multimediali

202

Esempio

DECLARE

t_image ORDSYS.ORDImage;

image_sig ORDSYS.ORDImageSignature;

BEGIN

SELECT photo, photo_sig INTO t_image, image_sig

FROM stockphotos

WHERE photo_id=1 FOR UPDATE;

image_sig.generateSignature(t_image);

UPDATE stockphotos SET photo_sig = image_sig WHERE photo_id =1;

END;

Page 203: Basi di dati multimediali

203

Caricamento completo immagine

In Oracle, un’immagine è rappresentata secondo tre componenti:

– immagine stessa (BLOB o BFILE) se la si vuole trattare come BFILE, l’operazione di inizializzazione

initFrom() è sufficiente ad inizializzare l’immagine se la si vuole trattare come BLOB, è necessario prima

inizializzarla e poi importarla (init() + importFrom())

– attributi descrittivi determinati con metodo setProperties()

– segnatura calcolata con metodo generateSignature()

Page 204: Basi di dati multimediali

204

Indici

La creazione degli indici non è immediata Esempio: per creare un indice sull’attributo

photo della tabella stockphotograph:

CREATE INDEX imgindex on stockphotograph(photo.signature)

INDEXTYPE IS ORDSYS.ORDImageIndex;

Page 205: Basi di dati multimediali

205

Interrogazioni

Due operatori (non metodi) principali:– IMGsimilar: prese due segnature, stabilisce se sono

simili, confrontando le segnature– IMGscore: restituisce il valore di similarità per due

segnature

Page 206: Basi di dati multimediali

206

IMGSimilar

IMGSimilar( signature IN RAW,

querysignature IN RAW,

weightstring IN VARCHAR2,

threshold in FLOAT,

[referencetoScore IN NUMBER]) weightstring ha la forma

– ‘color = “val” texture = “val” shape = “val” location = “val”

dove val è un valore tra 0 e 1 che “pesa” una certa feature

Page 207: Basi di dati multimediali

207

IMGSimilar

l’operatore calcola la media delle distanze di ogni proprietà considerata, pesandola rispetto ai pesi specificati in weightstring

restituisce 1 se la distanza è minore di threshold (valore tra 0 e 100)

– 0 distanza minima (similarità massima)

referencetoScore assegna un identificatore alla chiamata della funzione

potrà poi essere utilizzato nella chiamata della funzione VIRScore, nel contesto della stessa query

Page 208: Basi di dati multimediali

208

IMGScore

IMGScore(referencetoSimilar IN NUMBER) la query che invoca questo metodo deve anche

invocare IMGSimilar– posso calcolare lo score solo se ho determinato quali

oggetti sono simili

referencetoSimilar è un intero che rappresenta l’identificatore di una chiamata a IMGSimilar

lo score viene calcolato rispetto agli oggetti sui quali è stata applicata IMGSimilar

Page 209: Basi di dati multimediali

209

Esempio

Supponiamo di volere determinare tutte le fotografie simile ad una fotografia F data

nel determinare la similitudine, vogliano attribuire un peso maggiore al colore, in particolare vogliamo fissare i pesi come segue:

– color = 0.6– texture = 0.2– shape = 0.1– location = 0.1

vogliano inoltre fissare un threshold a 50 vogliamo restituire gli identificatori delle fotografie che soddisfano la

query insieme allo score calcolato

Page 210: Basi di dati multimediali

210

Esempio (continua)

Supponendo di considerare una variabile– F ORDImageSignature

ecco la query:

SELECT photo_id,ORDSYS.IMGScore(12)

FROM stockphotos

WHERE

ORDSYS.IMGSimilar(photo_sig,F,

‘color = “0.6” texture = “0.2” shape = “0.1”

location = “0.1” ‘ , 50, 12) = 1

Page 211: Basi di dati multimediali

211

Esempio (continua)

Si consideri adesso un’immagine con le seguenti distanze dalle feature della query:

– texture = 5– color = 90– shape = 50– location = 15

la distanza è calcolata come segue:– 0.1 * 15 + 0.6 * 90 + 0.2 * 5 + 0.1 * 50 = 61.5

poiché il threshold è 50, questa immagine non verrebbe restituita supponiamo adesso di invertire i valori associati al colore e alla locazione, la

distanza diventa:– 0.6 * 15 + 0.1 * 90 + 0.2 * 5 + 0.1 * 50 = 24.0

in questo caso l’immagine verrebbe restituita

Page 212: Basi di dati multimediali

212

Esempio (continua)

Supponiamo di volere determinare la fotografica più simile a FSELECT photo_id

FROM

(SELECT photo_id,ORDSYS.IMGScore(12),

RANK() OVER (ORDER BY ORDSYS.IMGScore(12) ASC) AS rank;

FROM stockphotos

WHERE

ORDSYS.IMGSimilar(photo.signature,query.signature,‘color = “0.6”

texture =“0.2” shape = “0.1” location = “0.1”,50, 12) = 1)

WHERE rank = 1;

Page 213: Basi di dati multimediali

213

Esempio

Si consideri la tabella Panorami, memorizzata in una base di dati Oracle 9i. Tale tabella contiene i seguenti campi:

– Id, di tipo NUMBER– Nome, di tipo VARCHAR(30)– Descrizione, di tipo VARCHAR(200)– Panorama, di tipo ORDSYS.ORDImage– Panorama_sign ORDSYS.ORDImageSignature

Page 214: Basi di dati multimediali

214

Esempio (continua)

Si supponga di volere inserire nella tabella la seguente tupla:Id = 1

Nome = “Genova3”

Descrizione = “Il porto antico di notte”

Panorama = “GePA.gif”

Il file GePA.gif risiede nella directory “Immagini”. L’immagine sorgente deve inoltre essere gestita come BLOB.

Presentare lo statement SQL per l’inserimento della tupla ed indicare quali metodi dovranno essere successivamente invocati per gestire l’immagine come BLOB e perché.

Page 215: Basi di dati multimediali

215

Esempio (continua)

INSERT INTO Immagini

VALUES

(1, “Genova3”,”Il porto antico di notte”,ORDSYS.ORDImage.init(), ORDImageSignature());

SELECT Panorama INTO Image FROM PanoramiWHERE id = 1 for UPDATE;

Image.importFrom(ctx, ‘FILE’,’IMMAGINI’,’GePA.gif’);sign.generateSignature(Image);

UPDATE Panorami SET Panorama = Image, Panorama_sign = signWHERE id = 1;

Page 216: Basi di dati multimediali

216

Esempio (continua)

Determinare tutti i panorami simili a “query_pan”, considerando solo il colore. Restituire i nomi delle immagini e lo score.

SELECT Nome,ORDSYS.IMGScore(12)

FROM Panorami

WHERE

ORDSYS.IMGSimilar(panorama_sig,query_pan,

‘color = “1” texture =“0” shape = “0”

location = “0” ‘, 10, 12) = 1

la scelta di un threshold del 10% mi permette di selezionare solo le immagini molto simili a quella data

Page 217: Basi di dati multimediali

217

Esempio (continua)

Si supponga che per l’immagine GePA.gif siano state calcolate le seguenti distanze rispetto a “query_pan” :

color = 40 texture = 30 shape = 20 location = 30

Stabilire se l’immagine GePa.gif verrà restituita dall’interrogazioni I

40 * 1 = 40 quindi l’immagini non viene restituita