In termini informatici, un‘Ontologia è un insieme di termini gerarchicamente strutturato che descrive un dominio e che può essere utilizzato come schema per una base di conoscenza. In questo articolo esamineremo la fase di Mapping nel processo di costruzione dell?ontologia.
Definizione di Ontologie
L’Ontologia, “lo studio dell’essere in quanto essere” come diceva Aristotele, era una disciplina strettamente filosofica, lontana dal mondo della tecnologia. Eppure, negli ultimi anni, l’esplosione delle comunicazioni in rete ha favorito un fenomeno che sarebbe stato difficile immaginare: gli aspetti ontologici dell’informazione acquistano un valore strategico.
Tali aspetti sono intrinsecamente indipendenti dalle forme di codifica dell’informazione stessa, che può quindi essere isolata, recuperata, organizzata, integrata in base a ciò che più conta: il suo contenuto. La standardizzazione di tali contenuti risulta oggi cruciale nella prospettiva delle aziende integrate e del commercio elettronico ed è indispensabile per semplificare i processi di comunicazione.
Inizialmente le Ontologie sono state sviluppate nel settore dell’intelligenza artificiale per facilitare la condivisione e il riuso della conoscenza; esse costituiscono un tema di interesse in diverse comunità di ricerca: ingegneria della conoscenza, elaborazione del linguaggio naturale, sistemi informativi cooperativi, gestione delle conoscenze [1].
Un’Ontologia, in termini informatici, è un insieme gerarchicamente strutturato di termini che descrive un dominio e che può essere utilizzato come schema per una base di conoscenza. Attraverso l’utilizzo delle Ontologie i concetti di un particolare dominio possono essere condivisi in più ambiti applicativi arricchendo di semantica la conoscenza da modellare.
L’Ontologia, insieme di conoscenze condivise in un dato ambiente, può migliorare la comunicazione. Creare una Ontologia significa analizzare tutte le conoscenze che riguardano il mondo reale, cercando di individuare l’area in cui si deve inserire la stessa, ed estrarre le informazioni che si ritiene siano utili per la comunicazione. Una Ontologia deve essere pensata come una raccolta di dati che può essere estesa con nuove informazioni, in modo da permettere l’utilizzo efficiente in aree che sono simili a quella in cui è stata costruita.
La costruzione del modello deve permettere l’utilizzo della conoscenza da parte di tutti gli utenti e quindi deve contenere le specifiche dei termini, le informazioni su come adoperarli, le relazioni che legano due o più concetti e tutti i dati che la rendano facilmente comprensibile.
Ontologie e mapping di ontologie
La prima questione da affrontare è quella dell’individuazione della struttura del dominio che si sta analizzando: si devono individuare gli oggetti che lo costituiscono, sotto vari punti di vista, a seconda della natura stessa del dominio. Ad esempio, un sito per il commercio elettronico può essere strutturato in base ai prodotti che offre; invece, una realtà organizzativa (come un’azienda) non può essere articolata solo in base ai servizi che fornisce, ma anche in base alle persone che ci lavorano o ai suoi vari reparti. È importante che la tassonomia rispecchi i legami reali e che metta in luce gli aspetti di classificazione che si riscontrano nella realtà.
Una volta individuati i concetti-chiave, si devono individuare tutte le caratteristiche e le proprietà che sono rilevanti per descriverli: ad esempio, i dati anagrafici per le persone o i dettagli di fabbricazione per un prodotto in vendita. A seconda, poi, del linguaggio che si utilizzerà in seguito, questi attributi saranno trasformati in proprietà o relazioni.
Un altro importante aspetto che deve essere analizzato è l’individuazione dei legami tra i vari elementi della tassonomia: è possibile che i vari concetti siano correlati non solo in base alle regole di classificazione, ma anche da relazioni specifiche del tipo di dominio che si sta analizzando. Ad esempio, due reparti di un’organizzazione (che nella tassonomia possono trovarsi allo stesso livello dell’albero) possono essere legati per il tipo di lavorazione che effettuano e questa situazione deve essere tradotta da una relazione che la esemplifichi.
Poiche’ il dominio può non essere l’unico di quel tipo, rappresentato mediante un’ontologia, è possibile che esistano ontologie esistenti che definiscano, tutti o in parte, i concetti appena trovati. L’individuazione di queste ontologie è molto importante: in primo luogo, i concetti già definiti possono essere riutilizzati, così come le proprietà e le relazioni, in modo che non siano specificati più volte; i concetti nuovi, invece, sono dichiarati e memorizzati nella nuova ontologia, che diventa un’estensione di quella precedente, così da avere una gerarchia e i nuovi elementi siano disponibili per essere a loro volta estesi, per raggiungere nuovi scopi.
Lo sfruttamento e l’estensione di documenti già esistenti diventano possibili solo se le ontologie sono reperibili e indirizzabili: in alcuni casi, per rendere i sistemi più efficaci, è consentita la loro duplicazione su siti diversi, in modo che un utente possa specificare (solitamente mediante un URI) la locazione più idonea
Disegno di un’ontologia
Un’ontologia può essere definita tramite la modalità a passi [4] descritta nella figura 1:
Figura 1 – I passi per la definizione di una ontologia.
- Scope definition: È una fase preliminare, in cui si devono decidere quali sono i contorni del dominio. In questa fase è spesso una buona idea definire uno scenario chiarendo quali saranno le parti che condivideranno l’ontologia e quali problemi essa dovrà aiutare a risolvere.
- Class and slot definition: Probabilmente è la fase più importante della progettazione di un’ontologia. Una classe corrisponde ad un concetto nell’applicazione di dominio che deve essere rappresentata tramite l’ontologia. Riferendosi alla teoria le classi, possono essere viste come insiemi i quali possono avere elementi rappresentati dalle istanze. Un’istanza è un oggetto del mondo reale che si trova, a livello gerarchico, sotto il corrispondente concetto legato alla classe. I nomi di classi e proprietà descriveranno il vocabolario del dominio, ricordandosi però che le prime sono molto di più dei nomi degli insiemi in quanto descrivono la struttura delle loro istanze attraverso le loro parti interne che vengono chiamate slot. Uno slot descrive parti o attributi di istanze e può appartenere alla stessa oppure ad altre classi. Quindi il dominio di uno slot è la classe (o le classi) le cui istanze possono avere tale slot, mentre il suo range è la classe (o le classi) a cui esso appartiene.
- Constraints definition: Una volta definite classi e slot, si deve dare una descrizione più precisa dei concetti per meglio identificare le istanze legate ad essi. In questa fase si deve fornire anche la documentazione sia per le classi sia per gli slot in modo da descriverli con il linguaggio naturale, compilando un thesaurus basato sul vocabolario dell’ontologia. Il raffinamento di un concetto si sviluppa in due fasi. La sistemazione del range di cardinalità dei suoi slot semplici e la sostituzione, ove possibile, delle classi con le sottoclassi negli slot di tipo complesso. Tutto ciò comporta la definizione di vincoli di validità che essenzialmente riguardano cardinalità e tipo.
- Instance creation: In questa fase vengono create le istanze assegnando i valori degli slot che devono essere conformi ai vincoli.
L’ontological engineering è l’attività di progettazione e mantenimento delle ontologie: tale attività può essere divisa nelle seguenti fasi di sviluppo:
Figura 2 – Fasi di sviluppo dell’ontological engineering.
- Design: Descritta dalle fasi esplicitate precedentemente.
- Validation: Valutazione dell’ontologia dal punto di vista della completezza. In questa fase si devono controllare la correttezza della gerarchia, il bilanciamento dell’albero, il corretto inserimento di tutti i concetti d’interesse e di altre informazioni concettuali sulla navigabilità dell’ontologia.
- Deployment: Esprimere l’ontologia in una sintassi “machine readable” formale e adatta.
- Mapping: Questa fase viene chiamata anche “indicizzazione”, e consiste nell’associare i concetti dell’ontologia alle istanze. Le risorse stesse possono essere viste come una parte dell’ontologia condivisa e per questo motivo è stata standardizzata una definizione per il termine “risorsa” da parte dell’Internet Engineering Task Force (IETF). Il documento definisce una risorsa come “qualsiasi cosa che ha un’identità”.
Ancora, nel caso in cui i dati siano memorizzati in un formato sufficientemente regolare, è possibile realizzare brevi programmi, basati su tecniche di “pattern matching”, che estraggono le informazioni da convertire in un linguaggio semantico.
Analizziamo a questo punto come utilizzare tecniche semiautomatiche per effettuare il processo di Mapping.
Text Analysis per il Mapping
Allo scopo di applicare le tecniche e gli algoritmi di Mapping di ontologie da entità testuali è necessario introdurre una qualche forma di rappresentazione.
La scelta di questa è cruciale, perche’ influenza diversi aspetti, come ad esempio l’efficienza del sistema e la sua capacità di generalizzare, ovvero di produrre una risposta corretta quando è di fronte a documenti mai visti prima. Anche i testi che già hanno subito una formattazione in qualche formato (come ad esempio le pagine HTML oppure i file di tipo PDF o DOC) non sono adatti per essere usati direttamente dalla maggior parte degli algoritmi e degli strumenti di classificazione. In questa serie sarà trattato l’argomento della rappresentazione del testo con particolare attenzione per quanto riguarda la rappresentazione orientata alla Text-Analysis [2].
Uno degli aspetti più problematici nella rappresentazione di testi in linguaggio naturale è l’importanza che ha, sul significato di una porzione di testo, il contesto in cui è inserito. Non solo una parola può essere interpretata in più modi (fenomeni di polisemia o omonimia, si pensi ad esempio alla differenza di significato che la parola “rosa” assume nelle due locuzioni “La rosa dei candidati” e “La rosa rossa”), ma intere frasi possono avere differenti significati a seconda del tipo di discorso che si sta facendo, di chi le sta scrivendo (e di chi lo sta leggendo), e della situazione in cui ci si trova.
Differenti approcci per la rappresentazione del testo possono tenere in considerazione oppure ignorare questi aspetti a vari livelli. Una possibile schematizzazione di questi approcci basata sul livello di profondità con cui analizzano il testo è la seguente [3] [5]:
- SUB-WORD LEVEL, nel quale è tenuta in considerazione la morfologia delle parole, che vengono ulteriormente decomposte in unità di testo più piccole.
- WORD LEVEL, nel quale l’unità elementare di testo tenuta in considerazione è la parola e l’informazione è di tipo lessicale.
- MULTI-WORD LEVEL, nel quale l’unità elementare di testo tenuta in considerazione è una sequenza di parole (spesso una frase) considerando la struttura sintattica che le lega.
- SEMANTIC LEVEL, nel quale il testo è analizzato al livello del suo significato.
- PRAGMATIC LEVEL, nel quale il testo è analizzato al livello del suo significato tenendo anche conto del contesto e della situazione in cui va ad inserirsi.
Nella maggioranza dei casi, l’approccio seguito è quello WORD LEVEL, perche’ in genere le parole sono unità di testo significative ed il livello di ambiguità che hanno è molto basso. L’assunzione che i fenomeni di omonimia e polisemia siano trascurabili nella rappresentazione di un intero documento è nella maggior parte dei casi accettabile. Inoltre, le rappresentazioni di tipo word-based hanno il vantaggio di essere in genere molto semplici.
Progettare algoritmi che, partendo da un testo generico, ottengano una sua suddivisione in parole, è immediato: basta isolare tutte le unità che si trovano tra due caratteri blank (oppure segni di interpunzione), e solitamente si ottiene un risultato accettabile.
Nell’approccio SUB-WORD LEVEL le parole sono invece ulteriormente scomposte in unità più piccole. Il metodo più utilizzato per rappresentare queste unità è quello degli n-grammi, ossia stringhe di n caratteri. Ad esempio, la presenza della parola “casa” in un testo può essere rappresenta tramite i 3-grammi
"\_ca" "cas" "asa" "sa\_"
oppure tramite i 2-grammi (o bigrammi)
"\_c" "ca" "as" "sa" "a\_"
Rispetto all’approccio WORD LEVEL, gli n-grammi garantiscono una maggiore robustezza al rumore e implementare un algoritmo che effettui una rappresentazione del testo tramite essi è comunque immediato; tuttavia le risorse computazionali richieste da un algoritmo con approccio SUB-LEVEL possono essere decisamente più elevate rispetto a quelle di altri approcci.
Nell’approccio MULTI-WORD LEVEL, l’unità elementare trattata ha spesso al suo interno informazioni sintattiche. In conseguenza di questo, grazie ai miglioramenti tecnologici degli strumenti linguistici avvenuti negli ultimi tempi, che consentono di analizzare la struttura sintattica di un testo con buona efficienza, questo approccio ha riscosso un certo interesse di recente.
L’approccio SEMANTIC LEVEL e quello PRAGMATIC LEVEL invece, benche’ siano comunque stati oggetto di studi e di esperimenti, continuano a essere frenati (specialmente in ambito applicativo) dall’impossibilità attuale di estrarre automaticamente la semantica di un testo generico e rappresentarlo in un formato operazionale.
I blocchi elementari trattati sono detti indexing terms o features, e fanno riferimento all’unità elementare trattata da ogni livello. Ad esempio, fanno riferimento alle parole nel caso WORD LEVEL, agli n-grammi nel caso SUB-WORD LEVEL, a locuzioni o frasi a livello MULTI-WORD, e così via.
La maggior parte delle tecniche di rappresentazione del testo cerca di individuare, per ogni documento, un insieme di termini rappresentativi la cui semantica possa fornire indicazioni nel determinare l’argomento trattato dallo stesso documento. Tale insieme di termini rappresentativi (nel caso più comune, singole parole) prende il nome di index term.
Affinche’ la rappresentazione del testo sia davvero rappresentativa del contenuto del documento, è necessario operare una selezione che assegni ad alcune tipologie di termini (ovvero, quelle con il più alto contenuto semantico) una importanza maggiore. Ad esempio, una forma di rappresentazione efficace, dovrebbe tenere in bassa considerazione termini come gli avverbi, spesso scarsamente significativi nell’individuazione dell’argomento trattato da un documento.
Nella rappresentazione dei testi tramite index term di solito si assume, allo scopo di semplificare il processo di determinazione delle features, che tutti i termini siano indipendenti tra loro, e perciò si considera trascurabile l’apporto informativo aggiunto dall’eventuale presenza di più termini. Benche’ questo porti alla perdita di qualche informazione, in quanto una certa correlazione tra termini esiste, tale assunzione nella grande maggioranza dei casi non influenza significativamente la categorizzazione.
Tipicamente, un testo è rappresentato tramite la creazione di uno spazio vettoriale. Un documento sarà quindi individuato tramite un vettore di pesi associato agli indexing terms che lo caratterizzano. Più rigorosamente, al j-esimo documento verrà associato un vettore del tipo:
Rappresentare un documento in questo modo porta però alcuni problemi di tipo computazionale che è necessario risolvere o comunque arginare per quanto possibile. Il più evidente è legato al parametro n, ovvero la dimensione dello spazio vettoriale di rappresentazione, che può assumere un valore elevatissimo, visto l’altissimo numero di feature che è possibile estrarre da un documento.
Una strada usata per ovviare (almeno in parte) a questo problema è l’applicare ai documenti un pre-processamento che elimini i termini che non garantiscono un sufficiente potere discriminante (p.e., gli articoli) oppure che accorpi più termini sotto una feature che sia in grado di rappresentarli tutti. Questa strada si attua tramite tecniche di pre-processing. Tuttavia queste tecniche non sono nella gran parte dei casi sufficienti; pertanto spesso, dopo averle messe in pratica, è necessario applicare ulteriori metodi per ridurre la dimensione dello spazio vettoriale, ovvero tecniche di dimensionality reduction.
In conclusione, i diversi approcci basati sulla costruzione di un index term vanno a differenziarsi per:
- Scelta delle features, legata alla scelta del livello di rappresentazione del testo fatta a monte.
- Scelta della modalità di calcolo dei coefficienti di peso.
Una scelta immediata e molto usata è quella di usare come features le parole presenti nel documento.
Il calcolo del peso associato ad un termine in un documento (o in una categoria) è uno dei punti cruciali della rappresentazione di un testo fatta mediante spazio vettoriale. La tabella di figura 3 rappresenta un testo mediante uno spazio vettoriale
Figura 3 – Tabella con la rappresentazione di un testo mediante spazio vettoriale
(termine i-esimo, documento j-esimo, peso associato al termine i nel documento j).
I termini devono garantire il potere discriminante necessario alla giusta categorizzazione dei documenti che li contengono, e quindi la scelta del loro peso deve tener conto di alcune linee guida:
- maggiore è il numero di occorrenze in un documento, tanto più tale termine va a caratterizzare l’argomento trattato nel documento stesso;
- un termine che compare nella quasi totalità dei documenti con un numero di occorrenze molto alto non porta un apprezzabile contenuto informativo per la caratterizzazione dell’argomento di un particolare documento.
Conclusioni
In questo primo articolo abbiamo definito che cos’è un ontologia in termini informatici e ne abbiamo descritto il processo di creazione. Infine sono state analizzate alcune tecniche di text-analysis come passo propedeutico al mapping di ontologie.
Riferimenti
[1] T. Berners-Lee, “Interpretation and Semantics on the Semantic Web”, World Wide Web Consortium Archive
http://www.w3.org/DesignIssues/Interpretation.html
[2] Claudio Biancalana – Alessandro Micarelli, “Text Categorization in non-Linear semantic space”, Proceedings of the 10th Conference of the Italian Association for Artificial Intelligence (AI*IA 2007), Rome 2007, Lecture notes in Computer Science series, Springer Verlag.
[3] Fabrizio Sebastiani, “Machine learning in automated text categorization”, ACM Computing Surveys, Vol. 34, No. 1, pp 1-47, March 2002.
[4] Uschold M. – Gruninger M, “Ontologies: Principles, Methods and Applications”, Knowledge Engineering Review; Volume 11 Number 2, 1996
[5] A. Micarelli – F. Gasparetti – C. Biancalana, “Intelligent Search on the Internet”, in O. Stock – M. Schaerf (eds.), “Reasoning, Action and Interaction in AI Theories and Systems”, LNAI Festschrift Volume 4155 of the Lecture Notes in Computer Science series, Springer, Berlin, 2006.
Francesco Saverio Profiti ha conseguito la laurea in Ingegneria Informatica presso l‘Università degli Studi Roma Tre nel 2003. Durante la sua carriera lavorativa si è occupato, prima da programmatore, poi da analista e infine da architetto di applicazioni di classe enterprise sia in ambiente Java EE sia in ambiente .NET. Si è occupato inoltre di applicazioni basate su tecnologia SMS e VoIP. Ha ricoperto per la Open Informatica s.r.l. il ruolo di Responsabile della Qualità nell
Claudio Biancalana è dottorando in Ingegneria Informatica presso il Dipartimento di Informatica e Automazione dell‘Università degli Studi Roma Tre. L‘attività di ricerca scientifica svolta finora ha riguardato l‘Intelligenza Artificiale e la Categorizzazione Automatica di Testi (ATC, Automated Text Categorization). Dal 2003 collabora attivamente presso il laboratorio di Intelligenza Artificiale dell‘Università degli Studi Roma Tre per progetti di ricerca europei e internazionali.
Dal 2003 si occupa di analisi e sviluppo di applicazioni Enterprise in ambiente Java EE e attualmente cura gli aspetti architetturali per progetti rivolti al mercato della pubblica amministrazione.