Sistemas Inteligentes Aula: Conhecimento e Ontologias – Uma breve introdução Fred Freitas, Patrícia Tedesco e Flávia Barros 1 Ao Final desta Aula a gente deve.... Entender o que é uma ontologia e seus componentes Distinguir os vários Tipos de Ontologias Conhecer alguns usos das Ontologias Entender como projetar/desenvolver uma ontologia 2 Um pouco sobre Engenharia do Conhecimento ANTES DE COMEÇAR... 3 Um Pouco de História... No início, a IA estava preocupada em desenvolver ◦ Formalismos para representar conhecimento ◦ Mecanismos de Inferência ◦ Formas de operacionalizar os SBCs Mas... ◦ Como garantir a escalabilidade desses sistemas? 4 Engenharia do Conhecimento - EC Área de pesquisa preocupada com ◦ desenvolver Métodos, Linguagens e Ferramentas ◦ adequados para o desenvolvimento de sistemas BC Foco principal: ◦ como adquirir e analisar conhecimento ◦ como validar e manter uma Base de Conhecimento Construção da Base de Conhecimento ◦ Processo de acumular, transferir e transformar alguma fonte de conhecimento para um computador 5 EC - Uma Área Multidisciplinar! 6 EC - Definições Engenheiro de conhecimento ◦ Guia a aquisição, a criação da representação do conhecimento especializado, a implementação e o refinamento do SBC Expertise ◦ conhecimento especializado adquirido por longo treinamento, leitura e experiência Especialista (Expert ) ◦ Quem possui conhecimento especializado , experiência e métodos, e a habilidade de aplicá-los para dar “conselhos” e resolver problemas 7 DESENVOLVIMENTO DE SBCS 8 Etapas do desenvolvimento de SBCs 1. Planejamento do sistema ◦ ◦ ◦ Identificação do Domínio Seleção da equipe Seleção da ferramenta de desenvolvimento 2. Aquisição (elicitação) do conhecimento ◦ ◦ Identificação do conhecimento a adquirir Registro do conhecimento em linguagem natural ou usando alguma notação gráfica 9 Etapas do desenvolvimento de SBCs 3. Formalização da BC ◦ Nível semi-formal via ◦ Notação textual estruturada padrão (XML) Notação gráfica padrão (UML) Ontologias Objetivo: validação com especialista Nível formal Via linguagens formais (e.g., LPO) Notação sem ambigüidade Objetivo: verificação de consistência 10 Etapas do desenvolvimento de SBCs 4. Implementação da BC ◦ ◦ ◦ Criação de uma representação do conhecimento usando linguagens de programação Implementação da Interface Teste de protótipo 5.Validação e Refinamento ◦ ◦ Validação Refinamento 11 Etapas do desenvolvimento de SBCs exemplos Conhecimento em linguagem natural ◦ A ponte Princesa Isabel liga a Rua da Imperatriz à Rua Nova Formalização ◦ liga(Ponte-PI,RI,RN) Implementação ◦ estruturas de dados representando as sentenças do nível formal e.g., listas, tabelas, objetos, etc. 12 Etapas de desenvolvimento de SBCs Nível de Conhecimento Nível Lógico Nível de Implementação AQUISIÇÃO FORMALIZAÇÃO IMPLEMENTAÇÃO REFINAMENTO Linguagem natural Linguagens de representação do conhecimento Linguagens de programação BC 13 Etapas de desenvolvimento de SBCs Veremos a seguir ◦ Aquisição do conhecimento ◦ Formalização do conhecimento Ontologias Nível “semi”-formal ◦ Construção da BC – aulas passadas Regras de produção, objetos com regras, Prolog... 14 O gargalo na construção dos SBCs AQUISIÇÃO DO CONHECIMENTO 15 Como adquirir conhecimento? A grande escolha Aprendizagem de máquina ◦ se existe conhecimento em extensão disponível, é mais rápido e simples “aprender” ◦ várias técnicas Redes neurais, Aprendizagem simbólica, Algoritmos genéticos Engenharia do Conhecimento ◦ se o conhecimento pode ser facilmente explicitado, ou não se tem escolha ◦ mais trabalhoso, embora preciso 16 Aquisição do Conhecimento Principais fases da aquisição ◦ Identificar características do problema Do domínio da aplicação ◦ Isolar e representar os conceitos principais e suas relações através de uma Ontologia, por exemplo ◦ Identificar inferências sobre estes conceitos O conhecimento pode originar-se de várias fontes: ◦ especialistas, livros e documentos, filmes, etc. 17 Gargalo na Aquisição do Conhecimento A maior parte do conhecimento está na cabeça dos especialistas... Especialistas ◦ têm muito conhecimento empírico Difícil de ser capturado e representado formalmente ◦ ◦ ◦ ◦ são “caros” não sabem de tudo! têm dificuldade de verbalizar sob pressão usam vocabulário próprio (jargão) 18 Gargalo na Aquisição do Conhecimento Dificuldade de introspecção ◦ O especialista quase nunca está ciente de como usa o conhecimento que possui Pode não saber porque escolheu uma estratégia ◦ Algumas soluções são intuitivas ou “compiladas” O conhecimento expresso pode ser incompleto ◦ O especialista pode não lembrar em detalhes qual o conhecimento utilizado para resolver um problema ◦ O especialista pode pular pontos importantes 19 Gargalo na Aquisição de conhecimento O conhecimento expresso pode ser incorreto ou inconsistente ◦ Afinal, quem garante a qualidade da solução, já que ela é “coisa de especialista”? O conhecimento expresso pode ser irrelevante ◦ quantidades enormes de informações são coletadas, para serem organizadas ou desprezadas... ◦ desafio: evitar informação irrelevante sem bloquear a descoberta de conceitos importantes 20 Como minimizar o gargalo da Aquisição? Automação! Métodos de aquisição ◦ Três categorias Manual Semi-automático Automático 21 Método de Aquisição Manual Entrevistas ◦ estruturadas ou não estruturadas Métodos de “Rastreamento” ◦ análise de protocolos e observação especialista Engenheiro de conhecimento documentação codificação Base de conhecimento 22 Aquisição Manual Problemas: ◦ ◦ ◦ ◦ Toma muito tempo Requer a presença do especialista Difícil de gerenciar Existem conhecimentos de vários tipos teórico, procedural, etc. Quando usar? ◦ identificação do conhecimento: brainstorming, entrevistas não estruturadas ◦ especificação do conhecimento: self report ◦ refino do conhecimento: entrevista estruturada 23 Métodos de Aquisição Semi-automática Baseado em ferramentas de ◦ Ajuda ao especialista grid repertory analysis ◦ Ajuda ao engenheiro de conhecimento Editores de texto, documentadores, etc. especialista Ferramentas interativas de entrevista Base de conhecimento Engenheiro de conhecimento 24 Métodos de Aquisição Automática Aprendizado de máquina Casos e exemplos Indução automática Regras 25 Formalização do conhecimento Representação semi-formal = Ontologias 26 Conhecimento Há diferentes “tipos” de conhecimento ◦ Que devem ser representados separadamente! Conhecimento ontológico, conhecimento do domínio, ... ◦ Qual a forma de representação adequada? Ontologias, Bases de conhecimento,... ◦ Como elicitar os diferentes “conhecimentos”? Há diferentes tipos de especialistas e de expertise Há vários usos para conhecimentos semelhantes ◦ Reusabilidade é a chave! 27 Reuso de conhecimento Reuso de conhecimento é imperativo: ◦ A Base de Conhecimento é a parte mais cara de um SBC O resto já está “semi-pronto”... Necessidade de reuso em domínios com grande número de conceitos e relações ◦ ex: Medicina Observação: ◦ queremos reusar o conhecimento que já está representado usando algum formalismo para representação do conhecimento 28 Dificuldades com Reuso Utilização de formalismos diferentes dificulta o reuso ◦ Falta de interoperabilidade entre formalismos, mesmo entre os orientados a domínio Contudo, formalismo diferentes apresentam certa similaridade expressiva ◦ Como ter reuso no nível de conhecimento? ◦ Como abstrair formalismos? Solução visando reuso no nível do conhecimento: Ontologias! 29 Formalismos de Representação de Conhecimento Objetivo: ◦ Prover teorias e sistemas para expressar e manipular conhecimento declarativo ◦ de forma tratável e eficiente computacionalmente Formalismos orientados a predicados ◦ regras e programação em lógica Foco no processo, funcionamento Formalismos orientados a domínios ◦ Ontologias, sistemas de frames, redes semânticas... Classes, relações e restrições Facilitam a estruturação de conhecimento disponível sobre um domínio de aplicação 30 Sistemas baseados em conhecimento Principais sistemas de raciocínio declarativos/dedutivos lógica regras Provadores de teorema objetos híbridos Sistemas Redes Semânticas Sistemas Frames Sistemas de Lógica descritiva Sistemas OO, Ontologias Programação em lógica Sistemas de produção Sistemas de manutenção da verdade regras+objetos lógica+objetos lógica+objetos+funções 31 ALGUMAS DEFINIÇÕES... 32 Ontologias Termo oriundo da filosofia ◦ Ramo da filosofia que lida com a natureza e organização da realidade Categorias de Aristóteles ◦ taxonomia para os objetos do mundo Em Ciência da computação e Inteligência artificial, ganha um senso mais prático ◦ Organização do conhecimento manipulável 33 Ontologias Em CC e IA ◦ Corpo de conhecimento declarativo sobre um dado domínio, assunto ou área de conhecimento Na prática, são ◦ hierarquias de conceitos (classes) ◦ com suas relações, restrições, axiomas e terminologia associada Servem para estruturar e compartilhar o conhecimento disponível sobre um dado domínio 34 Ontologias Exemplo: publicações e eventos científicos 35 Relacionamentos na Ontologia sobre pesquisa científica 36 Definições de Ontologia (cont.) “Uma ontologia é uma especificação explícita e formal de uma conceitualização compartilhada” [Studer et al 98] ◦ Especificação explícita: definições declarativas de conceitos, instâncias, relações, restrições e axiomas ◦ Formal: declarativamente definida, sendo compreensível e manipulável para agentes e sistemas ◦ Conceitualização: modelo abstrato de uma área de conhecimento ou de um universo limitado de discurso ◦ Compartilhada: conhecimento consensual, seja uma terminologia comum da área modelada, ou acordada entre os desenvolvedores dos agentes que se comunicam 37 Afinal, pra que servem as ontologias? Servem para estruturar e compartilhar o conhecimento disponível sobre um dado domínio: ◦ Para compartilhar conhecimento comum – conceitos e vocabulário Entre pessoas Entre agentes de software ◦ Para permitir a reutilização do conhecimento Evitando a “reinvenção da roda” Introduzindo padrões que permitam a interoperabilidade entre aplicações 38 Relembrando... Etapas de desenvolvimento dos SBCs Ontologias ◦ Materialização do nível de conhecimento em um sistema BC ◦ Muito útil na fase de Aquisição do conhecimento 39 Etapas de desenvolvimento de SBCs Nível de Conhecimento Nível Lógico Nível de Implementação AQUISIÇÃO FORMALIZAÇÃO IMPLEMENTAÇÃO REFINAMENTO Linguagem natural Linguagens de representação do conhecimento Linguagens de programação BC 40 ELEMENTOS DE UMA ONTOLOGIA 41 Elementos de uma Ontologia Conjunto de conceitos ◦ Entidades ◦ Relações (que podem ser hierárquicas ou não) ◦ Instâncias de Conceitos Restrições Regras 42 Conjunto de Conceitos Entidades ◦ Cada entidade é definida por conjunto de pares atributo-valor ◦ Correspondem: às classes dos modelos orientado a objetos às entidades do modelo relacional aos termos do modelo lógico 43 Conjunto de Conceitos Relações ◦ Podem ser hierárquicas ou não ◦ correspondem: às associações, agregações e atributos dos modelos OO cujos valores são objetos às relações do modelo relacional aos predicados do modelo lógico 44 Conjunto de Conceitos Instâncias de Conceitos ◦ Definição de entidades e relações específicas (indivíduos) ◦ Correspondem: aos fatos de sistemas especialistas e programação em lógica aos objetos dos modelos OO aos dados dos BD 45 Restrições Sobre valores possíveis dos atributos dos conceitos Correspondem: ◦ às assinaturas de classes em modelos OO ◦ aos axiomas universalmente quantificados em modelos lógicos ◦ às restrições de integridade nos esquema de BD 46 Regras Sobre atributos de (conjuntos de) conceitos Permitem inferência automática da existência de instâncias de conceitos a partir da existência de outras instâncias Correspondem: ◦ às regras dos sistemas especialistas e programação em lógica ◦ aos métodos dos modelos OO ◦ às visões em BD 47 Onde Aplicar Ontologias? Recuperação de informações, Sistemas de Integração de Informação, Gestão de conhecimento, Processamento da linguagem natural, Comércio eletrônico, Sistemas multiagentes... 48 Um Exemplo: Integração de dados 49 Tipos de Ontologias Ontologias de topo (upper ontologies) Ontologias centrais ou genéricas de domínio (core ontologies) Ontologias de Aplicação (específicas) 50 Ontologias de topo (upper ontologies) Modelos dos objetos comuns que são geralmente aplicáveis a uma grande variedade de ontologias de domínio. Tipicamente contém um glossário central que permite descrever termos em vários domínios. Exemplos de upper ontologies padrão são: Dublin Core, GFO, OpenCyc/ResearchCyc, SUMO e DOLCE. 51 Ontologias centrais ou genéricas de domínio (core ontologies) Definem os ramos de estudo de uma área e/ou conceitos mais genéricos e abstratos desta área Serve de base para a construção de ontologias de ramos mais específicos de um domínio 52 Ontologias centrais ou genéricas de domínio (core ontologies) Ex: a ontologia central de direito ◦ [Valente & Breuker 96] ◦ Conhecimentos meta-legal, definicional, causal, normativo, de responsabilidade, reativos, criativo, de agências legais, reação legal, comportamentos permitidos, etc ◦ Servirá para criar ontologias de direito tributário, de família e outras... 53 Ontologias de Aplicação Ontologias de ramos mais específicos de um domínio Procuram solucionar um problema específico de um domínio ◦ Utilizam termos de uma ontologia de domínio ◦ Ex: Ontologia para identificar doenças do coração, a partir de uma ontologia de domínio de cardiologia 54 Usos de ontologias Realizar inferência Servir como vocabulário compartilhado numa comunicação entre agentes inteligentes Codificar conhecimento interoperável ◦ entre linguagens (F-logic, Prolog, Jess) ◦ entre formalismos de representação de conhecimento (frames, redes semânticas, lógica de descrições) 55 COMO PROJETAR UMA ONTOLOGIA 56 Mas, como projetar a minha ontologia? Processo iterativo – SEMPRE!! Não existe uma única maneira correta de modelar um domínio ◦ depende da aplicação, e das extensões que você prevê Sugestão: ◦ Sempre discutir a estrutura com o especialista, já que a ontologia deve refletir um pedaço da realidade Classes = nomes ◦ devem estar próximas ao conceito de um objeto físico ou lógico Relações = verbos 57 Desenvolvimento de Ontologias [Noy &McGuiness 2001] 6. Determinar o Domínio e o Escopo da Ontologia Reutilizar Ontologias Existentes Levantar termos importantes Definir classes e sua hierarquia Definir propriedades das classes Restrições das Propriedades 7. Criação de 1. 2. 3. 4. 5. instâncias 58 1. Determinar o Domínio e o Escopo da Ontologia Qual o domínio que será coberto ? ◦ Representação de vinhos e comidas Para quê a ontologia será utilizada ? ◦ Sugerir boas combinações de vinhos e comidas 59 1. Determinar o Domínio e o Escopo da Ontologia A ontologia deverá fornecer respostas para que perguntas ? ◦ “Cabernet Sauvignon” é adequado com frutos do mar ? ◦ Qual a melhor opção para acompanhar carnes grelhadas ? ◦ Que características de um vinho devem ser analisadas para associá-lo com determinados pratos. ◦ Etc... Estas perguntas vão ajudar a gente a definir o nível de detalhe da ontologia 60 1. Determinar o Domínio e o Escopo da Ontologia Quem irá utilizar e manter a ontologia ? ◦ Clientes de um restaurante Informações de preço deve ser utilizadas ◦ Leitores de revistas especializadas Informações de atacadistas, mais detalhes das uvas e safras ◦ Clientes em lojas Via terminal? Então informações sobre termos alternativos utilizados podem ser interessantes 61 2. Reutilizar Ontologias Existentes – se possível! Verificar se alguém já criou a ontologia É possível refinar ou estender ontologias existentes Muitas fontes disponíveis na Internet – vamos perguntar ao Google? ◦ Noy & McGuiness elencam várias bibliotecas 62 3. Levantar termos importantes Quais são os termos que serão abordados na ontologia ? Quais propriedades esses termos possuem ? Enumerar todos esses termos: Não se preocupe com sobreposição, relações... Neste momento! ◦ ◦ ◦ ◦ ◦ ◦ Vinho; Tipo de Uva Fabricante Região de origem Coloração (branco, tinto, rosé) Tipo de comidas (peixes, grelhados, massas) 63 4. Definir classes e sua hierarquia Abordagem “Top-Down”, “Bottom-up” ou combinadas. Termos do passo 03, selecionar somente aqueles que representam objetos. Desconsiderar propriedades Pode haver Herança múltipla Esboçar hierarquia Classes disjuntas (Vinho Branco e Tinto) 64 4. Definir classes e sua hierarquia Alguns cuidados com a hierarquia de classes: ◦ Lembrar sempre que hierarquias são Relações “is-a” (se A é subclasse de B, então uma instância de A também será uma instância de B) ◦ Incluir classes singulares e coletivas (“vinho” como subclasse de “vinhos”) ◦ Transitividade (A subclasse de B e B subclasse de C, então A subclasse de C) 65 4. Definir classes e sua hierarquia Mais cuidados com a hierarquia de classes: ◦ Distinguir entre classes e seu nomes (sinônimos representam a mesma classe) ◦ Evitar ciclos (A subclasse de B e B subclasse de A) ◦ Classes irmãs devem estar no mesmo nível (Chardonnay e Vinhos Brancos não devem estar no mesmo nível, pois não são irmãs) 66 Definir classes e sua hierarquia Como detectar erros na hierarquia de classes (cont.): ◦ Classes com somente uma subclasse pode ser um problema ◦ Classes com muitas subclasses também 67 4. Definir classes e sua hierarquia Quando introduzir uma nova classe ? ◦ Propriedades diferentes ◦ Restrições diferentes ◦ Participa em relações diferentes Nova classe ou nova propriedade ? ◦ i.e. Tipo de Vinho ◦ Se tem novas relações, representa outros objetos – nova classe Instância ou classe ? ◦ Depende da aplicação ◦ Tipo de vinho (“Sterling Vineyards Merlot”) pode ser instância ou classe. Qual o escopo ? ◦ Não especializar além do que sua aplicação precisa 68 5. Definir as propriedades das classes – também conhecidas por “slots” A partir da lista de termos do passo 03, selecionar aqueles que representam propriedades. Propriedades (intrínsecas, extrínsecas, partes e relações com outros indivíduos) Propriedades são adicionadas à classe mais genérica ◦ As subclasses herdam as propriedades! 69 6. Definir as restrições das propriedades Tipo da propriedade (String, número, boleano, instâncias, etc...) Valores permitidos Cardinalidade Range (classes permitidas na propriedade) Domínio (classes em que a propriedade está presente) 70 7. Ufaaaa... Só falta agora criar as instâncias! É necessário ◦ ◦ escolher uma classe, criar uma instância e preencher os valores das propriedades Base de Conhecimento 71 Cuidado com os nomes... Evitar erros e confusões Maiúsculas ou Minúsculas ? ◦ Classes (maiúsculas) ◦ Propriedades (minúsculas) Plural ou singular ? ◦ Geralmente classes são singular Padronizar prefixos e sufixos ◦ “has-” (has-maker) e “-of” (producer-of) Evitar abreviações 72 Usos e Benefícios das Ontologias Incorporação de conhecimento é facilitada, inclusive de linguagem natural Permitir reuso massivo de conhecimento (de representações) entre formalismos de representação diferentes Codificar conhecimento interoperável ◦ entre linguagens (F-logic, Prolog, Jess) ◦ entre formalismos de representação de conhecimento (frames, redes semânticas, lógica de descrições) 73 Próximas aulas Drools e Ferramenta Protégé Lab G5 74