La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Basi di dati multimediali

Presentazioni simili


Presentazione sul tema: "Basi di dati multimediali"— Transcript della presentazione:

1 Basi di dati multimediali

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

3 Basi di dati multimediali
Un sistema di gestione dati multimediali (MMDBMS) permette la rappresentazione e la gestione di diversi tipi di dati, potenzialmente rappresentati secondo diversi formati Un MMDBMS deve permettere di: rappresentare dati corrispondenti a diverse tipologie di media interrogare dati rappresentati in formati diversi in modo uniforme interrogare dati in formati diversi simultaneamente nel contesto della stessa query recuperare gli oggetti dal supporto su cui risiedono, compatibilmente con il tipo di media che rappresentano

4 MMDBMS: aspetti da considerare
Rappresentazione i dati sono tipicamente non strutturati si vuole analizzare il contenuto come è possibile rappresentare il contenuto di un documento multimediale? Come si fa a capire che un’immagine contiene una certa persona Query un linguaggio di query per MMDBMS deve avere caratteristiche particolari query processing deve analizzare il contenuto degli oggetti

5 MMDBMS: aspetti da considerare
Memorizzazione: quali supporti utilizzare? (dischi, CD-ROM, nastri) che operazioni supportare: non solo lettura/scrittura ma anche (video/audio) playback rewind fast foward pause Indici: come indicizzare gli oggetti multimediali? Analizzeremo solo i primi due aspetti

6 Rappresentazione Un oggetto multimediale in genere può essere composto da diversi sotto-oggetti, ciascuno relativo ad un particolare media le relazioni tra oggetti e sotto-oggetti possono essere modellate utilizzando un approccio orientato ad oggetti o relazionale ad oggetti rimane il problema di come rappresentare il contenuto di un oggetto corrispondente ad un singolo media

7 Rappresentazione Nelle basi di dati relazionali ad oggetti, i dati multimediali vengono memorizzati secondo due distinte modalità: internamente al sistema come valori non strutturati in campi LOB (Large Object) esternamente al sistema, mantendo all’interno del DBMS solo il riferimento alla posizione del file

8 Rappresentazione DBMS Oggetto multimediale LOB Oggetto multimediale
riferimento

9 Rappresentazione - LOB
Facilitano la memorizzazione di dati multimediali (documenti, immagini, audio, ecc.) Possono contenere fino a 4GB di dati (di solito i RDBMS non vanno oltre 2-32KB) Il DBMS non associa alcuna interpretazione a questi dati

10 Rappresentazione - LOB
Si distinguono in: BLOB (Binary Large Object) CLOB (Character Large Object) Supportati da SQL-99 Sono fisicamente memorizzati esternamente alle tabelle ma internamente al DB (comportamento transazionale)

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

12 Rappresentazione - ORDBMS
Illustra/Informix  DataBlade IBM  Database Extender Oracle  Oracle Intermedia Librerie fornite da terze parti

13 Rappresentazione In entrambe le soluzioni di rappresentazione introdotte, gli oggetti sono completamente non strutturati per poterli interrogare in modo ragionevole, è necessario sovraimporre a ciascun oggetto una rappresentazione concettuale la rappresentazione concettuale è costituita da un insieme di dati strutturati che descrivono l’oggetto multimediale (surrogato) dal punto di vista della struttura e del contenuto semantico ogni oggetto dello stesso tipo sarà descritto dallo stesso tipo di surrogato il surrogato del documento non descrive pienamente il contenuto informativo del documento ma costituisce una sua sintesi i surrogati rappresentano gli oggetti sui quali definire le tecniche di indice

14 Rappresentazione Spesso il surrogato si ottiene associando a ciascun oggetto un insieme di attributi due tipi di attributi: descrittivi associano informazioni descrittive (relazionali) a ciascun oggetto vengono associati manualmente all’oggetto content-based (anche chiamati features) associano informazioni relative al contenuto vengono estratti direttamente dal sistema entrambi i tipi di attributi si possono interpretare come una sorta di metadati i metadati associati ad un documento multimediale dipendono dal tipo di media considerato

15 Esempio Attributi descrittivi nome: Villa Medici località:Roma
Features: forma:

16 Rappresentazione Generazione metadati (automatica + manuale) Oggetti
multimediali Features + attributi I sistemi mettono a disposizione funzionalità per estrarre feature e per utilizzare tali feature nel contesto delle interrogazioni

17 Rappresentazione Conseguenza
i documenti multimediali potranno essere confrontati solo rispetto agli attributi e alle feature feature uguali non sempre si riferiscono ad oggetti uguali Esempio si puo’ riferire sia ad una villa che ad un’industria

18 Query Due aspetti è necessario stabilire:
definizione caratteristiche linguaggio di interrogazione query processing è necessario stabilire: approccio generale all’esecuzione delle query aspetti che devono essere supportati

19 Idea di base query processing
Generazione metadati Features + attributi Oggetti multimediali Meccanismo di interrogazione 1 2 3 La query viene eseguita sui metadati (attributi + features) dai metadati si risale ai documenti originali i documenti originali vengono restituiti all’utente

20 Aspetti da supportare Le query devono potere essere eseguite su diversi tipi di media contemporaneamente devono considerare attributi e features devono supportare query per similitudine devono associare un valore di rilevanza ad ogni oggetto restituito devono poter essere pesate devono supportare query spazio-temporali

21 Attributi e feature Le query interrogano gli oggetti multimediali considerando gli attributi e le feature ad essi associati Esempio: ritrova tutte le immagini di abitazioni importanti in Liguria assumo di avere estratto le forme dalle immagini assumo di avere associato informazione descrittiva (luogo, tipo abitazione)

22 Query per similitudine
Poiché il contenuto degli oggetti viene espresso attraverso features e poiché le feature non rappresentano pienamente il contenuto semantico di un oggetto, le condizioni di selezione sugli oggetti multimediali non sempre sono certe ciò significa che le condizioni non sono in generale condizioni di uguaglianza ma di similitudine le condizioni in genere sono verificate in una certa misura, data dalla similitudine tra ciò che stiamo cercando e ciò che abbiamo trovato

23 Query per similitudine
il linguaggio deve permettere di esprimere query di questo tipo il query processing deve essere in grado di supportare tali tipi di query Query: determina tutte le immagini in cui appare una certa persona, presente in una specifica foto difficilmente verranno restituite tutte le immagini che contengono questa persona molto probabilmente verranno trovate anche immagini in cui compaiono persone che, per qualche motivo (dipende dalle feature considerate) assomigliano alla persona cercata

24 Ranking Una conseguenza della necessità di eseguire query per similitudine è quello di decidere i criteri di rilevanza di un oggetto rispetto ad una interrogazione: ranking Il ranking è un ordinamento degli oggetti restituiti da una interrogazione che riflette il grado di rilevanza dei documenti rispetto all’interrogazione I criteri per effettuare il ranking dipendono dal media considerato Esempio: ritrova le 5 immagini in cui più probabilmente appare una certa persona, presente in una specifica foto in questo modo, si aumenta la certezza del risultato

25 Query pesate In alcuni casi può essere utile pesare le varie condizioni nel contesto di una query questo permette di associare un livello di importanza alla condizione nel determinare la similarità degli oggetti Esempio: determinare le immagini che contengono una persona (0.7) non contengono alberi (0.3) la similarità viene pesata

26 Query spazio-temporali
Necessità di interrogare relazioni spazio-temporali esistenti tra gli oggetti relazioni spaziali: associano le feature associate ad un oggetto da un punto di vista spaziale importante per immagini/testo in un’immagine, relaziono le forme che compaiono rispetto alla loro posizione (vicino, lontano, a destra, a sinistra) in un testo, relaziono il contenuto (prima, dopo) relazioni temporali: associano le feature associate ad un oggetto da un punto di vista temporale importante per audio/video sequenze audio/video: prima, dopo, subito prima, subito dopo, contemporaneamente

27 Due approcci alla specifica delle query
Si definisce un linguaggio di query ad esempio, si estende SQL con condizioni specifiche da applicare ad oggetti multimediali tipico DBMS estesi alla gestione di dati multimediali query by example: si fornisce un oggetto di esempio e si vogliono determinare tutti gli oggetti simili esempio: si fornisce la fotografia del viso di una persona e si vogliono ritrovare tutti i visi simili tipico di sistemi dedicati alla gestione di un solo tipo di media

28 Nel seguito ... Considereremo due media: per ciascuno illustreremo
testo immagini per ciascuno illustreremo rappresentazione del contenuto query in alcuni sistemi

29 Basi di dati testuali

30 Basi di dati testuali E’ un database in grado di memorizzare, gestire ed interrogare documenti testuali non strutturati L’obiettivo è di minimizzare il tempo necessario per localizzare le informazioni I risultati di una interrogazione sono ordinati in ordine decrescente di rilevanza Un documento è rilevante se l’utente che formula l’interrogazione giudica che il documento e l’interrogazione si riferiscono entrambi allo stesso argomento

31 Basi di dati testuali L’enfasi è sulla caratterizzazione dei requisiti informativi dell’utente Ritrova tutti i documenti che contengono informazioni sulle squadre di tennis dei college americani che (1) hanno partecipato al torneo NCAA e (2) contengono informazioni sull’allenatore della squadra

32 Basi di dati testuali I database di testi sfruttano tecniche sviluppate per i sistemi di Information Retrieval (IR) L’ambito dell’IR ha prodotto negli ultimi 20 anni: Modelli per la rappresentazione di documenti Architetture e linguaggi Interfacce e metodi di visualizzazione Nonostante questo l’area dell’IR è sempre stata di interesse limitato

33 Basi di dati testuali L’avvento del Web ha cambiato le cose:
È un repository universale di conoscenza Accesso universale a costi ridotti Nessuna autorità centrale Il Web ha però introdotto nuove problematiche (ad es. bassa qualità di definizione e struttura delle informazioni): le tecniche di IR sono viste come una chiave per trovare le soluzioni

34 Basi di dati testuali Lo scopo è di reperire tutti e soli quei documenti che interessano l’utente Un sistema con tali caratteristiche non può però essere realizzato in pratica Per tale motivo si valuta un sistema tanto più efficiente quanto più e’ in grado di avvicinarsi a tale requisito

35 Basi di dati testuali Due criteri di valutazione:
precisione (precision) richiamo (recall)

36 Valutazione di una Interrogazione
Rilevanti Non restituiti Rilevanti Restituiti Non rilevanti restituiti Non rilevanti Non restituiti Documenti contenuti nel database

37 Richiamo Il potere di richiamo è la percentuale di documenti rilevanti restituiti rispetto al totale di documenti rilevanti presenti nel sistema Rilevanti Restituiti Richiamo = Totale Rilevanti

38 Richiamo Il potere di richiamo ideale è uguale ad uno
In generale il potere di richiamo sarà un valore inferiore ad uno perché il numero di documenti pertinenti restituiti è inferiore al numero di documenti pertinenti presenti nel sistema

39 Precisione La precisione è la percentuale di documenti rilevanti sul totale dei documenti restituiti Rilevanti Restituiti Precisione = Totale Restituiti

40 Precisione & Richiamo La condizione ideale è avere il 100% di precisione e richiamo In generale, aumentando il numero di documenti restituiti si aumenta il potere di richiamo a spese della precisione

41 Basi di dati testuali Due problemi principali:
Sviluppo di tecniche efficienti per la rappresentazione dei documenti all’interno del sistema Sviluppo di tecniche per la formulazione e l’esecuzione delle interrogazioni

42 Rappresentazione di documenti testuali

43 Modellazione Estrazione di feature Database

44 Modellazione Nel caso di documenti testuali le feature sono i termini utilizzati come indici Gli indici possono essere: Una parola chiave o un insieme di parole chiave Un insieme di concetti che caratterizzano il contenuto informativo del documento sia i documenti che le interrogazioni vengono rappresentati in termini di feature

45 Modellazione - determinazione termini indice
Noun groups Manual indexing Docs stopwords stemming structure structure Full text Index terms

46 Modellazione - determinazione termini indice
structure: struttura interna del documento (capitoli, sezioni, sottosezioni) stopwords: articoli e congiunzioni noun groups: si eliminano (o si raggruppano insieme ai sostantivi) aggettivi, avverbi, verbi stemming: ci si riduce a radice comune (es. plurale, singolare)

47 Modellazione e query Docs Index Terms doc match Ranking
Information Need Index Terms doc query Ranking match

48 Modellazione Vedere il testo come un insieme di parole chiave è limitativo Questo causa spesso insoddisfazione da parte dell’utente Il problema è ulteriormente complicato dal fatto che spesso gli utenti non sono in grado di formulare interrogazioni che riflettono i loro requisiti informativi

49 Ranking Uno dei problemi più critici è quello di decidere i criteri di rilevanza di un documento rispetto ad una interrogazione Il ranking è un ordinamento dei documenti restituiti da una interrogazione che riflette il grado di rilevanza dei documenti rispetto all’interrogazione I criteri per effettuare il ranking dipendono dal modello adottato per rappresentare i documenti (e di conseguenza anche le query)

50 Modelli s e Adhoc r Filtering T a k Browsing vector probabilistic
Classic Models boolean vector probabilistic U s e r T a k Retrieval: Adhoc Filtering Non-Overlapping Lists Proximal Nodes Structured Models Browsing Browsing Flat Structure Guided Hypertext

51 Modelli Classici – Concetti Base
Ogni documento è rappresentato da un insieme di termini indice rappresentativi Un indice è una parola utile per ricordare l’argomento del documento Solitamente gli indici sono dei nomi I motori di ricerca assumono che tutte le parole nel testo siano indici (rappresentazione full text)

52 Modelli Classici – Concetti Base
Non tutti i termini che compaiono in un documento sono egualmente rappresentativi del suo contenuto informativo: di solito i termini troppo frequenti non sono buoni candidati per diventare indici L’importanza di un indice è rappresentata da un peso ad esso associato

53 Modelli Classici – Concetti Base
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

54 Modelli Classici – Concetti Base
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

55 Modelli Classici – Concetti Base
Si assume che i pesi degli indici siano indipendenti Questa assunzione è una semplificazione perché esistono delle correlazioni tra termini che compaiono in un documento Questo facilita la definizione dei pesi ma rende meno precisa la ricerca: Es: computer  network

56 Modello booleano E’ un modello semplice basato sulla teoria degli insiemi Le interrogazioni sono espressioni booleane Semantica precisa Formalismo consolidato q = ka  (kb  kc)

57 Modello booleano 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

58 Modello Booleano 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)

59 Modello Booleano - similarità
sim(q,dj) = 1 se  vec(qcc) | vec(qcc)  vec(qdnf))  ki, gi(vec(dj)) = gi(vec(qcc))) 0 altrimenti Un documento viene restituito solo se la sua similitudine con l’interrogazione è pari ad uno

60 Modello Booleano Esempio: q=vec(qdnf) = (1,1,1)  (1,1,0)  (1,0,0)
dj = (0,1,0,…….) non è rilevante per q anche se contiene il termine kb di = (1,1,0,….) è rilevante per q

61 Modello booleano - svantaggi
Nessuna nozione di matching parziale Nessun meccanismo di ranking I bisogni informativi di un utente devono essere tradotti in una espressione booleana Le interrogazioni formulate dagli utenti sono spesso troppo approssimate

62 Modello vettoriale L’utilizzo di pesi binari è troppo limitante
Pesi non binari consentono di attuare matching parziali I pesi sono usati per calcolare un grado di similitudine tra una interrogazione e ogni documento nella base di dati I documenti sono restituiti in ordine decrescente di similitudine (ranking)

63 Modello vettoriale Sia i documenti che le interrogazioni sono rappresentate come dei vettori di pesi Si definisce: wij > 0 quando ki  dj wiq > 0 quando ki  q vec(dj) = (w1j, w2j, ..., wtj) vec(q) = (w1q, w2q, ..., wtq)

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

65 Modello Vettoriale sim(q,dj) = cos() = [vec(dj)  vec(q)] / |dj| * |q| =

66 Modello vettoriale Dato che wij >= 0 and wiq >= 0:
0  sim(q,dj)  1 Un documento è restituito anche se soddisfa solo parzialmente l’interrogazione si può decidere di restituire solo i documenti la cui similarità con la query supera una certa soglia

67 Modello vettoriale - pesi
Quali strategie adottare per computare i pesi wij e wiq? Un buon peso deve tener conto di due fattori: Quanto un termine descrive il contenuto informativo di un documento Fattore tf, la frequenza di un termine all’interno di un documento Quanto un termine compare all’interno di tutti i documenti nel db Fattore idf, l’inverso della frequenza di un termine tra tutti i documenti considerati

68 Modello vettoriale - pesi
wij = tf(i,j) * idf(i) + tf(i,j) + ki rilevante per dj + idf(i,) - ki rilevante in generale termini che compaiono spesso in tutti i documenti non sono utili per distinguere un documento rilevante da uno non rilevante

69 Modello vettoriale Sia: Il fattore tf normalizzato è:
N il numero totale di documenti nel db ni il numero di documenti che contengono ki freq(i,j) la frequenza di ki in dj Il fattore tf normalizzato è: f(i,j) = freq(i,j) / max(freq(l,j)) il massimo è calcolato su tutti i termini kl che compaiono in dj Il fattore idf è dato da: idf(i) = log (N/ni) il log è usato per rendere comparabili i valori di tf e idf

70 Modello vettoriale Il metodo più utilizzato è quello di usare come peso: wij = f(i,j) * log(N/ni) Tale strategia è chiamata schema di pesatura tf-idf

71 Modello vettoriale Per i pesi da utilizzare nelle interrogazioni, Salton & Bucley propongono wiq = ( [0.5 * freq(i,q) / max(freq(l,q)]) * log(N/ni)

72 Modello vettoriale Vantaggi: Svantaggi:
I pesi migliorano la qualità delle risposte alle interrogazioni Possibilità di matching parziale La formula per il ranking ordina i documenti in base alla rilevanza che hanno per l’interrogazione Svantaggi: Considera tutti gli indici come indipendenti

73 d1 d2 d3 d4 d5 d6 d7 k1 k2 k3 Esempio Pesi documenti e query booleani

74 Esempio Pesi documenti booleani, query non booleani d1 d2 d3 d4 d5 d6
k1 k2 k3 Esempio Pesi documenti booleani, query non booleani

75 Esempio Pesi documenti e query non booleani d1 d2 d3 d4 d5 d6 d7 k1 k2

76 d1 d2 d3 d4 d5 d6 d7 k1 k2 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: [ ], [ ], [ ], [ ], [ ], [ ]

77 Esempio Calcoliamo TF-IDF per la query quindi: [.22 .47 .85]
k1 k2 k3 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: [ ]

78 Esempio Calcoliamo similarità per ogni documento sim(d1,q)
|d1| = sqrt((.33^2) + (.42^2)) = .53 |q| = sqrt((.22^2) + (.47^2) + (.85^2)) = 1.0 sim(d1,q) = .43 / ( ) = .28 d2: d3: d4: .06 d5: d6: d7: .17

79 Modello Probabilistico
L’obiettivo è quello di utilizzare tecniche di calcolo delle probabilità Data una interrogazione esiste sempre un insieme di documenti che costituiscono la risposta ideale La specifica dell’interrogazione consiste nel definire le caratteristiche della risposta ideale

80 Modello Probabilistico
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

81 Modello Probabilistico
Data una query q e un documento dj, il modello probabilistico cerca di stimare la probabilità che l’utente consideri il documento dj rilevante Il modello assume che tale probabilità dipenda solo dalla interrogazione e dal modo in cui il documento è rappresentato I documenti sono ordinati in ordine descrescente rispetto alla probabilità di rilevanza Non si tengono in considerazione i fattori tf e idf

82 Modelli classici - confronto
Il modello Booleano è il meno potente in quanto non consente il matching parziale Risultati sperimentali indicano che il modello vettoriale ha prestazioni migliori del modello probabilistico

83 Estrazione di Feature dal Testo
Quattro fasi: Analisi lessicale del testo Eliminazione delle “stopword” Normalizzazione delle parole rimanenti Selezione dei termini caratterizzanti (indici)

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

85 Eliminazione delle stopword
Parole troppo frequenti nei documenti (ad esempio che compaiono in più dell’80% dei documenti) non sono utili per determinare il risultato di una interrogazione Esempi di stopword sono articoli, proposizioni e congiunzioni L’eliminazione delle stopword consente di ridurre notevolmente le dimensioni del documento originale L’eliminazione delle stopword può però ridurre il potere di richiamo: to be or not to be

86 Normalizzazione (stemming)
Spesso l’utente specifica un termine in una query ma i documenti rilevanti ne contengono una sua variante La fase di normalizzazione sostituisce le varianti di una stessa parola con la loro radice comune (es: connesso, connettere, connessione,ecc.) Non esiste consenso comune sull’utilizzo della fase di normalizzazione

87 Selezione degli indici
Due alternative: full-text index: tutte le parole sono utilizzate per caratterizzare il contenuto informativo del documento selezione dei termini rilevanti: 1. Mediante un processo automatico 2. Tramite l’utilizzo di un Thesaurus

88 Selezione degli indici
Un metodo consolidato è quello di identificare gruppi di nomi all’interno del testo (es. computer science) Un gruppo di nomi è un insieme di nomi la cui distanza nel testo non supera una soglia predefinita (es: 3)

89 Thesaurus Un thesaurus consiste di:
un insieme di vocaboli ed espressioni-chiave rilevanti per un particolare dominio un insieme di sinonimi per ogni vocabolo nell’insieme I thesauri sono di solito definiti da esperti del settore

90 Thesaurus La fase di indicizzazione e di ricerca avviene solo facendo riferimento ai termini del thesaurus L’utilizzo di thesauri è vantaggioso per domini in cui è possibile la standardizzazione dei termini di ricerca (esempio: ambito medico, legale,ecc.)

91 Thesauri con reti semantiche
In un thesaurus che utilizza una rete semantica i termini possono essere strutturati attraverso una rete di collegamenti concettuali Una relazione semantica puo’ essere: preferenziale gerarchica associativa

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

93 Relazione gerarchica La relazione gerarchica rappresenta la relazione di specializzazione che esiste tra i termini TL (termine largo) TS (termine stretto) Veicolo TL Auto Auto TS Veicolo Il vertice della gerarchia si chiama TA (termine più ampio)

94 Relazione associativa
La relazione associativa esprime un legame biunivoco tra le componenti lessicali RT (termine in relazione) La tipologia di relazione dipende dal contesto Esempi: antinomia: vittoria--sconfitta concomitanza: sintomo--malattia proprietà: trampolino--altezza inclusione: contenuto--contenente localizzazione: partita--stadio

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

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

97 Indice inverso termine documenti a 1,3,4,6,7 b c d 1,7 3,7 4,7

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

99 Architettura di riferimento
Interfaccia utente traduttore indicizzazione DB manager Ricerca indice Text db ordinamento

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

101 Interrogazioni su stringhe
E possibile ricercare tutti i testi che contengono una certa parola, una sua “variante” o un suo sinonimo comput? --> computa, computo,... comp* --> computer, compilato, compito, ecc. Varianti: ricerca di frasi ricerche fuzzy ricerca per prossimità (insieme di parole e indicazione della distanza massima che devono avere all’interno del testo)

102 Interrogazioni booleane
I termini dell’interrogazione possono essere composti mediante gli operatori booleani: p1 AND p2 p1 OR p2 NOT p1 Gli operatori booleani possono essere combinati: (p1 AND p2) OR (p3 AND p4)

103 Sistemi di IR: esempi DIALOG Corporation: offre più di 500 sistemi di IR su svariati argomenti, quali scienze, medicina, economia e giornali elettronici (www.dialog.com) LEXIS-NEXIS: ambito legale ed economico (www.lexis-nexis.com) OCLC (the online computer library center) offre l’accesso ad 1.5 milioni di articoli (www.oclc.org) H.W. Wilson: offre più di 40 sistemi di IR per scuole ed istituzioni pubbliche (www.hwwilson.com)

104 Sistemi di IR: esempi CA SEARCH: Chemical Abstract. Contiene 14 milioni di documenti con una frequenza di aggiornamento di documenti alla settimana MEDLINE: indicizza articoli provenienti da riviste mediche NewYork Times -- Fulltext: contiene tutte le edizioni del NewYork Times dal 1981 ad oggi PsycINFO: Psycological Abstract. Contiene 1.5 milioni di documenti riguardanti psicologia, sociologia, psichiatria, linguistica ed antroplogia dal 1887 fino ad oggi

105 Gestione di testi in Oracle 9i
Oracle 9i Text permette di indicizzare testi e documenti memorizzati in Oracle 9i, in file del sistema operativo o URL, in maniera integrata con i dati relazionali tradizionali con possibilità di interrogazioni basate sul contenuto possibilità di utilizzare un thesaurus classificare documenti in base al loro contenuto vedremo solo il primo aspetto

106 Gestione di testi in Oracle 9i
Formati File di testo HTML, XML documenti Word PDF Linguaggi per ricerche tematiche, inglese e francese possibilità di estendere i linguaggi caricando opportuni thesauri per il linguaggio di interesse

107 Sviluppo applicazione testuale
Caricamento documenti indicizzazione interrogazione operatori thesauri

108 Esempio create table docs (id number primary key, text varchar2(80));
insert into docs values (1,'first document'); insert into docs values (2, 'second document'); create index doc_index on docs(text) indextype is ctxsys.context; select id from docs where contains(text, 'first') > 0;

109 Rappresentazione documenti
B C

110 Rappresentazione documenti
A. Documento contenuto in un campo di tipo CHAR, VARCHAR, VARCHAR2, LONG, LONG RAW, BLOB, CLOB B. Campo di tipo BFILE C. Campo di tipo URIType la tabella deve avere una chiave primaria, utilizzata per identificare i documenti

111 Caricamento documenti
Direttamente con statement INSERT SQL Loader procedure ad hoc OCI

112 Indicizzazione documenti
Oracle supporta diverse tipologie di indice CONTEXT, per ricerche su documenti arbitrari CTXCAT, per ricerche su documenti brevi e strutturati MATCHES, per classificazione documenti noi vedremo solo il tipo CONTEXT la creazione dell’indice è un passo necessario per l’esecuzione di interrogazioni sul documento

113 Indice CONTEXT Determina i termini indice associati ad ogni documento
crea il surrogato organizza il surrogato come indice inverso

114 Indicizzazione documenti
comando per la creazione di indici create index INDEXNAME on TABLE(COLUMN) indextype is ctxsys.context il comando per default assume che: la colonna sia di tipo A il linguaggio sia quello specificato durante l’installazione è possibile modificare le impostazioni di base, customizzando il comando CREATE INDEX sistema di preferences

115 Indicizzazione documenti
In generale, il comando di creazione di indice esegue un insieme di processi che creano oggetti intermedi per ogni processo è possibile specificare delle preferenze

116 Indicizzazione documenti

117 Indicizzazione documenti - processi
Datastore: scorre le righe della tabella e legge i dati della colonna, restituendo i dati contenuti nel documento Filter: prende i documenti restituiti dal datastore e li trasforma in una rappresentazione testuale non necessaria per plain text, XML o HTML documenti Word, PDF, ecc. Vengono convertiti in un testo con mark-up (esempio HTML) Sectioner: divide l’informazione strutturale (markup) dal contenuto Lexer: suddivide il plain text in token (parole) e crea token tematici (in relazione alle preferenze specificate) Indexing engine: crea l’inverted index, eliminando stopword, contenute in STOPLIST e crea indici per stemming utilizzando informazioni in WORDLIST

118 Indicizzazione documenti - preferenze
per ciascun processo ci sono uno o più oggetti che rappresentano i possibili comportamenti in generale, gli oggetti sono raggruppati in classi:

119 Indicizzazione documenti - preferenze
tali oggetti non possono essere usati direttamente negli indici: si crea una preference a partire da tali oggetti template la si personalizza settandone gli attributi si usa tale preference per creare l’indice

120 Indicizzazione documenti - Esempio
ctx_ddl.create_preference('mypref', 'FILE_DATASTORE'); ctx_ddl.set_attribute('mypref', 'PATH', '/docs'); create index doc_index on docs(text) indextype is ctxsys.context parameters ('datastore mypref');

121 Indicizzazione documenti - preferenze
nella clausola parameters si possono specificare più classi, semplicemente aggiungendo una coppia keyword-preference parameters('datastore mypref filter myfilter') questo meccanismo è usato per tutte le classi tranne SECTION GROUP e STOPLIST, che hanno una API propria esistono dei parametri utilizzati dal sistema di default (quelli per LEXER, WORDLIST e STOPLIST dipendono dal linguaggio)

122 Datastore DIRECT_DATASTORE (default) assume che il documento sia memorizzato direttamente nella colonna indicizzata, ne restituisce semplicemente il contenuto FILE_DATASTORE interpreta la colonna come un nome di file, lo apre e ne restituisce il contenuto URL_DATASTORE interpreta la colonna come un URL, effettua una GET e restituisce il contenuto ...

123 Filter NULL_FILTER (default) utilizzato quando il contenuto del documento non è in formato binario, passa semplicemente il testo dal datastore al sectioner CHARSET_FILTER converte i documenti da un insieme di caratteri straniero al character set del database USER_FILTER/PROCEDURE_FILTER filtering ad hoc (es. per convertire tutto in lettere maiuscole) in forma di procedura INSO_FILTER riconosce automaticamente e filtra oltre un centinaio di formati diversi, tra cui Word e Acrobat, producendo HTML come output

124 Lexers BASIC_LEXER: per la maggioranza delle lingue europee, si può modificare il comportamento di default attraverso gli attributi JOINS per specificare caratteri non alfanumerici da trattare come lettere valide PUNCTUATION per specificare i simboli di punteggiatura (importanti per sezioni SENTENCE e PARAGRAPH) per la normalizzazione del testo (es. accenti, maiuscole/minuscole, parole composte) per selezionare indicizzazione di testo o tematica

125 Stoplist lista delle stopword, che non vengono considerate per l’indicizzazione API separata: ctx_ddl.create_stoplist('mylist'); ctx_ddl.add_stopword('mylist', 'the'); stoplist di default, che dipendono dal linguaggio si possono aggiungere stopword all’indice senza doverlo ridefinire alter index myidx rebuild parameters ('add stopword AND'); stop classes (es. NUMBERS) e stop themes

126 Wordlist non ha effetto sull’indicizzazione, ma contiene i setting per espansione stem e fuzzy dei termini utilizzati per rispondere alle interrogazioni un solo oggetto BASIC_WORLDLIST con attributi: STEMMER (espansione di una parola a forme differenti, es. ENGLISH, ITALIAN, NULL) FUZZY_MATCH (considera parole mistyped, es. varie lingue e OCR) FUZZY_SCORE (score floor per espansione fuzzy) FUZZY_NUMRESULT (max. numero parole per espansione fuzzy)

127 Section Groups La classe section group prende un formato di testo (es. XML o HTML) come input e restituisce i section boundaries e plain text i section group non sono creati con create_preferences, ma con una API separata ctx_ddl.create_section_group('mygroup’, 'html_section_group'); il primo argomento è il nome del section group, il secondo è il tipo, che specifica il formato del testo di input e le regole per individuare le sezioni

128 Section Groups tipi di section groups:
NULL_SECTION_GROUP: da usare quando non ci sono sezioni o ci sono solo sezioni speciali: SENTENCES e PARAGRAPH default BASIC_SECTION_GROUP: per XML o HTML, rimuove semplicemente i markup tags, che devono essere bilanciati, non supporta attributi e commenti HTML_SECTION_GROUP: per HTML XML_SECTION_GROUP: per XML NEWS_SECTION_GROUP: per newsgroup style postings, rimuove header lines

129 Section Groups le sezioni hanno tre attributi: ZONE:
TAG: specifica come riconoscere la sezione NAME: specifica come riferirsi alla sezione nelle query (più tag possono essere mappati sullo stesso nome) TYPE: è il tipo di sezione, ci sono tre tipi diversi: ZONE, SPECIAL, FIELD ZONE: si registra dove sono start e end permette query di tipo WITHIN, cioè ricerche all’interno di sezioni particolari se una sezione ZONE si ripete viene trattata separatamente nelle query possono essere annidate

130 Section Groups SPECIAL: non sono riconosciute attraverso tag, ma dal lexer attraverso la punteggiatura SENTENCE PARAGRAPH

131 Section groups FIELD: il contenuto della sezione è indicizzato separatamente dal resto del documento le query di tipo WITHIN vengono eseguite su questo indice separato sono pensate per sezioni non ripetute e non overlapping

132 Section Groups - esempio
Documento: <A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C> Creazione section group ctx_ddl.create_section_group('mygroup', ’xml_section_group'); aggiunta sezioni di tipo ZONE ctx_ddl.add_zone_section('mygroup', 'asec', 'a'); ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c');

133 Section Groups - esempio
Documento plain text Creazione section group ctx_ddl.create_section_group('mygroup', ’null_section_group'); aggiunta sezioni di tipo ZONE ctx_ddl.add_special_section('mygroup', ’SENTENCE');

134 Aggiornamento degli indici
L’indice creato non viene aggiornato automaticamente dopo ogni operazione DML indicizzare un singolo documento richiede molto tempo gli inverted index si aggiornano meglio su un insieme di documenti per volta le applicazioni in genere sono abbastanza statiche, e non è necessaria una completa consistenza possibilità di ricostruzione totale o parziale

135 Interrogazioni La creazione di un indice di tipo CONTEXT permette di eseguire interrogazioni sul contenuto dei documenti funzione CONTAINS, con vari criteri di selezione logici di prossimità fuzzy stemming thesaurus wildcards ricerche su sezioni Sono case-insensitive per default modificabile con preferenze BASIC_LEXER

136 Interrogazioni - contains
select id from texttab where contains(textcol,'query') > 0 il primo argomento è il nome della colonna, il secondo è il testo dell’interrogazione (max 2000 byte) restituisce un numero, che quantifica il match 0 = no match

137 Interrogazioni - scoring
select id, score(1) from texttab where contains(textcol, 'query', 1) > 0 order by score(1) desc 1 è contains label e può essere un qualsiasi numero, utilizzato per matchare lo score nella select list con quello nella clausola where lo score è un numero compreso tra 0 e 100, ed è relativo (significativo solo per la query)

138 Interrogazioni - scoring
Modello vettoriale Pesi wij = 3f(1+log(N/n)) con f frequenza N numero totale tuple n numero tuple che contengono il termine compresi tra 0 e 100 la similarità è un valore tra 0 e 100

139 Interrogazioni - tipologie
interrogazioni semplici contains(text, 'dog') > 0 si possono interrogare frasi: contains(text,'dog my cat') > 0 le stopword sono trattate come wildcard (matchano qualsiasi parola) contains(text, 'dog the cat') > 0 restituisce 'dog my cat’, 'dog your cat’, 'dog the cat' le stopword da sole vengono eliminate dalla query

140 Interrogazioni - operatori booleani
AND (&) e OR (|): restituiscono punteggi numerici invece che valori booleani AND è il minimo dei punteggi dei suoi operandi, OR il massimo NOT (~) è "AND NOT” (differenza): 'dog NOT cat' restituisce i documenti che contengono "dog" ma non contendono "cat” il punteggio restituito è quello del figlio sinistro

141 Interrogazioni - operatori di score
WEIGHT (*) moltiplica il punteggio di un termine di ricerca per renderlo più o meno importante nella query (peso tra .1 e 10) contains(text,'(dog*2) AND cat') > 0 THRESHOLD (>) elimina i documenti sotto una certa soglia contains(text,'(dog*2) AND cat') > 50

142 Interrogazioni - operatori di espansione delle parole
WILDCARD (%_) per pattern matching (come in LIKE di SQL) FUZZY (?) trova parole simili (usa wordlist) STEM ($) trova parole con radice comune (usa wordlist) SOUNDEX (!) trova parole con stesso suono (usa una specifica espansione fuzzy) EQUIV (=) permette di indicare esplicitamente varie forme della stessa parola

143 Interrogazioni - operatori di prossimità
operatore NEAR, che ha due forme dog ; cat ; boat il punteggio dipende da quanto i termini sono vicini l’uno all’altro, in termini di numero di parole NEAR((dog,boat), 10, TRUE) primo argomento è lista di parole secondo è distanza massima (numero di parole) terzo specifica se tenere conto dell’ordine in cui appaiono nella lista

144 Interrogazioni - sezioni
WITHIN: limita una query a una particolare sezione contains(text, ’tiger & cat within sentence') > 0

145 Interrogazioni - esempio
<A>rat</A><A>ox</A> <B>tiger rabbit</B> <C>dragon<C>snake</C></C> ctx_ddl.create_section_group('mygroup', 'basic_section_group'); sezione ZONE ctx_ddl.add_zone_section('mygroup', 'asec', 'a'); ctx_ddl.add_zone_section('mygroup', 'bsec', 'b'); ctx_ddl.add_zone_section('mygroup', 'csec', 'c'); contains(text, 'rat within asec') > 0 restituisce il documento contains(text, 'tiger within asec') > 0 non restituisce il documento

146 Interrogazioni - esempio
ogni istanza è considerata distinta: contains(text, '(tiger and rabbit) within bsec') > 0 trova il documento contains(text, '(rat and ox) within asec') > 0 no contains(text, '(dragon and snake) within csec') > 0 nel caso di sezioni FIELD il contenuto di diverse istanze viene unito, quindi la seconda query restituirebbe il documento

147 Interrogazioni tematiche
Si vogliono determinare i documenti che trattano un certo concetto la stringa specifica rappresenta il concetto (tema) cercato solo per inglese e francese richiede la presenza di una knowledge base gerarchia di concetti con 6 sottoalberi: scienza-tecnologia, affari e finanza, politica e militare, sociale, geografia, idee astratte l’indice deve avere una componente tematica se non ce l’ha, l’interrogazione viene espansa in una query non tematica

148 Interrogazioni tematiche - esempio
contains(text, 'about(canines)') se esiste l’indice, può restituire documenti che contengono “dog” se non esiste, about(go home now) è trasformata in $go,$home,$now

149 Interrogazioni - Thesaurus
Possibilità di creare Thesaurus che definiscono sinonimi e relazioni gerarchiche tra parole o frasi il thesaurus non viene installato di default ma deve essere caricato il sistema contiene un thesaurus di default per l’inglese il caricamento di un Thesaurus permette di espandere le ricerche ai sinomini di una certa parola o ad altre parole ad essa associate

150 Interrogazioni - Thesaurus
file con formattazione particolare alcune relazioni considerate SYN: sinonimi PT: preferred term BT: broader term NT: narrower term RT: related term TR: traduzione in altri linguaggi gli stessi identificatori corrispondono a procedure che permettono di utilizzare queste relazioni nelle interrogazioni

151 Thesaurus - operatori SYN( term [, thesname] ) PT( term [, thesname] )
BT( term [, level [,thesname]] ) NT( term [, level [,thesname]] ) TT( term [, thesname] ) RT( term [,thesname] ) TR( term [,lan [,thesname] ])

152 Altri operatori di score
MINUS (-) sottrae il punteggio dell’operando destro a quello del sinistro contains(text, 'tiger MINUS rabbit') > 0 tiger e preferibilmente non rabbit sottrae i punteggi ACCUM (,) raggruppa più parole o frasi e ne accumula i punteggi contains(text, 'tiger ACCUM rabbit)') > 0 tiger e preferibilmente rabbit somma i punteggi

153 Osservazione AND ACCUM
nella logica a due valori, richiede che entrambi gli argomenti siano veri interpretando vero = 1 e falso = 0, viene restituito il valore minimo stesso discorso nel caso di valori compresi tra 0 e 1 ACCUM semplicemente somma i punteggi più termini compaiono, più il documento è rilevante

154 Osservazione OR nella logica a due valori, richiede che almeno un argomento sia vero interpretando vero = 1 e falso = 0, viene restituito il valore massimo stesso discorso nel caso di valori compresi tra 0 e 1 MINUS toglie punteggi un documento è più rilevante se i termini a destra non compaiono

155 Basi di dati per la gestione di immagini

156 Problematiche La realizzazione di un sistema per la gestione di immagini deve affrontare le seguenti problematiche rappresentazione delle immagini Misura della similarità Metodi di accesso e ritrovamento

157 Rappresentazione Generazione metadati (automatica + manuale) Features
attributi immagini Quali features e attributi?

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

159 Features - shape Una shape per un oggetto può essere rappresentata in vari modi ad esempio, un contorno può sempre essere visto come una sequenza di punti p1,…,pn in uno spazio bidimensionale

160 Features Oggetti semantici
con oggetto semantico si intende un oggetto significativo dal punto di vista dell’applicazione casa, viso, strada se gli oggetti sono chiaramente identificabili e possono essere facilmente riconosciuti, il ritrovamento può essere basato su tali oggetto tipicamente richiedono intervento umano approccio limitato dalle tecniche esistenti di analisi delle immagini

161 Features Texture (tessitura)
rappresentano informazioni relative alle “regolarità” o “irregolarità” dell’immagine dipendono dalla percezione visiva di un’immagine si basano sulle cosiddette Tamura features coarseness (rugosità) contrasto direzionalità

162 Features Colore proprietà globale che non richiede conoscenza degli oggetti contenuti nelle immagini può essere determinato in modo automatico quindi è molto utilizzato spesso si usano istogrammi che rappresentano la composizione di colori in un’immagine ogni componente dell’istogramma corrisponde ad un colore (256 o 64 componenti) per rappresentare un’immagine, si associa ad ogni componente il numero di pixel dell’immagine più simili al colore considerato il colore di ogni pixel in genere viene rappresentato come una tripla (R,G,B), dove R indica la percentuale di Rosso, G la percentuale di Giallo e B la percentuale di Blu

163 Un possibile surrogato per le immagini
In generale, per rappresentare in modo sufficientemente dettagliato un’immagine è necessario utilizzare più features In generale, ogni immagine può essere interpretata come un insieme di oggetti interessanti, ciascuno caratterizzato da un descrittore di forma, che rappresenta la shape dell’oggetto e/o la zona dell’immagine nella quale l’oggetto è collocato (approssimazione) proprietà globali un descrittore di proprietà, che descrive le proprietà di un insieme di pixel nell’immagine (RGB, livelli di grigio per immagini in bianco e nero, texture) proprietà locali le proprietà sono rappresentate da un nome (Red, Green, Blue) e da un dominio (ad esempio {0,…,8})

164 Esempio

165 Esempio Si consideri l’immagine pic1.gif
l’immagine contiene due oggetti di interesse - o1 e o2 - le shape di questi oggetti sono rappresentate dai rettangoli presenti nella figura il descrittore di proprietà associato ad un insieme di pixel potrebbe avere la seguente forma Red = 5 Green = 1 Blue = 3

166 Descrittori di proprietà
Le proprietà vengono in genere associate ad insiemi di pixel In genere, ogni immagine viene associata ad una coppia di interi positivi (m,n), chiamata la griglia di risoluzione dell’immagine una griglia (m,n) divide l’immagine in (m x n) celle di uguale dimensione, chiamate griglia dell’immagine ogni cella è costituita da un insieme di pixel le proprietà possono quindi essere associate a ciascuna cella le proprietà di ogni singola cella possono essere rappresentate come un vettore, in cui ciascuna componente corrisponde ad una determinata proprietà

167 Osservazione Le shape si possono interpretare come proprietà globali dell’immagine le proprietà sono invece locali a ciascuna singola cella dalle proprietà di ogni singola cella si possono ovviamente inferire le proprietà delle celle che rappresentano i vari oggetti identificati

168 Definizione di base di dati di immagini
Una base di dati di immagini è una tripla (GI, Prop, Rec) dove: GI è un insieme di immagini a cui è stata associata una griglia ogni immagine si può quindi vedere come una terna (Immagine,m,n), dove (m,n) rappresenta la griglia di risoluzione Prop è un insieme di proprietà di celle Rec è una funzione che associa ad ogni immagine un insieme di shape, in base ad una qualche rappresentazione Prop rappresenta le proprietà locali delle immagini Rec rappresenta le proprietà globali delle immagini

169 Query per similitudine
Le query possono coinvolgere sia proprietà locali che proprietà globali problema: come determino la similitudine tra due immagini? Approccio fondamentale: approccio metrico si assume che esista una distanza metrica d con la quale confrontare ogni coppia di oggetti più bassa è la distanza, più simili sono gli oggetti

170 Approccio metrico Una funzione da un insieme X a [0,1] è una funzione distanza se soddisfa i seguenti assiomi per ogni x,y,z in X: d(x,y) = d(y,x) d(x,y) <= d(x,z) + d(z,y) d(x,x) = 0 per ogni proprietà associata ad un’immagine può essere definita una funzione distanza la distanza tra due immagini si ottiene quindi combinando le distanze tra le varie proprietà (locali e/o globali), ad esempio applicando la distanza Euclidea

171 Esempio applicato alle proprietà globali
Si consideri un insieme Obj di immagini (256 x 256). Si supponga che ogni cella sia associata a tre attributi (red, green, blue) che assumono un valore in {0,…,8} un esempio di funzioni distanza tra due immagini o1 e o2 rispetto alle tre proprietà considerate è il seguente: diffr[i,j] = (o1[i,j].red - o2[i,j].red)2 diffg[i,j] = (o1[i,j].green - o2[i,j].green) 2 diffb[i,j] = (o1[i,j].blue - o2[i,j].blue) 2 d(o1,o2) = (åi=1,256 åi=1,256 (diffr[i,j] + diffg[i,j] + diffb[i,j]))1/2

172 Approccio metrico per proprietà locali
La distanza precedente rappresenta la distanza Euclidea tra i due oggetti se si considerano n proprietà locali e t =h x k celle, in base all’approccio metrico ogni immagine è vista come un insieme di m punti n-dimensionali f(I) = {P1,…,Pt} Pi = (xi1,…,xin) per determinare se le immagini I1 e I2 sono simili in base alla distanza Euclidea: f(I1) = {P1,…,Pt} Pi = (xi1,…,xin) f(I2) = {Q1,…,Qt} Qi = (yi1,…,yin) d(I1,I2) = (åi=1,t d’(Pi,Qi))1/2 d’(Pi,Qi) = (xi1 -yi1)2 + … + (xin -yin)2

173 Approccio metrico per proprietà locali
L’approccio metrico richiede che per ogni proprietà locale venga calcolata la distanza tra celle corrispondenti in immagini distinte ogni immagine è quindi interpretata come un insieme di punti ogni punto è dato dai valori per le proprietà locali di una certa cella se le proprietà sono n, i punti sono n-dimensionali ogni immagine sarà caratterizzata da tanti punti quante sono le celle poiché il numero delle celle spesso è alto esistono approcci (che non vediamo) per mappare le immagini NON in un insieme di punti MA in un singolo punto in uno spazio s-dimensionale, con s <= n Esempio: consideriamo la media degli n punti in questo caso s coincide con n si noti che il punto ottenuto si può interpretare come una proprietà globale dell’immagine

174 Indicizzazione per proprietà locali
I punti ottenuti possono essere utilizzati come base per definire le tecniche di indicizzazione nel caso limite in cui s = 1, si potrebbero usare I B-tree nel caso in cui s > 1, è necessario utilizzare specifici indici multidimensionali questi indici sono stati definiti nel contesto delle basi di dati spaziali Algo di indiciz. indice DB immagini Spazio n-dimensionale Spazio s-dimensionale

175 Approccio metrico per proprietà globali
Anche per gli oggetti (regioni) associati ad un’immagine è possibile applicare un approccio metrico in questo caso la distanza deve essere definita sulle shape anche le shape possono essere rappresentate come un insieme di punti Esempio se la shape è rappresentata da una spezzata costituita da n segmenti, la spezzata può essere descritta da una sequenza di n punti bidimensionali p2 p1 p3 p4 p5

176 Approccio metrico per proprietà globali
In questo caso è possibile passare da n punti a 2 punti considerando il minimo rettangolo che contiene la shape (minimum bounding box - MBB) 2 punti si possono vedere come un punto in uno spazio 4-dimensionale (s = 4) p2 p1 p3 p4 p5

177 Indicizzazione per shape
Algo di indiciz. indice DB immagini shape Approssimazioni shape

178 Uso della distanza nelle query
L’utilizzo della funzione distanza permette di risolvere in modo formalmente semplice (ma non semplice dal punto di vista di un’ottimizzazione efficiente) le query per similitudine Interrogazione di base: data un’immagine, trovare le immagini simili a quella in input

179 Rappresentazione immagini nei DBMS
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

180 Rappresentazione immagini nei DBMS
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

181 Rappresentazione immagini nei DBMS
Le proprietà possono riferirsi alle celle o all’immagine nel suo complesso e rappresentare, ad esempio, informazioni quali il nome dell’immagine, la data di caricamento, ecc. queste informazioni possono essere rese disponibili all’utente per effettuare interrogazioni Nel caso dell’approccio metrico, il sistema supporterà adeguati indici multidimensionali per supportare le query per similitudine

182 Gestione immagini in Oracle
Ogni oggetto multimediale in Oracle può essere memorizzato, manipolato e interrogato utilizzando un particolare tipo di dato definiti nel package ORDSYS (non indicato nel seguito) Per le immagini ORDImage: un’istanza è costituita da: attributi, che rappresentano il dato sorgente, cioè l’immagine proprietà globali come lunghezza, larghezza, dimensione, tipo file (es. TIFF), tipo di compressione (es. JPEG), tipo di contenuto (es. Monocromatico) metodi, che permettono di gestire le immagini ORDImageSignature: un’istanza rappresenta le feature (signature) associate ad un’immagine

183 Tipi di dato + attributi strutturali ORDImage features
ORDSource + attributi strutturali ORDImage features ORDImageSignature

184 Esempio Si supponga di volere creare una tabella contenente delle fotografie in particolare la tabella deve contenere: id fotografia nome fotografo descrizione fotografia la fotografia una possibile dichiarazione di questa tabella è la seguente: CREATE TABLE stockphotos ( photo_id NUMBER, photographer VARCHAR(64), annotation VARCHAR(255), photo ORDImage, photo_sign ORDImageSignature);

185 ORDImage - attributi

186 ORDImage - Attributi

187 ORDImage - Costruttori
Init() immagine memorizzata internamente inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi: source.localdata=empty_blob() source.local = 1 (indica che l’immagine è caricata nel file system locale) source.updateTime = SYSDATE Esempio insert into stockphotos (1, “John Ross”, NULL, OrdImage.init());

188 ORDImage - Costruttori
Init( srcType IN VARCHAR2 srcLocation IN VARCHAR2, srcName IN VARCHAR2) immagine memorizzata all’esterno inizializza l’oggetto ponendo tutti gli attributi a NULL esclusi: source.localdata=empty_blob() source.local = 0 (indica che l’immagine si assume memorizzata nel file system esterno) source.updateTime = SYSDATE source.srcType, source.srcLocation, srcName, posti uguali ai valori in input

189 ORDImage - esempio Esempio
insert into stockphotos (1, “John Ross”, NULL, ORDImage.init(‘FILE’,’MY_IMAGES,’image1.gif’));

190 ORDImage - Caricamento
I costruttori effettuano solo l’inizializzazione degli attributi ma non caricano l’immagine nel campo BLOB nel caso in cui si intenda copiare l’immagine nel DBMS, sono previsti metodi per il caricamento (e di esportazione) MEMBER PROCEDURE importFrom( ctx IN OUT RAW, source_type IN VARCHAR2, source_name IN VARCHAR2) RAW: dati che non vengono interpretati da Oracle (simile a LOB), utilizzato durante il caricamento, come “buffer” temporaneo Aggiorna source il file viene caricato in localData e local viene posto a 1 inizializzati tutti gli altri campi con valori in INPUT

191 Esempio - caricamento dati nel DBMS
DECLARE Image 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 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; FOR UPDATE: lock sulla tupla

192 Esempio - riferimento esterno
DECLARE Image ORDSYS.ORDImage; BEGIN INSERT INTO stockphotos VALUES (1,’John Doe’,’red plaid’, ORDSYS.ORDImage.init(’file’,’ORDIMGDIR’,’redplaid.gif’), ORDSYS.ORDImageSignature.init()); SELECT photo INTO Image FROM stockphotos WHERE photo_id = 1 FOR UPDATE; … aggiornamento info immagine ... UPDATE stockphotos SET photo = Image WHERE photo_id = 1; COMMIT; END;

193 ORDImage- Metodi per la manipolazione
Si dividono in diversi gruppi tra cui: metodi di copia metodi di processamento metodi di settaggio attributi metodi di accesso agli attributi (circa uno per attributo)

194 Metodi di manipolazione
Metodo di copia: Copy (dest IN OUT ORDImage) copia l’immagine in dest, inclusi i valori di tutti gli attributi metodi di processamento: process(command IN VARCHAR2) command rappresenta una lista di tecniche di image processing da applicare alle immagini esempio: cambiamento scala

195 Metodi di manipolazione
Metodi di settaggio attributi: setProperties() determina i valori per gli attributi di ORDImage, escluso source importFrom() chiama direttamente setProperties da chiamare manualmente negli altri casi Metodi di accesso: circa uno per ogni attributi (si veda il manuale) getHeight() RETURN INTEGER restituisce il valore associato all’attributo HEIGHT

196 Esempio DECLARE Image ORDSYS.ORDImage; BEGIN
INSERT INTO stockphotos VALUES (1,’John Doe’,’red plaid’, ORDSYS.ORDImage.init(’file’,’ORDIMGDIR’,’redplaid.gif’), ORDSYS.ORDImageSignature.init()); SELECT photo INTO Image FROM stockphotos WHERE photo_id = 1 FOR UPDATE; Image.setProperties(); UPDATE stockphotos SET photo = Image WHERE photo_id = 1; COMMIT; END;

197 ORDImageSignature Rappresenta le feature calcolate a partire da un’immagine l’insieme delle features viene chiamato signature unico attributo, di tipo BLOB

198 ORDImageSignature - segnatura
La segnatura contiene le seguenti features: color: distribuzione di colore nell’immagine texture shape: rappresenta gli oggetti (tipicamente forme geometriche) location: tiene conto della posizione delle shape nell’immagine e della distribuzione del colore I valori associati alle precedenti proprietà rappresentano un punto: multidimensionale la somma di tali valori per un’immagine è 100

199 ORDImageSignature - segnatura
Image1 e Image2 sono simili rispetto al colore globale ma non rispetto alla locazione

200 ORDImageSignature - segnatura

201 ORDImageSignature - metodi
inizializzazione: metodo init() generazione segnatura: metodo generateSignature(ORDImage) altri che non vediamo

202 Esempio DECLARE t_image ORDSYS.ORDImage;
image_sig ORDSYS.ORDImageSignature; BEGIN SELECT photo, photo_sig INTO t_image, image_sig FROM stockphotos WHERE photo_id=1 FOR UPDATE; image_sig.generateSignature(t_image); UPDATE stockphotos SET photo_sig = image_sig WHERE photo_id =1; END;

203 Caricamento completo immagine
In Oracle, un’immagine è rappresentata secondo tre componenti: immagine stessa (BLOB o BFILE) se la si vuole trattare come BFILE, l’operazione di inizializzazione initFrom() è sufficiente ad inizializzare l’immagine se la si vuole trattare come BLOB, è necessario prima inizializzarla e poi importarla (init() + importFrom()) attributi descrittivi determinati con metodo setProperties() segnatura calcolata con metodo generateSignature()

204 Indici La creazione degli indici non è immediata
Esempio: per creare un indice sull’attributo photo della tabella stockphotograph: CREATE INDEX imgindex on stockphotograph(photo.signature) INDEXTYPE IS ORDSYS.ORDImageIndex;

205 Interrogazioni Due operatori (non metodi) principali:
IMGsimilar: prese due segnature, stabilisce se sono simili, confrontando le segnature IMGscore: restituisce il valore di similarità per due segnature

206 IMGSimilar IMGSimilar( signature IN RAW, querysignature IN RAW,
weightstring IN VARCHAR2, threshold in FLOAT, [referencetoScore IN NUMBER]) weightstring ha la forma ‘color = “val” texture = “val” shape = “val” location = “val” dove val è un valore tra 0 e 1 che “pesa” una certa feature

207 IMGSimilar l’operatore calcola la media delle distanze di ogni proprietà considerata, pesandola rispetto ai pesi specificati in weightstring restituisce 1 se la distanza è minore di threshold (valore tra 0 e 100) 0 distanza minima (similarità massima) referencetoScore assegna un identificatore alla chiamata della funzione potrà poi essere utilizzato nella chiamata della funzione VIRScore, nel contesto della stessa query

208 IMGScore IMGScore(referencetoSimilar IN NUMBER)
la query che invoca questo metodo deve anche invocare IMGSimilar posso calcolare lo score solo se ho determinato quali oggetti sono simili referencetoSimilar è un intero che rappresenta l’identificatore di una chiamata a IMGSimilar lo score viene calcolato rispetto agli oggetti sui quali è stata applicata IMGSimilar

209 Esempio Supponiamo di volere determinare tutte le fotografie simile ad una fotografia F data nel determinare la similitudine, vogliano attribuire un peso maggiore al colore, in particolare vogliamo fissare i pesi come segue: color = 0.6 texture = 0.2 shape = 0.1 location = 0.1 vogliano inoltre fissare un threshold a 50 vogliamo restituire gli identificatori delle fotografie che soddisfano la query insieme allo score calcolato

210 Esempio (continua) Supponendo di considerare una variabile
F ORDImageSignature ecco la query: SELECT photo_id,ORDSYS.IMGScore(12) FROM stockphotos WHERE ORDSYS.IMGSimilar(photo_sig,F, ‘color = “0.6” texture = “0.2” shape = “0.1” location = “0.1” ‘ , 50, 12) = 1

211 Esempio (continua) Si consideri adesso un’immagine con le seguenti distanze dalle feature della query: texture = 5 color = 90 shape = 50 location = 15 la distanza è calcolata come segue: 0.1 * * * * 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 * * * * 50 = 24.0 in questo caso l’immagine verrebbe restituita

212 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;

213 Esempio Si consideri la tabella Panorami, memorizzata in una base di dati Oracle 9i. Tale tabella contiene i seguenti campi: Id, di tipo NUMBER Nome, di tipo VARCHAR(30) Descrizione, di tipo VARCHAR(200) Panorama, di tipo ORDSYS.ORDImage Panorama_sign ORDSYS.ORDImageSignature

214 Esempio (continua) Si supponga di volere inserire nella tabella la seguente tupla: Id = 1 Nome = “Genova3” Descrizione = “Il porto antico di notte” Panorama = “GePA.gif” Il file GePA.gif risiede nella directory “Immagini”. L’immagine sorgente deve inoltre essere gestita come BLOB. Presentare lo statement SQL per l’inserimento della tupla ed indicare quali metodi dovranno essere successivamente invocati per gestire l’immagine come BLOB e perché.

215 Esempio (continua) INSERT INTO Immagini VALUES
(1, “Genova3”,”Il porto antico di notte”,ORDSYS.ORDImage.init(), ORDImageSignature()); SELECT Panorama INTO Image FROM Panorami WHERE id = 1 for UPDATE; Image.importFrom(ctx, ‘FILE’,’IMMAGINI’,’GePA.gif’); sign.generateSignature(Image); UPDATE Panorami SET Panorama = Image, Panorama_sign = sign WHERE id = 1;

216 Esempio (continua) SELECT Nome,ORDSYS.IMGScore(12)
Determinare tutti i panorami simili a “query_pan”, considerando solo il colore. Restituire i nomi delle immagini e lo score. SELECT Nome,ORDSYS.IMGScore(12) FROM Panorami WHERE ORDSYS.IMGSimilar(panorama_sig,query_pan, ‘color = “1” texture =“0” shape = “0” location = “0” ‘, 10, 12) = 1 la scelta di un threshold del 10% mi permette di selezionare solo le immagini molto simili a quella data

217 Esempio (continua) Si supponga che per l’immagine GePA.gif siano state calcolate le seguenti distanze rispetto a “query_pan” : color = 40 texture = 30 shape = 20 location = 30 Stabilire se l’immagine GePa.gif verrà restituita dall’interrogazioni I 40 * 1 = 40 quindi l’immagini non viene restituita


Scaricare ppt "Basi di dati multimediali"

Presentazioni simili


Annunci Google