310 likes | 447 Views
Protégé-2000. Un tool per la creazione e sviluppo di Ontologie e Basi di Conoscenza protege.stanford.edu. Il modello di Protege. Knowledge model Frame-based OKBC compatible Caratteristiche principali Un editor per creare, visualizzare, gestire, e mantenere basi di conoscenza (KBs)
E N D
Protégé-2000 Un tool per la creazione e sviluppo di Ontologie e Basi di Conoscenza protege.stanford.edu
Il modello di Protege • Knowledge model • Frame-based • OKBC compatible • Caratteristiche principali • Un editor per creare, visualizzare, gestire, e mantenere basi di conoscenza (KBs) • API per un accesso universale a KB • Una interfaccia utente (GUI) estensibile • Diversi formalismi di rappresentazione della conoscenza
Protégé: Componenti Principali Ognuna delle componenti principali di Protégé ha una interfaccia ben definita con il resto del sistema ed è perfettamente sostituibile da componenti analoghe Knowledge model Storage model User interface
Gli elementi di Protégé-2000 User interface OKBC-compliant knowledge model Form personalizzabili Slots Facets standard e user-defined Rappresentazione di grandi data set Easy browsing Instanze Classi e gerarchie di classi Adaptability Domain- specific tabs Componenti per lo sviluppo di Applicazioni basate su conoscenza Custom widgets
Sviluppo di una base di conoscenza: l’approccio Protégé R Protégé C2 C1 C3 C4 C5 Ontologia di dominio Strumento di Acquisizione della Conoscenza
Protégé: una visione d’insieme Class Tab
Sviluppo di una Ontologia • Approccio pratico: • Definire le classi della ontologia • Disporre le classi secondo una gerarchia tassonomica • Definire gli attributi e i valori ammissibili per ognuno di essi • Specificare quali classi hanno quali attributi e definire delle restrizioni specifiche sui valori ammessi da tali attributi
Sviluppo di una Ontologia (2) • Approccio ingegneristico: • Analisi del dominio da rappresentare, mediante consultazione di esperti del settore • Non esiste un modo unico e corretto per modellare un dominio: criteri di scelta del dominio • Approccio iterativo allo sviluppo della ontologia
Sviluppo di una Ontologia (3) • Tra le possibili alternative, occorre quindi favorire, quelle che: • Si adattano meglio all’obiettivo (task) che la nostra applicazione deve perseguire. • Siano maggiormente: • Intuitive • Estensibili • Di facile Manutenzione
Un esempio guidato per lo sviluppo di una: Ontologia di Vini Francesi
Sviluppo dell’Ontologia: Processing Steps • Step 1. Determinare il dominio di applicazione dell’ontologia • Quale sarà la copertura del dominio che l’ontologia dovrà offrire? • Per quale motivo vogliamo usare l’ontologia? • Per quale tipo di interrogazioni l’ontologia dovrebbe fornire delle risposte? • Chi userà e manterrà l’ontologia?
Sviluppo dell’Ontologia: Processing Steps • Step 2: considerare l’ipotesi di riusare ontologie (o semplici classificazioni) già esistenti • (www.wines.com, www.daml.org/ontologies) • Step 3: Enucleare i termini più importanti nel dominio che dovrebbero comparire nell’ontologia • vino, uva, produttore, locazione, colore del vino, corposità, sapore, contenuto di zuccheri etc.. • Tipi differenti di cibo, come “pesce” o “carne rossa”; • Sottotipologie di vini: come vino bianco, rosso etc..
Sviluppo dell’Ontologia: Processing Steps • Step 4: Definire le classi e la gerarchia delle classi • Approccio: • Top-Down • Bottom-Up • Ibrido • Regola d’oro: • Se una classe A è una superclasse di una classe B, allora ogni istanza di B è anche istanza di A
Sviluppo dell’Ontologia: Processing Steps • Step 5: Definire le proprietà delle classi-slot • Proprietà intrinseche: come il sapore del vino • Proprietà estrinseche: come il nome del vino o la zona da cui proviene • Parti: se l’oggetto è strutturato; queste possono essere sia concrete che astratte • Relazioni che coinvolgono istanze della classe e altri oggetti dell’ontologia: • “produttore” lega una cantina ad un determinato vino • “Uva” lega un determinato tipo di vino con l’uva da cui esso è prodotto
Sviluppo dell’Ontologia: Processing Steps • Step 5 (bis): • Ogni Template-slot di una classe viene ereditato dalle sue sottoclassi (overriding degli slot) • Scelta di quale classe detiene originariamente lo slot
Sviluppo dell’Ontologia: Processing Steps • Step 6: Definire le “facets” di uno slot • Tipi di facets di uno slot: • Value Type • String • Integer • Float • Boolean • Symbol (Enumerated) • Instance • Class • Allowed values • Cardinality • Inverse Slot? • Altre (possibili) caratteristiche dello slot
Sviluppo dell’Ontologia: Processing Steps • Step 6 (bis): Facets: Dominio e Range di uno slot • Rappresentano rispettivamente l’insieme di classi cui uno slot è attaccato, e l’insieme di classi cui uno slot può far riferimento; è importante: • Trovare le classi più generiche che possano rappresentare dominio e range di uno slot, d’altro canto, non definire mai domini/range eccessivamente generici • Se una lista di classi che definisce un range/dominio di uno slot include una classe e una sua sottoclasse, rimuovere la sottoclasse (ridondanza di informazione) • Se una lista di domain/range classes di uno slot contiene tutte le sottoclassi si una classe A ma non la classe stessa, eliminare tutte le classi e inserire la classe stessa A. • Se una lista di domain/range classes di uno slot contiene quasi tutte le sottoclassi di una classe, domandarsi se non sia più appropriato inserire la loro superclasse.
Sviluppo dell’Ontologia: Processing Steps • Step 7: Creazione delle Istanze • Problema Amletico: Istanza o Classe?
Customizzazione di Protégé:l’esperienza CROSSMARC • Il progetto CROSSMARC – Obiettivi: • sviluppare un motore di ricerca intelligente che permetta confronti di prezzo e qualità tra prodotti di vario genere venduti nella rete • Capacità di gestire pagine HTML provenienti da differenti paesi e scritte in diversi linguaggi • Customizzazione di Protégé in ambito Crossmarc • Creazione di diversi Tab adatti agli scopi di Crossmarc • Gestione di Lessici in vari linguaggi • Import/Export delle ontologie nel formalismo XML adottato in CROSSMARC • Utilizzo di UTF-8 come sistema di codifica dei caratteri
XI_to_Protégé: un tool di esportazione • “Fileografia”: • Cartella XI • disint_utils.pl • mario.txt • sicstus_utils.pl • xi.pl • xi_compile.pl • xi_io.pl • xi_loader.pl • File xi_to_protege.pl • File piccola_ontologia.pl • Uso: • Eseguire consult di: • xi_loader.pl (che provvederà a caricare il resto dello xi_model) • piccola_ontologia.pl • xi_to_protege • Chiamare il predicato start • Attendere che i tre file di Protégé con estensioni .pprj .pins .pont siano creati.
Esercizio • Problema (generico): • riconoscere alcuni elementi “interessanti” all’interno di un testo scritto in linguaggio naturale • Soluzione: • Costruzione di una ontologia, a partire da una semplice lista di elementi “interessanti” • Individuazione dei referenti lessicali agli oggetti definiti nell’ontologia, all’interno del testo fornito.
Esercizio • Elementi a disposizione (nel nostro caso): • Foglio Excel con elenco degli elementi da individuare • Testo tokenizzato da cui estrarre informazione • Modello di rappresentazione ontologica XI • Passi da seguire: • Creare una ontologia - secondo il formalismo di XI - che rappresenti tutte le entità individuate • Esportare l’ontologia in Protégé al fine di verificarne visivamente la consistenza • Creare una lista degli elementi estratti dal testo.
Esercizio (Prolog) Definire un predicato: testo_etichettato_semanticamente(TEXT,TEXT_SEM) che sia vero se: TEXTè una Lista[w1,w2,…,wn] TEXT_SEM è una Lista[s1,s2,…,sn] dove: a) si = sem_class(wi) se wi generalizza nella gerarchia nella classe sem_class (una classe delle classi ritenute importanti) b) si = wi altrimenti
Esercizio (Prolog) • Definire un predicato: testo_stampato_in_XML(TEXT_SEM) Che sia vero se TEXT_SEM è stato stampato su stdout nel seguente formato: <TEXT> … <element class=“classe_xi”> wi </element> … wj … </TEXT>
Esercizio (XML+XSL) Trasformare il testo ottenuto in precedenza in un testo XHTML tale che le parole etichettate semanticamente siano evidenziate in bold