UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CAMPUS DE FOZ DO IGUAÇU PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE SISTEMAS DINÂMICOS E ENERGÉTICOS DISSERTAÇÃO DE MESTRADO AUTOMATIZAÇÃO DO PROCESSO DE MAPEAMENTO DE LAUDOS MÉDICOS PARA UMA REPRESENTAÇÃO ESTRUTURADA JEFFERSON TALES OLIVA FOZ DO IGUAÇU 2014 Jefferson Tales Oliva Automatização do Processo de Mapeamento de Laudos Médicos para uma Representação Estruturada Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Engenharia de Sistemas Dinâmicos e Energéticos como parte dos requisitos para obtenção do título de Mestre em Engenharia de Sistemas Dinâmicos e Energéticos. Área de concentração: Sistemas Dinâmicos e Energéticos. Orientador: Huei Diana Lee Co-orientador: Wu Feng Chung Co-orientador: Cláudio Saddy Rodrigues Coy Foz do Iguaçu 2014 ii Automatização do Processo de Mapeamento de Laudos Médicos para uma Representação Estruturada Jefferson Tales Oliva Esta Dissertação de Mestrado foi apresentada ao Programa de Pós-Graduação em Engenharia de Sistemas Dinâmicos e Energéticos e aprovada pela Banca Examinadora: Data da defesa pública: 28/04/2014. Profa . Dra . Huei Diana Lee - (Orientador) Universidade Estadual do Oeste do Paraná - UNIOESTE Prof. Dr. Wu Feng Chung - (Co-orientador) Universidade Estadual do Oeste do Paraná - UNIOESTE Prof. Dr. João Bosco Mangueira Sobral Universidade Federal de Santa Catarina - UFSC Prof. Dr. Renato Bobsin Machado Universidade Estadual do Oeste do Paraná - UNIOESTE iv Resumo Na área da saúde, grandes quantidades de dados provenientes de diversas fontes, como exames clínicos e de procedimentos, são armazenadas em bases de dados de hospitais e clínicas médicas. As características observadas nesses exames são descritas em laudos médicos textuais. Esses laudos constituem ferramenta indispensável para profissionais de qualquer especialidade médica para a manutenção do histórico clínico de pacientes. Os dados contidos nesses laudos podem ser analisados, de modo mais completo, através de recursos computacionais, como o processo de Mineração de Dados apoiado por técnicas de Inteligência Computacional. No entanto, para a aplicação desse processo, é imprescindível que os dados estejam representados em formato estruturado, como as Bases de Dados Computacionais. Nesse sentido, no Laboratório de Bioinformática da Universidade Estadual do Paraná em parceria com o Serviço de Coloproctologia da Faculdade de Ciências Médicas da Universidade Estadual de Campinas foi desenvolvido o Processo de Mapeamento de Laudos Médicos (PMLM) por ontologias com o propósito de prover apoio para a transformação de laudos médicos textuais não estruturados em uma representação estruturada. Entretanto, as técnicas empregadas no PMLM devem ser executadas separadamente e manualmente por meio de instruções computacionais, dificultando o seu uso por profissionais que não sejam da área computacional. Assim, o objetivo deste trabalho consiste em automatizar e otimizar o PMLM por ontologias mediante a integração de suas técnicas de processamento de textos em uma ferramenta computacional. Para isso, foi construído um Sistema Computacional Colaborativo (SCC) utilizando o modelo de desenvolvimento por prototipagem, que é aplicado de cinco etapas: comunicação; plano rápido; modelagem; construção do protótipo; e avaliação e feedback. Esse sistema computacional foi avaliado em conjunto com especialistas do domínio, os quais constataram que o SCC atende às especificações determinadas e apresenta-se de grande valia para a extração e o estudo de padrões que podem ser encontrados em textos médicos. O SCC foi também submetido a uma avaliação experimental, por meio da aplicação do PMLM automatizado em um conjunto de 100 laudos médicos textuais artificiais que simulam descrições de exames de Endoscopia Digestiva Alta (EDA), apresentando bons resultados. Desse modo, com o PMLM por ontologias automatizado, implementado no SCC, é possível a realização de estudos mais completos e detalhados, contribuindo com a geração de novos conhecimentos. Palavras-chave: Laudo Médico, Ontologia, Engenharia de Software, Endoscopia Digestiva Alta, Sistema Computacional Colaborativo. v Abstract In the health area, large amounts of data from different sources, such as clinical examinations and procedures, are stored in hospitals and medical clinics databases. Characteristics observed in these examinations and procedures are described in textual medical reports. These findings are indispensable for professionals of any medical specialty, as they are used to maintain the clinical history of the patients. The data contained in these reports can be analyzed, in a more complete manner, through the use of computational resources, such as the Data Mining process supported by computational intelligence techniques. However, for the application of such process, it is essential that the data is represented in a structured format, as Computational Data Bases. In this sense, the Laboratory of Bioinformatics from the West Paraná State University in partnership with the Coloproctology Service of the Faculty of Medical Sciences from the State University of Campinas, developed the Mapping Medical Digital Findings Process (PMLM) using ontologies with the aim of providing support for the transformation of unstructured textual medical reports into a structured representation. Nevertheless, the techniques employed in PMLM must be performed manually and separately by means of computer instructions, hampering its use by professionals who are not from the computational area. The objective of this work is to automate and optimize PMLM using ontologies by integrating its preprocessing methods in a computational tool. For this purpose, a Collaborative Computer System (SCC) was built using the prototyping development model, which is applied in five stages: communication, fast plan, modeling, prototype construction, and evaluation and feedback. The developed computational system was evaluated in conjunction with domain experts, confirming that SCC meets the required specifications and presents a great value for the extraction and the study of patterns that may be discovered in medical findings. SCC was also evaluated experimentally, using a set of 100 artificial medical reports that simulate the Upper Digestive Endoscopy (EDA), showing good results. Thus, the automated PMLM using ontologies, implemented in the SCC, enables the performance of more complete and detailed studies, contributing to the generation of new knowledge. Keywords: Medical Findings, Ontology, Software Engineering, Upper Digestive Endoscopy, Collaborative Computational System. vi vii Aos meus pais, Carmem e Ilia. Aos meus orientadores, Huei e Wu. À minha noiva e futura esposa, Danieli. Ao meu irmão (in memoriam), Ivo. viii Agradecimentos Ao longo dessa árdua caminhada, várias pessoas, de alguma forma, fizeram parte desse trajeto e proporcionaram momentos de alegria, bem como ajudaram a superar os momentos difíceis e contribuíam com a minha formação pessoal e profissional. Nesse sentido, é difícil eu expressar por meio de palavras a minha gratidão a essas pessoas que ajudaram diretamente e indiretamente. Desse modo, a seguir são descritos meus sinceros agradecimentos e reconhecimento pelas contribuições recebidas nesta minha fase de vida e acadêmica. À toda minha família, pelo incentivo na minha trajetória para a minha formação. Aos meus amados pais, Carmem e Ilia, pelo amor, dedicação e educação incondicionais. Pelo apoio e incentivo para lutar pela realização de todos os meus sonhos pessoais e profissionais. Por sempre acreditarem na minha capacidade em superar todos os obstáculos na vida. Ao meu irmão Ivo (in memoriam), pelo carinho, incentivo e sempre estar preocupado com o meu bem estar. Também, por termos compartilhados vários bons momentos juntos. Apesar de não estar entre nós, sempre carregarei comigo as nossas boas lembranças como motivação e amenização da saudade e da dor de sua perda. Às minhas avós, Benedita e Vitalina pelos "mimos", carinho e apoio para a realização dos meus objetivos de vida. À minha amada noiva e futura esposa, Danieli, pela compreensão dos vários momentos que não podemos passar juntos nessa trajetória acadêmica, bem como pelo apoio, incentivo e amor incondicional. Também gostaria de agradecê-la não apenas por compartilharmos os momentos felizes, mas também por ter me apoiado nos momentos mais difíceis. À minha futura nova família, Armelinda, Pedro e Tatiana pelo apoio e compreensão dos momentos em que estive ausente. Aos meus mestres e orientadores, os professores Huei e Wu, pelos valiosos ensinamentos tanto na parte técnica quanto na parte pessoal, os quais levarei pelo resto da minha vida. Por incontáveis vezes em que assumiram o papel dos pais para nos educarem. Por abdicar de muitas noites de descanso para trabalharem com a finalidade de criar oportunidades para os alunos do LABI. Pela nossa amizade e paciência em nos orientar em momentos de turbulência. Aos professores e amigos, André, Andrés, Joylan, Renato e Richardson, pela amizade e ensinamentos compartilhados. ix x Aos meus amigos do LABI, Altamira, Antônio, Bianca, Caio, Chris, Dabna, Everton, Felipe, Fonteque, Jediel, Jorge, Leandro, Paulo, Maurício, Neimar, Newton, Rafaela, Ricardo, Vanize, Willian e Wilson, pela amizade, respeito, apoio e sugestões nas minhas decisões. Ao meu amigo Narco, pela amizade e os bons momentos compartilhados nesses quase três anos vivenciados na mesma casa. Pela nossa invenção do prato Macalango ("Miojo" com farinha e molho de pimenta habanero). Aos meus amigos da Pós-graduação, Katiani, Marcos Ricardo, Mariana, Rodrigo, Willian, Jhonny (Dionísio do Sertão), pela amizade e os momentos inesquecíveis que vivenciamos nessa trajetória. Aos meus amigos de infância, Alex, André, Eduardo (Dudu), Guilherme (Totão), Gustavo (Legal), Helton Alegra (Heltroo), Helton (Tibira), Luiz Fernando (Nando), Renam, Tiago, Vitor Angeli e Vitor Hugo, por essa amizade duradoura e compreensão dos momentos de minha ausência. Aos demais amigos, pela amizade e contribuição de forma direta e indireta na minha formação. Aos profissionais da área médica do Serviço de Coloproctologia da Faculdade de Ciências Médicas da UNICAMP que confeccionaram laudos textuais artificiais de exames de endoscopia digestiva alta. À Fabiana, secretária do PGESDE, que não mediu esforços para nos apoiar e ajudar em diversas situações que envolvam a pós-graduação. Aos professores do PGESDE e aos funcionários da UNIOESTE. À UNIOESTE, pelo apoio financeiro em despesas com viagens para a apresentação de trabalhos científicos em congressos. À CAPES (Coordenação de Aperfeiçoamento de Pessoal de Nível Superior), pelo apoio por intermédio da concessão de bolsas de pós-graduação. Todas as demais pessoas que, de alguma forma, contribuíram com desenvolvimento deste trabalho. “O mundo é perigoso não por causa daqueles que fazem o mal, mas por causa daqueles que vêem e deixam o mal ser feito.” Albert Einstein xi xii Sumário Lista de Figuras xvi Lista de Tabelas xix Lista de Símbolos xxi 1 2 Introdução 1 1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Premissas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Hipótese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Fundamentos de Ontologia 7 2.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Definição de Ontologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Aplicações da Ontologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Tipos de Ontologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Construção de Ontologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.6 Linguagens de Representação de Ontologias . . . . . . . . . . . . . . . . . . . 12 2.6.1 Knowledge Interchange Format . . . . . . . . . . . . . . . . . . . . . 12 2.6.2 Ontolingua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.6.3 Resource Description Framework . . . . . . . . . . . . . . . . . . . . 14 2.6.4 Ontology Inference Layer . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.5 DAML + OIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 xiii xiv 2.6.6 2.7 2.8 3 4 Ontology Web Language . . . . . . . . . . . . . . . . . . . . . . . . . 17 Ferramentas para Representação de Ontologias . . . . . . . . . . . . . . . . . 21 2.7.1 Chimaera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7.2 OilED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7.3 Protégé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.7.4 Servidor Ontolingua . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Processo de Mapeamento de Laudos Médicos utilizando Ontologias 25 3.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 Mapeamento de Laudos Médicos . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Primeira Fase do PMLM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.1 Construção do Conjunto de Frases Únicas . . . . . . . . . . . . . . . . 30 3.3.2 Normalização do Conjunto de Frases Únicas . . . . . . . . . . . . . . 30 3.3.3 Construção do Arquivo de Padronização . . . . . . . . . . . . . . . . . 31 3.3.4 Remoção de Stopwords . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.5 Aplicação de Stemming . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.6 Aplicação de Lematização . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3.7 Definição dos Atributos da Tabela Atributo-Valor e da Ontologia . . . . 37 3.4 Segunda Fase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Desenvolvimento de Sistemas Computacionais 43 4.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2 Processo de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.3 Levantamento de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4 Projeto de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.5 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.6 Testes de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 xv 4.7 5 6 7 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Ferramentas e Tecnologias 55 5.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.2 Linguagem de Programação Java . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.3 Linguagem de Programação Ruby . . . . . . . . . . . . . . . . . . . . . . . . 57 5.4 Framework Ruby on Rails . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.5 Ambiente de Desenvolvimento NetBeans . . . . . . . . . . . . . . . . . . . . 59 5.6 Linguagem de Programação Perl . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.7 Linguagem de Marcação HTML . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.8 Linguagem de Marcação XML . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.9 Linguagem CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.10 Linguagem de Programação Javascript . . . . . . . . . . . . . . . . . . . . . . 67 5.11 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Processo de Desenvolvimento do Sistema Computacional Colaborativo 71 6.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.2 Etapa de Comunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3 Etapa de Plano Rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 6.4 Etapa de Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.5 Etapa de Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.6 Apresentação do Sistema Computacional Colaborativo Desenvolvido . . . . . . 80 6.7 Etapa de Avaliação e Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6.8 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Estudo de Caso 95 7.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 7.2 Avaliação Experimental do SCC . . . . . . . . . . . . . . . . . . . . . . . . . 96 7.3 Construção do Arquivo de Padronização . . . . . . . . . . . . . . . . . . . . . 98 xvi 8 9 7.4 Elaboração da Stoplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5 Definição de Atributos da Base de Dados e de Regras de Mapeamento . . . . . 100 7.6 Ontologia Construída no Estudo de Caso . . . . . . . . . . . . . . . . . . . . . 102 7.7 Aplicação do Método Mapeamento por Ontologias em Laudos Médicos Artificiais108 7.8 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Resultados e Discussão 99 111 8.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.2 Aplicação do PMLM em Trabalhos Anteriores . . . . . . . . . . . . . . . . . . 111 8.3 Construção do Sistema Computacional Colaborativo . . . . . . . . . . . . . . 112 8.4 Avaliação Experimental em Laudos Médicos Artificiais . . . . . . . . . . . . . 116 8.5 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Conclusão 125 9.1 Principais Desfechos deste Trabalho . . . . . . . . . . . . . . . . . . . . . . . 126 9.2 Limitações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 9.3 Principais Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 9.4 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Referências Bibliográficas 132 A Arquivos Definidos para a Avaliação Experimental do Estudo de Caso 141 A.1 Stoplist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 A.2 Arquivo de Padronização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Lista de Figuras 2.1 Exemplo de definição de classes KIF. . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Exemplo de definição de classes Ontolingua. . . . . . . . . . . . . . . . . . . . 14 2.3 Exemplo de definição de classes RDFS. . . . . . . . . . . . . . . . . . . . . . 15 2.4 Exemplo de definição de classes OIL . . . . . . . . . . . . . . . . . . . . . . . 16 2.5 Exemplo de representação de um conjunto de dados DAML+OIL. . . . . . . . 17 2.6 Exemplo de representação de definição de classes OWL. . . . . . . . . . . . . 19 2.7 Exemplo de uso de propriedade da linguagem OWL. . . . . . . . . . . . . . . 20 3.1 Exemplo de transcrição manual de um laudo textual artificial . . . . . . . . . . 27 3.2 Estrutura do Dicionário de Conhecimento . . . . . . . . . . . . . . . . . . . . 28 3.3 Primeira fase do PMLM baseado em ontologia . . . . . . . . . . . . . . . . . 29 3.4 Processo de identificação de frases únicas . . . . . . . . . . . . . . . . . . . . 30 3.5 Normalização de um exemplo de CFU. . . . . . . . . . . . . . . . . . . . . . . 31 3.6 Exemplo de estrutura do Arquivo de Padronização. . . . . . . . . . . . . . . . 32 3.7 Exemplo de stoplist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.8 Exemplo de aplicação de stemming. . . . . . . . . . . . . . . . . . . . . . . . 35 3.9 Exemplo de conjunto de regras para lematização de verbos. . . . . . . . . . . . 36 3.10 Exemplo de esquema de ontologia para mapeamento de laudos médicos. . . . . 39 3.11 Segunda fase do PMLM baseado em ontologia . . . . . . . . . . . . . . . . . . 40 4.1 Modelo de desenvolvimento por prototipagem . . . . . . . . . . . . . . . . . . 46 4.2 Processo de gerenciamento de projetos . . . . . . . . . . . . . . . . . . . . . . 48 4.3 Etapas do teste de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 xvii xviii 5.1 Padrão MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2 Exemplo de documento HTML e página web equivalente. . . . . . . . . . . . . 64 5.3 Exemplo de estrutura de documento XML . . . . . . . . . . . . . . . . . . . . 65 6.1 Diagrama de casos de uso do SCC. . . . . . . . . . . . . . . . . . . . . . . . . 74 6.2 Modelo de arquitetura do SCC. . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.3 Exemplos de AP antigos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.4 Exemplo de nova estrutura otimizada de AP. . . . . . . . . . . . . . . . . . . . 78 6.5 Tela de acesso ao sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.6 Exemplo de estrutura do arquivo de parâmetros do SCC. . . . . . . . . . . . . 82 6.7 Funcionalidade "Gerenciamento do Conjunto de Laudos Médicos" da primeira fase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.8 Telas de gerenciamento de carregamento de laudos textuais. . . . . . . . . . . . 84 6.9 Funcionalidade "Construção e Gerenciamento do Conjunto de Frases Únicas" da primeira fase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 6.10 Funcionalidade "Definição e Gerenciamento da Lista de Stopwords" da primeira fase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 6.11 Funcionalidade "Construção e Gerenciamento do Arquivo de Padronização" da primeira fase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.12 Tela para definição de uma nova RP. . . . . . . . . . . . . . . . . . . . . . . . 88 6.13 Funcionalidade "Definição e Gerenciamento do Conjunto de Atributos" da primeira fase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.14 Tela para definição de nova RM. . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.15 Funcionalidade "Aplicação de Pré-Processamento" da segunda fase. . . . . . . 91 6.16 Funcionalidade "Realização de Mapeamento" da segunda fase. . . . . . . . . . 92 7.1 Exemplo de laudo textual de exame EDA da região do esôfago. . . . . . . . . . 96 7.2 Fragmento do AP desenvolvido no Estudo de Caso. . . . . . . . . . . . . . . . 98 7.3 Exemplo de transcrição de stopwords. . . . . . . . . . . . . . . . . . . . . . . 100 7.4 Hierarquia de classes da ontologia do SCC . . . . . . . . . . . . . . . . . . . . 103 xix 7.5 Esquema detalhado de ontologia com um exemplo de instância para cada classe 105 7.6 Exemplo de atributo representado na linguagem OWL. . . . . . . . . . . . . . 106 7.7 Exemplo de esquema de ontologia criada automaticamente pelo SCC . . . . . . 107 8.1 Avaliação dos CFU gerados por quantidade de frases. . . . . . . . . . . . . . . 118 8.2 Avaliação dos CFU gerados por quantidade de palavras. . . . . . . . . . . . . . 118 8.3 Avaliação do desempenho em relação ao tempo para o mapeamento manual e automático. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 xx Lista de Tabelas 5.1 Tabela de exemplos de metacaracteres utilizados em ER . . . . . . . . . . . . . 8.1 Resultados da avaliação dos CFU gerados. . . . . . . . . . . . . . . . . . . . . 119 8.2 Quantidade de termos não-processados. . . . . . . . . . . . . . . . . . . . . . 119 8.3 Complexidade dos métodos empregados no PMLM . . . . . . . . . . . . . . . 120 xxi 61 xxii Lista de Siglas AP BD CFU CSS DAML DARPA DC DOM DRY ECMA EDA ER FCM FO HTML IC IDE INPI JDK JRE JSON KIF KISS LABI MD MeSH MJV MVC NLM OIL OWL PERL Arquivo de Padronização Base de Dados Conjuntos de Frases Únicas Cascading Style Sheets DARPA Agent Markup Language US Defense Advanced Research Projects Agency Dicionário do Conhecimento Document Object Model Don’t Repeat Yourself European Computer Manufacturers Association Endoscopia Digestiva Alta Expressões Regulares Faculdade de Ciências Médicas Frame Ontology HyperText Markup Language Inteligência Computacional Integrated Development Environment Instituto Nacional de Propriedade Industrial Java Development Kit Java Runtime Environment Javascript Object Notation Knowledge Interchange Forma Keep It Simple, Stupid Laboratório de Bioinformática Mineração de Dados Medical Subject Headings Máquina Virtual Java Model-View-Controller National Lybrary of Medicine Ontology Inference Layer Ontology Web Language Practical Extraction and Report Language xxiii xxiv PMLM RDF RDFS RDR RL RM RP RoR SC SCAIMEDMobile SCC ’sed’ SGML SNOMEDCT TMTOWTDI UML UMLS UNICAMP UNIOESTE W3C XML Processo de Mapeamento de Laudos Médicos Resource Description Framework Resource Description Framework Schema Ripple Down Rule Regras de Lematização Regra de Mapeamento Regra de Padronização Ruby on Rails Sistema Computacional Sistema Computacional para Análise de Imagens Médicas Sistema Computacional Colaborativo Stream EDitor Standard Generalized Markup Language Systematized Nomenclature of Medicine – Clinical Terms There’s More Than One Way To Do It Unified Modeling Language Unified Medical Language System Universidade Estadual de Campinas Universidade Estadual do Oeste do Paraná Wide World Web Consortium eXtensible Markup Language Capítulo 1 Introdução Com os avanços tecnológicos da área computacional, são armazenadas crescentemente grandes quantidades de dados provenientes de diversas fontes. Na área da saúde, os exames médicos podem ser representados em diversos formatos, como áudio, vídeo, imagens, formulários, entre outros (Wiederhold and Shortliffe, 2006). Uma parte importante das informações contidas nesses exames é descrita por meio de linguagem natural em laudos textuais, com a finalidade de registrar observações à respeito do estado clínico do paciente (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Nesse contexto, os laudos e os exames médicos são armazenados com o objetivo de manter o histórico clínico do paciente e auxiliar nos diagnósticos de futuras enfermidades. Adicionalmente, esses laudos, quando registrados em bases de dados computacionais, podem ser utilizados para a construção de modelos de predição para o auxílio no diagnóstico de enfermidades em pacientes, por meio da descoberta de padrões nesses laudos (Cherman, Spolaôr, Lee, Costa, Fagundes, Coy and Wu, 2008; Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). No entanto, o crescente armazenamento de dados médicos, ao mesmo tempo em que se apresenta como um fato positivo, inviabiliza a análise manual dos mesmos, tornando necessário o desenvolvimento de métodos e ferramentas computacionais que auxiliem na análise e no gerenciamento dessas informações (Han, 2005). Para prover suporte a análise e ao gerenciamento de dados em distintas áreas do conhecimento, diversos processos computacionais podem ser usados, dos quais se destaca o de Mineração de Dados (MD), que tem o intuito de explorar conjuntos de dados mediante a identificação de padrões, auxiliando na descoberta de conhecimento. Esses padrões podem ser identificados por meio de métodos de Inteligência Computacional (IC) para a criação de modelos descritivos e preditivos a partir do conhecimento presente nos dados analisados (Witten and Frank, 2005). Para a aplicação da MD, é necessário que os dados sejam representados em formato estruturado, como a tabela atributo-valor 1 , na qual cada linha dessa tabela é um elemento do conjunto de 1 Neste trabalho os termos tabela atributo-valor e base de dados serão usadas indistintamente. 1 2 dados analisados e cada coluna é uma característica observada (atributo) (Rezende, 2003). Na área médica, os dados registrados em base de dados não estão geralmente representados em formato adequado para a aplicação do processo de MD. Para isso ser possível, é necessário o desenvolvimento de métodos e ferramentas para transformar esses dados para um formato estruturado, como as tabelas atributo-valor (Cherman, Spolaôr, Lee and Wu, 2008; Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011; Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Nesse sentido, no Laboratório de Bioinformática (LABI) da Universidade Estadual do Oeste do Paraná (UNIOESTE / Foz do Iguaçu) em parceria com o Serviço de Coloproctologia da Faculdade de Ciências Médicas (FCM) da Universidade Estadual de Campinas (UNICAMP) e outros parceiros, está sendo desenvolvido o projeto interdisciplinar denominado Análise Inteligente de Dados, que tem como objetivo pesquisar e propor métodos e ferramentas para prover suporte à análise de dados médicos. Esse projeto inclui o desenvolvimento do Processo de Mapeamento de Laudos Médicos (PMLM), que tem o propósito de transformar conjuntos de laudos médicos para uma representação estruturada (Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). Em Honorato, Cherman, Lee, Monard and Wu (2007) foi proposta a primeira versão do PMLM, a qual utiliza uma estrutura de dados denominada Dicionário do Conhecimento (DC) para representação de informações de laudos textuais médicos. Nessa abordagem, o DC é utilizado para a transcrição de laudos, por meio de casamento de padrões, para base de dados computacionais. No DC encontram-se Regras de Mapeamento (RM), as quais representam possíveis combinações de termos para as frases de cada laudo e o modo como devem ser mapeadas para a tabela atributo-valor (Cherman, Spolaôr, Lee and Wu, 2008). Esse processo é aplicado em duas fases. Na primeira fase, o conjunto de laudos médicos é submetido à aplicação de técnicas de processamento de textos com o propósito de definir as seguintes estruturas com o auxílio de especialistas da área médica: Arquivo de Padronização (AP), que é aplicado para a uniformização de laudos, com a finalidade de reduzir a complexidade de cada frase presente nos laudos; características que irão compor a tabela atributo-valor, que é utilizada para a representação do conhecimento presente nos laudos; e DC, que é aplicado no mapeamento de laudos médicos para sua representação na tabela atributo-valor. Na segunda fase, primeiramente os laudos selecionados são padronizados por meio do AP. Em seguida, os laudos uniformizados são processados e o conhecimento dos mesmos é mapeado para a tabela atributo-valor por meio de um algoritmo especializado utilizando o DC. Nesse contexto, com a aplicação do PMLM baseado em DC a alguns domínios foi possível obter resultados considerados satisfatórios (Spolaôr, Lee, Cherman, Honorato, Fagundes, Góes, Coy and Chung, 2007; Cherman, Spolaôr, Lee, Honorato, Coy, Fagundes and Wu, 2008). No entanto, o DC gerado por meio da aplicação desse método apresenta-se como uma 3 estrutura de dados com pouca flexibilidade no contexto de representação de RM, dificultando a tarefa de descrição de regras mais complexas. Assim, caso seja necessária a representação de regras mais complexas e completas, é imprescindível a definição de um novo esquema para o DC, bem como realizar as modificações no método, de modo a adaptar o algoritmo para o processamento desses laudos (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Sendo assim, com a finalidade de aumentar a flexibilidade e a capacidade de representação desse método, foi proposta uma variação do PMLM com o intuito de substituir o DC por uma ontologia, que é uma estrutura que apresenta maior flexibilidade para a representação do conhecimento (Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). Nessa abordagem é eliminada parte do problema de definição de novas regras para mapeamento de laudos. Embora o método possa ser utilizado amplamente, inclusive por profissionais que não sejam da área de computação, atualmente todas as técnicas utilizadas no PMLM devem ser executadas separadamente por meio de instruções computacionais, dificultando o seu uso por profissionais de áreas não relacionadas com a computação. Desse modo, para prover suporte ao usuário e tornar o uso do método amigável e intuitivo, é necessário que todas as técnicas que compõem o PMLM estejam integradas em um sistema computacional. Adicionalmente, outras técnicas de processamento de textos podem ser aplicadas para auxiliar na transformação de laudos médicos, de modo que o alcance do método seja aumentado para a realização do mapeamento nesses laudos. 1.1 Objetivos Esse trabalho tem como objetivo geral automatizar e otimizar o PMLM por ontologias mediante a integração de técnicas de processamento de laudos textuais em uma ferramenta computacional. Para alcançar o objetivo principal deste trabalho, os seguintes objetivos específicos foram definidos: • Levantamento bibliográfico sobre conceitos relacionados com ontologias e PMLM; • Desenvolvimento de um Sistema Computacional Colaborativo (SCC) para prover suporte à aplicação automatizada do método de mapeamento de laudos médicos; • Auto-suficiência do SCC para a construção e a alteração da ontologia empregada em um determinado domínio; • Pesquisa e desenvolvimento de outros métodos de processamento de textos para aprimorar a representação dos laudos; 4 • Realização de um estudo de caso para a aplicação do SCC no mapeamento de um determinado conjunto de laudos médicos; • Avaliação e validação dos resultados do trabalho em conjunto com especialistas do domínio. 1.2 Premissas As premissas deste trabalho são: • Cada técnica de processamento de textos implementada no PMLM é executada manualmente e separadamente por intermédio de instruções computacionais; • As estruturas auxiliares utilizadas como apoio ao PMLM devem ser construídas manualmente e separadamente utilizando a linguagem de marcação XML (eXtensible Markup Language); • A ontologia deve ser elaborada utilizando outras ferramentas computacionais, como o Protégé; • Uma das técnicas de processamento de textos utilizada no PMLM pode acarretar na perca de legibilidade e/ou na transformação errônea de alguns termos. 1.3 Hipótese A hipótese deste trabalho é que a integração e a automatização de todas as técnicas e as etapas do PMLM por ontologias em um SCC pode tornar o processo de mapeamento mais eficiente, tanto em termos de custo de tempo quanto em termos de precisão, bem como torná-lo mais amigável. 1.4 Organização do Trabalho Este trabalho está organizado do seguinte modo: • Capítulo 2 – Fundamentos de Ontologia: neste capítulo são abordados os principais conceitos sobre ontologias, suas definições e utilidades. Também, são apresentados os tipos de ontologias, método de construção dessas estruturas, linguagens aplicadas para representação de conhecimento e ferramentas comumente utilizadas para a construção de ontologias; 5 • Capítulo 3 – Processo de Mapeamento de Laudos Médicos utilizando Ontologias: neste capítulo o processo como um todo é apresentado juntamente com as técnicas de processamento de textos utilizadas no PMLM bem como o método de lematização, abordagem proposta para a substituição do método de stemming neste trabalho; • Capítulo 4 – Desenvolvimento de Sistemas Computacionais: neste capítulo são abordados conceitos de engenharia de software focados na construção de sistemas computacionais. Também são apresentados conceitos de processo de software utilizado para o desenvolvimento do SCC; • Capítulo 5 – Ferramentas e Tecnologias: neste capítulo são apresentadas as ferramentas utilizadas para a construção da solução computacional deste trabalho, como as linguagens de programação Java, Javascript, Perl e Ruby, o ambiente de desenvolvimento NetBeans, as linguagens de marcação HTML e XML, a linguagem de estilo CSS e o framework para desenvolvimento de sistemas web Ruby on Rails; • Capítulo 6 – Processo de Desenvolvimento do Sistema Computacional Colaborativo: neste capítulo são descritas a aplicação de uma abordagem disciplinada de engenharia de software e ferramentas utilizadas para a construção do SCC; • Capítulo 7 – Estudo de Caso: neste capítulo é apresentado o estudo de caso realizado neste trabalho, utilizando o SCC desenvolvido para a aplicação do PMLM automatizado em um conjunto de laudos médicos textuais artificiais que simulam exames de Endoscopia Digestiva Alta (EDA); • Capítulo 8 – Resultados e Discussão: neste capítulo são apresentados e discutidos os resultados da avaliação experimental do SCC desenvolvido. Essa avaliação foi realizada por meio da aplicação do PMLM automatizado em um conjunto de laudos médicos textuais artificiais de exames de EDA. Também foi comparado o desempenho da execução do mapeamento manual e automático; • Capítulo 9 – Conclusão: neste capítulo são apresentadas as conclusões deste trabalho, suas possíveis e principais contribuições, limitações identificadas durante o seu desenvolvimento, e sugestões de trabalhos futuros. 6 Capítulo 2 Fundamentos de Ontologia 2.1 Considerações Iniciais Com o crescente aumento no volume e no armazenamento de informações em base de dados, é imprescindível a construção de métodos e de ferramentas para a organização e o gerenciamento dessas informações de modo que possam ser utilizadas futuramente em aplicações de processos para a descoberta de conhecimento, como Mineração de Dados (MD). Para isso, é necessário que esses dados sejam representados de forma estruturada para que esses processos desempenhem as suas tarefas de forma rápida e eficiente. Nesse sentido, o uso de ontologias pode auxiliar na representação e na organização dessas informações. Sendo assim, na Seção 2.2 são descritas as principais definições de ontologia. Na Seção 2.3 são discutidos alguns domínios em que as ontologias podem ser empregadas. Na Seção 2.4 são apresentados os tipos de ontologias. Na Seção 2.5 é descrito o método geral para a construção de ontologias proposto por Uschold and Gruninger (1996). Na Seção 2.6 são demonstradas algumas linguagens que podem ser utilizadas para representação do conhecimento. Na Seção 2.7 são apresentadas algumas ferramentas que provém suporte para a representação e o processamento de ontologias. 2.2 Definição de Ontologia Ontologia, palavra oriunda dos termos gregos ontos (ser) e logia (conhecimento), consiste em um campo da filosofia que tem o propósito de estudar as características do ser, da existência e das questões que envolvem a metafísica (Harper, 2010). A definição de ontologia teve origem na Grécia Antiga e ocupou a mente de filósofos como Platão, Aristóteles e Parmênides. No século XVII, enquanto uns filósofos consideravam o termo ontologia equivalente à palavra metafísica, outros definiam esse termo como uma divisão da metafísica. Atualmente, a metafísica e a ontologia são consideradas sinônimos, filosoficamente (Guarino and Giaretta, 1995). Na área computacional, ontologia é uma estrutura de dados que tem a finalidade de representar o 7 8 conhecimento de um domínio específico. Para Uschold and Gruninger (1996), ontologia é um termo utilizado como referência para denominar o compartilhamento do conhecimento de alguma área de interesse, podendo ser aplicada no desenvolvimento de ferramentas computacionais para processamento de informações representadas estruturadamente. Em uma ontologia é incorporado algum tipo de visão de mundo relacionado com um determinado campo de conhecimento. Essa visão é caracterizada como um conjunto de conceitos (entidades, atributos, processos, entre outros) e relacionamentos entre os mesmos. Para Guarino (1997), ontologia é uma caracterização intuitiva de um vocabulário lógico, em que as sentenças expressam relacionamentos entre características específicas, sendo que muitas vezes é necessária uma inferência mais detalhada do conhecimento para excluir ou reduzir interpretações errôneas por Sistemas Computacionais (SC). Na definição de Fox, Barbuceanu, Gruninger and Lin (1998) e de Garcia and Sichman (2003), ontologia é uma representação formal de uma entidade, ou seja, é constituída de propriedades, de relações, de restrições e de comportamentos. Nesse sentido, uma entidade é definida como uma organização, que é composta por várias divisões e consiste em um grupo de agentes associados a um conjunto de papéis, que são funções desempenhadas pelos agentes da organização com a finalidade de cumprir metas estipuladas. Agente é um membro de uma divisão da organização que assume pelo menos um papel a ser desempenhado. Segundo Gruber (2009), uma ontologia tem o intuito de definir um conjunto de primitivas de representação, como classes, atributos e relacionamentos para modelar o domínio de conhecimento. Para a definição de primitivas, devem ser incluídas as informações sobre o seu significado e as restrições lógicas para sua aplicação. Por exemplo, em sistemas de bancos de dados, o nível de abstração de modelos de dados pode ser considerado uma ontologia. 2.3 Aplicações da Ontologia Na área computacional, o uso de ontologias é dividido em três categorias (Uschold and Gruninger, 1996): • Comunicação: permitem o compartilhamento de conhecimento e o contato entre indivíduos com necessidades e ideias diferentes em distintos domínios específicos. Em SC, essas estruturas são utilizadas para padronizar modelos de dados, relacionamento de redes, integração de diferentes sistemas, entre outros; • Interoperabilidade: possibilitam a integração de diferentes softwares sem a necessidade de tradução de métodos de modelagem, de linguagens de programação, de ferramentas computacionais, e de arquiteturas; 9 • Engenharia de Sistemas: facilitam o processo de identificação de requisitos durante a modelagem e o desenvolvimento de projetos de SC, tal como possibilitam a automatização da verificação de consistência, aumentando a confiabilidade do sistema. Também, essas estruturas de dados podem ser reutilizadas para a construção de outros sistemas. Assim, ontologias podem ser utilizadas como apoio na especificação de requisitos, auxiliando na tarefa de identificação de necessidades que deverão ser atendidas por meio de uma solução computacional. Nesse contexto, as ontologias geralmente são utilizadas com o propósito de facilitar a realização de tarefas, como: organização de conhecimento; compartilhamento de informações entre as pessoas; processamento de dados; aplicação de processos de MD; e comunicação entre os componentes de software e/ou aplicações computacionais (Chute, 2005). Assim, ontologias podem ser aplicadas em projetos que envolvem multidisciplinaridade com o objetivo de facilitar o diálogo entre os especialistas de diferentes áreas, bem como apoio para reduzir a complexidade do desenvolvimento de sistemas. Na área da saúde, por exemplo, várias ontologias foram desenvolvidas com o intuito de representar vocabulários médicos em estruturas de dados para que possam ser utilizadas por ferramentas computacionais (Campbell, 1998), dos quais se destaca a Unified Medical Language System (UMLS) (Humpheys, Lindberg, Schoolman and Barnett, 1998). A UMLS é um repositório mantido pela organização norte-americana National Lybrary of Medicine (NLM) e é composto por vários vocabulários de termos utilizados nas ciências médicas. Sendo assim, esse repositório possui três bases de conhecimento, tais como a Metathesaurus, a Semantic Network e a Specialist Lexicon. A Metathesaurus é uma ampla base de dados multilíngua de vocabulários utilizada para o mapeamento de termos médicos com a finalidade de definir ou de identificar distintos termos que estão associados a um simples conceito. Essa base possui mais de um milhão de conceitos médicos e mais de cinco milhões de nomenclaturas de termos, compondo mais de 100 vocabulários diferentes, incluindo os vocabulários controlados Medical Subject Headings (MeSH) e Systematized Nomenclature of Medicine – Clinical Terms (SNOMED-CT). A Semantic Network é um catálogo de tipos de semânticas (categorias) e de relacionamentos que definem a classificação dos conceitos presentes na base Metathesaurus por meio da atribuição. Essa base contém 133 tipos semânticos e 54 relacionamentos diferentes. A Specialist Lexicon é um dicionário em que são apresentadas as definições sintáticas para termos médicos no idioma inglês. Cada termo de entrada processado (dados de entrada) contém informações ortográficas, morfológicas (forma e estrutura) e sintaxe (como as palavras são organizadas para gerar um significado). No Laboratório de Bioinformática (LABI) da Universidade Estadual do Oeste do Paraná (UNIOESTE) em parceria com o Serviço de Coloproctologia da Faculdade de Ciências Médi- 10 cas (FCM) da Universidade Estadual de Campinas (UNICAMP) foi proposta uma versão do Processo de Mapeamento de Laudos Médicos (PMLM) que utiliza ontologias para a representação do conhecimento. Essa estrutura contém atributos e Regras de Mapeamento (RM), que são utilizados para transformação de laudos médicos textuais não estruturados para o formato estruturado, como a tabela atributo-valor (Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). 2.4 Tipos de Ontologias As ontologias podem ser categorizadas de acordo com o domínio do conhecimento envolvido, que é representado em uma estrutura de dados segundo os níveis de detalhes determinados (Bodenreider and Burgun, 2005). Nesse sentido, essas ontologias podem ser classificadas como: • Ontologias de aplicação (application ontologies): representam os conceitos que são dependentes de um domínio específico e de suas atividades que atendem as especificações do problema a ser resolvido (Guarino, 1997); • Ontologias centrais (core ontologies): descrevem as divisões do estudo de uma determinada área e/ou conceitos genéricos e abstratos (Guarino and Giaretta, 1995). Essas ontologias contém apenas definições necessárias para compreender outros conceitos; • Ontologias de domínio (domain ontologies): especificam o conhecimento de um determinado domínio específico, ou seja, parte particular do mundo. Para a construção desse tipo de ontologia é necessário o uso de uma ontologia de nível mais genérico que descreva os termos mais gerais e que sejam independentes de domínio. As ontologias de nível mais genérico são denominadas de ontologias gerais (França, 2009); • Ontologias gerais (foundation ontologies): representam o conhecimento em um nível intermediário de detalhes independentemente do seu uso em representações específicas (Bodenreider and Burgun, 2005). Assim, as ontologias gerais consistem em modelos de dados comumente aplicáveis a uma grande variedade de ontologias de domínio. Por exemplo, os termos relacionados ao veículo podem ser aplicados na conceituação de carro, de trem, de avião ou de navio. Desse modo, o veículo pode ser representado por uma ontologia geral e os tipos derivados de veículo podem ser representados por uma ontologia de domínio; • Ontologias de representação (representation ontologies): esboçam a classificação das primitivas que são utilizadas por intermédio de uma linguagem de representação de conhecimento (Guarino, 1997); • Ontologias de tarefas (task ontologies): descrevem o vocabulário relacionado com as atividades necessárias para a resolução de problemas independentemente do domínio em 11 que ocorrem (Guarino and Giaretta, 1995). 2.5 Construção de Ontologias Na literatura foram propostos vários métodos para o desenvolvimento de ontologias, dos quais se destaca o método geral de construção de ontologias (Uschold and Gruninger, 1996), que tem como objetivo generalizar o processo de construção dessas estruturas de dados. O método proposto por Uschold and Gruninger (1996) é aplicado em cinco fases: 1. Identificação do escopo e do objetivo; 2. Construção da ontologia; 3. Avaliação; 4. Documentação; 5. Estabelecimento de diretrizes para cada fase. Na Fase (1), são levantadas as especificações para o desenvolvimento de uma ou mais ontologias, bem como são respondidas questões à respeito das mesmas, como a motivação e o modo de uso. O escopo é definido mediante um conjunto de questões de competência, os quais são problemas diferentes de raciocínio que devem ser atendidos pela ontologia proposta. Assim, as definições e as restrições de uma ontologia são avaliadas e validadas por meio das questões de competência. Na Fase (2), após as definições da etapa anterior, é construída a ontologia considerando três aspectos: • Captura: contempla atividades para a definição da ontologia, como a identificação dos conceitos principais e dos relacionamentos existentes no domínio de interesse, a produção de definições exatas de texto não ambíguos para os conceitos identificados e a definição dos termos referentes aos conceitos e aos relacionamentos; • Codificação: a partir dos conceitos identificados durante a captura da ontologia, a mesma é construída por meio de uma linguagem de representação em um ambiente de desenvolvimento; • Integração com ontologias existentes: durante a codificação dessa estrutura, podem ser reaproveitadas outras ontologias que foram desenvolvidas anteriormente. 12 Na Fase (3), verifica-se se foram atendidas todas as especificações levantadas para o desenvolvimento de uma ou mais ontologias. Assim, são avaliadas as suas características, tais como a sua expressividade e a sua consistência. Essa avaliação deve determinar se é necessária a extensão da ontologia ou se as questões de competência podem ser respondidas por meio de ontologias existentes. Na Fase (4), o processo de desenvolvimento da ontologia é documentado. Nessa documentação são incluídas as especificações levantadas durante as etapas anteriores e os conceitos utilizados para o desenvolvimento da estrutura. Na Etapa (5), são definidos os conjuntos de técnicas, métodos e princípios para a aplicação de cada uma das fases anteriores, bem como são estipulados os relacionamentos entre essas fases, tais como a ordem de execução, a intercalação e a entrada/saída de informações. É importante ressaltar que as duas últimas fases são complementos que provém suporte para o desenvolvimento das outras fases. 2.6 Linguagens de Representação de Ontologias Nessa seção são apresentadas as linguagens comumente utilizadas para a representação de esquemas de ontologias, das quais se destaca a linguagem Ontology Web Language (OWL) que foi utilizada para o processamento de laudos textuais médicos por meio do PMLM. 2.6.1 Knowledge Interchange Format A linguagem Knowledge Interchange Format (KIF) (Genesereth, Fikes, Brachman, Gruber, Hayes, Letsinger, Lifschitz, Macgregor, Mccarthy, Norvig and Patil, 1992) foi desenvolvida com o objetivo de facilitar a troca de informações entre softwares escritos em diferentes linguagens. A KIF, caracterizada por ser baseada no cálculo de predicados e por apresentar alto poder de expressividade, foi uma das primeiras linguagens elaboradas com o intuito de representar o conhecimento por meio de ontologias. O propósito dessa linguagem é similar ao da linguagem Postscript (Adobe Systems, 1990), que é comumente utilizada em programas de formatação de textos e de gráficos para a visibilização de informações. Nesse sentido, essa linguagem possui algumas características que podem ser essenciais para a representação do conhecimento, tais como: • Semântica declarativa: possibilita a compreensão das principais expressões dessa linguagem sem a necessidade dos recursos de um interpretador para manipular essas expressões; • Logicamente compreensível: fornece expressões de sentenças arbitrárias para o cálculo de predicados; 13 • Representação de meta-conhecimento: provém suporte aos usuários em processo de tomadas de decisões no contexto de representação do conhecimento explícito. Na Figura 2.1 é apresentado um exemplo de expressão para definição de uma classe, no qual subclass é uma operação para a definição de subclasses, => é um operador para declaração de regras, instancia é a operação para a definição de instância, ?PF é uma variável, attribute é uma característica de ?PF. Figura 2.1: Exemplo de definição de classes KIF. 2.6.2 Ontolingua Proposta por Gruber (1992), a linguagem Ontolingua tem como objetivo auxiliar na manutenção de ontologias de maneira flexível e que seja compatível com várias linguagens de representação de conhecimento. Essa linguagem é implementada em um programa que utiliza uma sintaxe simples para traduzir definições, que são os dados de entrada para vários sistemas de representação. Nesse contexto, a sintaxe da Ontolingua é baseada nas notações padrões e cálculo de predicados presentes na linguagem KIF. Assim, a linguagem Ontolingua traduz ontologias desenvolvidas na linguagem KIF em sistemas de representação, os quais são limitados pela lógica de primeira ordem para a implementação do raciocínio. Desse modo, essa linguagem é projetada para capturar representações comuns do conhecimento. Também, a Ontolingua é baseada no Frame Ontology (FO) (Farquhar, Fikes and Rice, 1997), o qual foi construído como uma camada sobre o KIF e consiste em uma ontologia de representação do conhecimento que tem a finalidade de permitir a construção de ontologias seguindo o paradigma de quadros (frames), propiciando termos como classes, instâncias, herança, entre outros. Comumente utilizado na área da Inteligência Artificial, frame é uma estrutura de dados utilizada para representar conhecimento de um determinado domínio (Minsk, 1985). Desse modo, de acordo com Corcho and Gómez-Pérez (2000), a linguagem Ontolingua permite construir ontologias por qualquer uma das três maneiras: utilizando exclusivamente o vocabulário FO; usando expressões KIF; ou aplicando ambas as linguagens simultaneamente. 14 Na Figura 2.2 é apresentado um exemplo de definição de classes estruturadas na linguagem Ontolingua, no qual define-class é um construtor de classe, ?nome e ?cpf são variáveis, :def é um comando para a definição de atributos de classes, :axiom-def é um comando para a especificação de propriedades de classes e subclass-of é uma operação para a definição de subclasses. Figura 2.2: Exemplo de definição de classes Ontolingua. 2.6.3 Resource Description Framework A linguagem Resource Description Framework (RDF) (Klyne, Carroll and McBride, 2014) foi desenvolvida com o intuito de padronizar a comunicação de dados entre dispositivos por meio da Internet. Essa linguagem é focada na representação de dados de forma flexível e minimamente restritiva para facilitar a automatização do processamento de recursos da web. A sintaxe do RDF utiliza a linguagem de marcação denominada eXtensible Markup Language (XML) (Bray, Paoli, Sperberg-McQueen, Maler and Yergeau, 2006) para representar os dados e possibilitar a especificação da semântica para os dados baseados em XML de modo padronizado e interoperável. XML é uma linguagem simples e flexível que foi desenvolvida para a criação e a formatação de documentos de maneira hierárquica. Essa linguagem foi desenvolvida com a finalidade de enfrentar o desafio de gerenciar grandes quantidades de documentos eletrônicos publicados na web. Assim, o XML oferece uma definição de sintaxe padrão para o desenvolvimento de documentos estruturados. Essa linguagem é apresentada no Capítulo 5. Nesse contexto, a linguagem RDF foi desenvolvida para atender a alguns requisitos de representação do conhecimento, tais como: prover suporte ao desenvolvimento de modelos de dados que sejam simples e fáceis de serem utilizados em aplicações de processamento e de manipulação de informações; possuir semântica formal e inferência de raciocínio provável; portar um vocabulário totalmente extensível e baseado em URI, que são referências utilizadas para nomear todos os tipos de objetos em RDF; utilizar XML para codificar o modelo de dados para a troca de informações entre aplicativos distribuídos; utilizar diferentes tipos de dados de esquema XML para representar valores com o objetivo de auxiliar no compartilhamento de 15 informações entre aplicativos que utilizam as linguagens XML e RDF; e facilitar o uso em escala de recursos da Internet. No entanto, RDF não oferece mecanismos para descrição de propriedades, bem como não provê recursos para a descrição de relações entre estas propriedades e outros recursos. Para reduzir esses problemas, foi desenvolvido o RDF Schema (RDFS) (Brickley and Guha, 2004), também conhecido como esquema RDF, o qual consiste em uma extensão de RDF que tem a finalidade de definir as classes e as propriedades para serem utilizadas na descrição de outras propriedades. Na Figura 2.3 é apresentado um exemplo de definição de classes estruturadas na linguagem RDFS, no qual rdfs:Class é um construtor que define classes, rdf:ID é o identificador de um elemento declarado em um construtor, rdfs:Property é o construtor de propriedades de classes, rdfs:subClassOf é a operação de herança de características de classes, rdf:domain estabelece qual a classe que um elemento pertence neste exemplo e rdf:resource representa o nome da classe que um elemento está vinculado. Figura 2.3: Exemplo de definição de classes RDFS. 2.6.4 Ontology Inference Layer Ontology Inference Layer (OIL) (Horrocks, Fensel, Broekstra, Decker, Erdmann, Goble, van Harlemen, Klein, Staab, Studer, Motta and Horrocks, 2000) consiste em uma linguagem que tem o propósito de padronizar a tarefa de construção de ontologias por meio do uso de padrões web para a representação de dados, tais como as linguagens XML e RDFS. Para isso, essa linguagem possui uma camada de inferência para ontologias. A OIL combina o uso de primitivas de modelagem, que são amplamente utilizadas em linguagens baseadas em frames, com a aplicação da semântica formal e da lógica descritiva para a inferência do raciocínio. Para definição de ontologias em OIL é necessária a distinção de três camadas diferentes dessa linguagem, tais como: nível de objeto, na qual são descritas as instâncias concretas de 16 uma ontologia; primeiro meta-nível, em que as definições ontológicas atuais são disponibilizadas; e segundo meta-nível, também conhecido como meta-meta nível, na qual são definidas as características que descrevem a ontologia do nível de objeto. Na Figura 2.4 é ilustrado um exemplo de definição de classes de uma ontologia OIL, no qual class-def define o nome de uma classe, slot-def determina um elemento de classe, domain estabelece qual a classe que um elemento pertence e subclas-of é a operação de herança de características de classes. Figura 2.4: Exemplo de definição de classes OIL (Modificado de van Harmelen and Horrocks (2000)). 2.6.5 DAML + OIL Inicialmente, por meio de um programa financiado pela agência norte-americana US Defense Advanced Research Projects Agency (DARPA), do Departamento de Defesa dos Estados Unidos (United States Department of Defense), foi desenvolvida uma linguagem de marcação baseada em RDF e XML denominada DARPA Agent Markup Language (DAML) (Hendler and D. L. McGuinness, 2000). Essa linguagem foi elaborada com o objetivo de facilitar o desenvolvimento de estruturas de dados para a realização de buscas na web. Após o desenvolvimento da DAML, a mesma sofreu algumas alterações e foi evoluída para a DAML–ONT, que consiste em uma linguagem simplificada para a representação de conceitos em classes RDF de forma mais sofisticada que a representação permitida pela linguagem RDFS. Assim, com objetivo de aprimorar a representação do conhecimento, foram unidas as linguagens DAML–ONT e OIL em uma nova linguagem chamada DAML+OIL (Horrocks, 2002). Essa tecnologia adota o paradigma orientado a objetos na descrição de estruturas para a representação do conhecimento por meio do uso de classes e propriedades. Essa linguagem também utiliza estruturas XML Schema para a representação de dados. Na Figura 2.5 é apresentado um exemplo de estrutura DAML+OIL para a representação de um conjunto de dados, no qual daml:oneOf define a enumeração de elementos, parseType representa o tipo de dados, daml:collection determina que essa estrutura é uma coleção não ordenada de dados, daml:Thing é um elemento utilizado para a declaração de elementos de representação 17 de dados e rdf:about é utilizado para nomear um elemento. Figura 2.5: Exemplo de representação de um conjunto de dados DAML+OIL. 2.6.6 Ontology Web Language Ontology Web Language (OWL) (Smith, Welty and McGuinness, 2004) é uma linguagem baseada nas linguagens OIL e DAM+OIL utilizada para a representação do conhecimento que tem o intuito de construir e de instanciar ontologias na web. Assim, a linguagem OWL foi desenvolvida para ser utilizada na web semântica (semantic web) (Berners-Lee, Hendler and Lassila, 2006). A web semântica consiste em uma visão do futuro da web, onde a informação terá um significado explícito, facilitando o processamento e a integração de informações disponíveis na web pelos computadores. Assim, o propósito é tornar os recursos da web mais acessíveis aos processos automatizados por meio da adição de informações sobre os recursos que descrevem ou fornecem conteúdo na web, facilitando o trabalho de cooperação entre o humano e a máquina (McGuinness and van Harmelen, 2004). Desse modo, a ontologia OWL é construída utilizando estruturas XML e RDF. As informações desse tipo de ontologia são organizadas utilizando as tags RDF, RDFS e OWL, também conhecidos como construtores. Também, nessa linguagem as semânticas formais e específicas determinam como derivar consequências lógicas, tais como os fatos que não estejam presentes na ontologia, mas que foram vinculados com a semântica. Classes Uma classe consiste em um mecanismo de abstração para definir um grupo de indivíduos (também conhecidos como objetos na área computacional) pertencentes a um conjunto que compartilham as mesmas propriedades. Por exemplo, carro e avião são indivíduos pertencentes à classe Veiculo. Nesse sentido, cada classe OWL está associada a um conjunto de indivíduos, 18 sendo essa associação denominada extensão de classe. Cada indivíduo nessa extensão é denominado uma instância de classe. As classes podem ser organizadas em uma hierarquia de especialização, também denominado herança, por exemplo, a classe PessoaJurídica pode ser uma especialização da classe Pessoa. Na linguagem OWL, o mecanismo de especialização pode ser aplicado utilizando o construtor rdfs:subClassOF. Nessa linguagem existe uma classe embutida mais geral denominada Thing, que é uma superclasse para todas as classes OWL (Bechhofer, van Harmelen, Hendler, Horrocks, McGuinnes, Patel-Schneider and Stein, 2004; McGuinness and van Harmelen, 2004). Para definição de classes OWL, também podem ser utilizados os seguintes construtores: • owl:complementOf : permite a combinação de classes por meio da operação lógica de complemento. Por exemplo, a classe Cozinha é um complemento da classe Casa; • owl:disjointWith: garante que um indivíduo de uma classe não pode ser associado simultaneamente com uma outra classe especificada, ou seja, as classes não podem possuir os mesmos indivíduos. Por exemplo, os indivíduos da classe Fruta não podem ser instanciados pela classe Carne. • owl:equivalentClass: indica que duas classes possuem a mesma extensão de uma mesma classe, ou seja, duas ou mais classes podem conter os mesmos indivíduos. Por exemplo, as classes PessoaFísica e PessoaJurídica podem obter os mesmos indivíduos relacionados à classe Pessoa; • owl:intersectionOf : permite a combinação de classes por meio da operação lógica de intersecção. Assim, a classe que utiliza esse construtor, além de suas características específicas, permite o uso apenas das características que são semelhantes entre as classes utilizadas. Por exemplo, a intersecção das classes Brasileiro e Argentino ocasiona nas características equivalentes aos da classe Pessoa; • owl:oneOf : define a enumeração de classes, permitindo que as mesmas sejam descritas pela enumeração exaustiva de suas instâncias. Assim, a classe definida por esse construtor contém apenas indivíduos enumerados. Por exemplo, a classe Fruta pode ser composta pelos indivíduos das classes Maçã, Banana, Pêssego, Abacate, entre outras; • owl:unionOf : permite a combinação de classes por meio da operação lógica de união. Esse construtor viabiliza a junção de características de várias classes em uma única classe. Por exemplo, a classe América pode ser elaborada com a união das classes Argentina, Brasil, Colômbia, entre outras. Na Figura 2.6 é apresentado um exemplo de definição de uma classe na linguagem OWL, no qual owl:Class representa uma classe OWL, rdf:ID é um atributo para nomeação de um componente OWL e owl:resource é utilizado para referenciar elementos nessa linguagem. 19 Figura 2.6: Exemplo de representação de definição de classes OWL. Propriedades Na linguagem OWL, as propriedades tem como finalidade representar as regras de relacionamento entre os indivíduos (Bechhofer, van Harmelen, Hendler, Horrocks, McGuinnes, Patel-Schneider and Stein, 2004; Smith, Welty and McGuinness, 2004). Essa linguagem possui dois tipos diferentes de propriedades: • datatype properties: estabelece relações entre as instâncias de classes, literais da linguagem RDF e XML Schema datatypes; • object properties: define relações entre as instâncias de duas ou mais classes. Nesse sentido, podem ser utilizados os seguintes construtores para a definição de propriedades, para os quais são apresentadas as suas funcionalidades: • owl:equivalentProperty: determina que duas ou mais propriedades são equivalentes, ou seja, têm a mesma propriedade de extensão; • owl:functionalProperty: especifica que uma propriedade P pode ter apenas um único valor para cada indivíduo; • owl:inverseFunctionalProperty: indica que um valor pode ser somente atribuído à propriedade P de um único indivíduo; • owl:inverseOf : define que uma propriedade é inversa em relação à outra propriedade. Por exemplo, se a propriedade Px é inversa da propriedade Py e se a classe X está relacionada com a classe Y pela Py, então Y está associada com X pela Px; • owl:symmetricProperty: utilizado para indicar que uma propriedade é simétrica, ou seja, se o conjunto de indivíduos (x, y) é uma instância de P, então o conjunto (y, x) é uma instância de P; • owl:transitiveProperty: determina que uma propriedade é transitiva, isto é, se os conjuntos (x, y) e (y, z) são instâncias de P, então o conjunto (x, z) é uma instância de P; • rdfs:domain: caracterizado como domínio da propriedade, limita os indivíduos para possibilitar a aplicação da propriedade. Assim, se a propriedade possui uma classe como um 20 de seus domínios e um indivíduo é relacionado a um outro indivíduo por meio dessa propriedade, então esses indivíduos pertencem a mesma classe. Por exemplo, a propriedade denominada temFilho pode ser indicada para ter o domínio de progenitores (mãe e/ou pai); • rdfs:range: limita a instanciação de indivíduos por meio da definição de valores que são válidos para uma determinada propriedade. Por exemplo, a propriedade diaSemana pode ser indicada para possuir um dos valores presentes no conjunto (domingo, segunda-feira, ..., sábado); • rdfs:subPropertyOf : define que a propriedade é uma sub-propriedade de outra propriedade. Por exemplo, as propriedades terCarro, terCamionete e terCaminhão são subpropriedades de terVeiculoTerrestre. Sendo assim, cada propriedade é representada pela estrutura XML <owl:ObjectProperty rdf:about=”nomeAtributo”>, na qual rdf:about é um atributo de nomeação ou referência de um atributo. Na Figura 2.7 é apresentado um exemplo de uso de propriedade na linguagem OWL, em que é definida a propriedade temCasa, que é sub-propriedade de temImovel e possui a propriedade temDomicilio como equivalente e a classe Imovel como limitação do valor a ser aceito nessa definição. Figura 2.7: Exemplo de uso de propriedade da linguagem OWL. Restrições de Propriedades A linguagem OWL permite o uso de restrições sobre o modo como as propriedades são permitidas para serem aplicadas em instâncias de uma classe. Essa linguagem fornece dois tipos de restrições que podem ser utilizados em propriedades: restrição de valor (value constraints) e restrição de cardinalidade (cardinality constraints). A restrição de valor aplica limitações no alcance da propriedade quando são utilizadas na descrição de classes, ou seja, define os valores possíveis ou um intervalo de valores que uma propriedade é capaz de obter. A restrição de cardinalidade limita a quantidade de valores que uma propriedade pode assumir na descrição de classes (Bechhofer, van Harmelen, Hendler, Horrocks, McGuinnes, Patel-Schneider and Stein, 2004; McGuinness and van Harmelen, 2004). 21 Em ontologias desenvolvidas com a linguagem OWL, as restrições de propriedades podem ser aplicadas por meio do uso das tags <owl:Restriction> e <owl:onProperty rdfs:resource=”propriedade”>, das quais a tag <owl:onProperty> indica a propriedade restrita. A seguir são apresentados os construtores das restrições que limitam os valores que são utilizados em uma propriedade: • owl:allValuesFrom: descreve uma classe para todos os indivíduos de um determinado conjunto em que todos os valores da propriedade em questão são membros quaisquer da extensão de classe de descrição ou são valores de dados em um determinado intervalo, isto é, são especificados todos os relacionamentos entre os indivíduos de uma classe. Assim, a propriedade presente nesta classe tem uma restrição local para valores associados à mesma. Por exemplo, a classe Escola possui a propriedade temProfessor restringindo todos os seus valores como instâncias da classe Pessoa; • owl:someValuesFrom: determina uma classe para todos os indivíduos de um determinado conjunto que possuem pelo menos um valor da propriedade em questão e o mesmo é um exemplo da classe de descrição ou de valor em um intervalo especificado. Ao contrário do allValuesFrom, o construtor someValuesFrom não limita a propriedade para que todos os seus valores sejam instâncias da mesma classe. Também, nessa linguagem são incluídas limitações de cardinalidade, que são definidas como restrições locais, as quais são apresentados a seguir: • owl:maxCardinality: determina o número máximo de instâncias que uma propriedade possa possuir; • owl:minCardinality: estabelece o número mínimo de instâncias que uma propriedade possa obter; • owl:cardinality: define que uma propriedade possui o valor de maxCardinality igual ao valor do minCardinality, ou seja, uma propriedade deve possuir exatamente um número de instâncias. Por exemplo, a propriedade temCPF da classe PessoaJurídica deve ter o valor de cardinality exatamente igual a um. 2.7 Ferramentas para Representação de Ontologias Várias ferramentas foram desenvolvidas com o objetivo de facilitar o processo de construção de ontologias. A seguir são apresentadas as principais ferramentas utilizadas para o desenvolvimento dessas estruturas. 22 2.7.1 Chimaera Chimaera (McGuinness, Fikes, S. and Wilder, 2000) é uma ferramenta computacional que tem a finalidade de prover suporte aos usuários nas tarefas de criação e de manutenção de ontologias na web. Essa ferramenta tem duas funções principais: mesclar ontologias múltiplas em uma só e evoluí-las. Também, Chimaera suporta ontologias oriundas de bases de conhecimento de formatos diferentes por meio da reorganização de taxonomias, da resolução de conflitos de nome, da edição, entre outros. Nesse sentido, Chimaera possui um ambiente simples para a construção e a edição de ontologias, tal como possibilita que o usuário utilize o editor/navegador do ambiente Ontolingua para a edição mais extensa e complexa dessas estruturas de dados. Também, é importante destacar que essa ferramenta computacional pode utilizar ontologias representadas por meio das linguagens OWL e DAML. 2.7.2 OilED OilED (Horrocks, Goble and Stevens, 2001) é uma ferramenta para construção de ontologias nas linguagens OIL e DAML+OIL com o intuito de proporcionar um estilo simples e intuitivo para indução de raciocínio por intermédio de uma interface amigável ao usuário. Essa ferramenta utiliza frames para lidar com a expressividade da linguagem OIL. A ferramenta OilED também usa mecanismos altamente sofisticados de indução de raciocínio por DL com o propósito de gerar conclusões para o raciocínio que está sendo processado, facilitando a elaboração de ontologias mais complexas e detalhadas. Na versão atual dessa ferramenta é necessária a inclusão de vários recursos para a construção de ontologias, pois o mesmo não suporta o desenvolvimento dessas estruturas em larga escala, bem como não provê suporte para versionamento. 2.7.3 Protégé Protégé (Gennari, Musen, Fergerson, Grosso, Crubzy, Eriksson, Noy and Tu, 2003) consiste em um ambiente de código aberto (open source) e de uso gratuito para construção de sistemas baseados em conhecimento. Inicialmente desenvolvido com objetivo de atender a área médica, esse ambiente foi aprimorado para um conjunto de ferramentas de uso geral. O Protégé é composto por duas partes: o modelo (model), que é um mecanismo interno para representação de ontologias e bases de conhecimento; e a visão (view), que oferece uma interface ao usuário para exibir e editar ontologias. Atualmente, Protégé pode construir e editar ontologias em várias linguagens, tais como OWL, RDF, XML, Unified Modeling Language (UML) e banco de dados relacionais. Para a 23 construção de ontologias na linguagem OWL foi desenvolvido um plugin 1 de extensão denominado Protégé OWL Plugin (Knublauch, Fergerson, Noy and Musen, 2004). O uso desse plugin oferece alguns benefícios, dos quais se destacam: uma grande comunidade de usuários e desenvolvedores ativos que utilizam e desenvolvem esse plugin; uma biblioteca de componentes reutilizáveis; e uma arquitetura flexível. 2.7.4 Servidor Ontolingua Servidor Ontolingua (Farquhar, Fikes and Rice, 1997) é um conjunto de ferramentas que tem o propósito de apoiar o processo de construção de ontologias na linguagem Ontolingua de modo individual, bem como de forma compartilhada entre grupos. Essas ferramentas fazem o uso da web para permitir o acesso e oferecer recursos aos usuários para manipulação de ontologias, como publicação, navegação, criação, edição e compartilhamento em um servidor específico. Sendo assim, o Servidor Ontolingua oferece muitas facilidades para o desenvolvimento de ontologias, tais como: • Linguagem de representação semi-formal que oferece suporte para a descrição de termos apresentados informalmente em linguagem natural e formalmente em linguagem de representação de conhecimento interpretável por computadores; • Busca, reposição, construção, melhoria e extensão de ontologias em repositórios; • Facilidade de interpretação de ontologias de repositórios em sistemas computacionais; • Facilidade de acesso a ontologias por meio de aplicações remotas via web. 2.8 Considerações Finais Ontologia consiste em uma estrutura de dados promissora para representação de dados médicos, pois com essa estrutura é possível organizar o conhecimento de modo flexível e estruturado. Para representação de dados médicos, na literaturam foram desenvolvidas várias ontologias, como a UMLS, que é o maior vocabulário de termos de ciências biomédicas disponível para auxiliar sistemas computacionais no processamento e no gerenciamento de dados. No PMLM são utilizadas ontologias com o propósito de representar atributos e RM para mapear conjuntos de laudos médicos textuais para uma base de dados. As ontologias utilizadas nesse processo são representadas por intermédio da linguagem OWL devido a sua grande quantidade de recursos para flexibilizar o desenvolvimento de ontologias, permitindo a expansão do 1 Plugin é um componente de software que permite adicionar uma caraterística específica a uma aplicação de software já existente. 24 potencial de representação dessas estruturas de acordo com o domínio de conhecimento. Para o desenvolvimento de ontologias nessa linguagem, geralmente é utilizada a ferramenta Protége, pois é facilitada a construção dessas estruturas por meio de uma interface gráfica amigável e intuitiva ao usuário, bem como não é necessário o conhecimento da linguagem OWL por parte do usuário para o uso dessa ferramenta. Também, essa ferramenta possui código-fonte aberto e o seu uso é gratuito, possibilitando que desenvolvedores de software aprimorem essa ferramenta de acordo com as suas necessidades e/ou de outros usuários. Capítulo 3 Processo de Mapeamento de Laudos Médicos utilizando Ontologias 3.1 Considerações Iniciais Neste capítulo é apresentado o processamento de textos utilizados no Processo de Mapeamento de Laudos Médicos (PMLM), que tem o objetivo de transformar conjuntos de laudos textuais não estruturados para uma representação estruturada, como a tabela atributo-valor (Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). Inicialmente, em Cherman, Lee, Honorato, Fagundes, Góes, Coy and Wu (2007) foi proposta a primeira versão desse processo, a qual utiliza o Dicionário do Conhecimento (DC) para a descrição de Regras de Mapeamento (RM). O DC consiste em uma estrutura de dados utilizada para a transformação de laudos por intermédio de casamento de padrões. Essa estrutura é representada por um arquivo estruturado descrito na linguagem de marcação XML (eXtensible Markup Language), que é amplamente aplicada para a construção de documentos com dados organizados hierarquicamente com o uso de marcadores (tags). Porém, estudos realizados anteriormente apontam que o DC apresenta pouca flexibilidade para a representação do conhecimento, dificultando a elaboração de RM mais complexas, sendo necessária a construção de novos esquemas de DC e a alteração do método de mapeamento para adaptá-lo à nova estrutura de DC (Honorato, Cherman, Lee, Monard and Wu, 2007; Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2009; Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2010; Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). Com o propósito de reduzir as limitações dessa abordagem, em Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung (2011) foi proposta uma variação do método original com o intuito de substituir o DC por uma ontologia, que é uma estrutura de dados que apresenta maior flexibilidade para representação de dados. 25 26 Nesse contexto, na Seção 3.2 são apresentadas abordagens utilizadas para o mapeamento desses laudos médicos e alguns trabalhos nos quais foram aplicadas essas abordagens. Em seguida, são apresentadas as duas etapas do PMLM, as quais são abordadas nas Seções 3.3 e 3.4. 3.2 Mapeamento de Laudos Médicos Os laudos textuais são imprescindíveis para qualquer especialidade médica, pois permitem descrever achados em exames realizados e manter o histórico do paciente quanto a procedimentos, sintomas, enfermidades, entre outros. No entanto, para que as informações contidas nesses laudos possam ser utilizadas, por exemplo, para estatísticas ou pesquisas médicas, para o estudo de enfermidades, a identificação de padrões, o desenvolvimento de procedimentos médicos, entre outros, o mapeamento de laudos é geralmente realizado de forma manual para uma base dados, como planilhas eletrônicas, o que torna essa tarefa inviável para grandes quantidades de laudos textuais. Na Figura 3.1 é ilustrado um exemplo de transcrição manual de um fragmento de laudo artificial pré-processado da seção de esôfago para uma base de dados, onde as linhas representam laudos mapeados e as colunas representam características (atributos) consideradas essenciais mapeadas nesses laudos. Nesse sentido, no LABI da UNIOESTE/Foz do Iguaçu em parceria com o Serviço de Coloproctologia da Faculdade de Ciências Médicas (FCM) da UNICAMP foi desenvolvido o PMLM com a finalidade de automatizar e padronizar a transcrição de informações presentes em laudos médicos para uma base de dados (Honorato, Cherman, Lee, Monard and Wu, 2007; Cherman, Lee, Honorato, Fagundes, Góes, Coy and Wu, 2007; Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). Inicialmente, em Cherman, Lee, Honorato, Fagundes, Góes, Coy and Wu (2007) foi proposta a versão do PMLM que utiliza uma estrutura de dados denominada Dicionário de Conhecimento (DC) para o mapeamento de laudos. Essa estrutura contém RM que representam possíveis combinações de termos em frases de cada laudo para o preenchimento da base de dados. Essas RM são geralmente apresentadas na forma local-característica-subcaracterística e/ou local-característica, onde: • Local: corresponde aos termos que descrevem uma porção anatômica do corpo humano; • Característica: equivale às palavras que caracterizam possíveis anormalidades ou outras informações importantes à respeito de um determinado local; • Subcaracterística: representa as informações complementares de uma determinada característica. No caso do DC, essas regras são representadas de modo sequencial, em que cada local 27 Figura 3.1: Exemplo de transcrição manual de um laudo textual artificial da seção de esôfago para uma base de dados. descreve uma lista de característica e cada característica pode possuir uma lista de subcaracterísticas, como ilustrado na Figura 3.2, em que Li é uma lista de locais, Li Cj é a lista de características de Li , Aj é o atributo que é preenchido caso seja encontrada a sequência Li Cj no laudo, Vj é o valor do atributo Aj , Li Cj Sk é subcaracterística de Li Cj , Ask é o atributo que é preenchido caso seja encontrado no laudo a sequência Li Cj Sk no laudo e V sk é o valor do atributo Ask . Entretanto, o DC apresenta pouca flexibilidade para a representação do conhecimento e a descrição de RM, dificultando a elaboração de regras que apresentam maior complexidade e completitude 1 , tornando indispensável a construção de novas estruturas de DC e especialmente, a realização de modificações no método para adaptá-lo ao novo esquema de DC para o mapeamento de laudos que não tenham sidos mapeados anteriormente. Com a finalidade de melhorar a representação do conhecimento presente em laudos textuais, em Costa, Ferrero, Lee, Coy, Fagundes and Chung (2009) foi apresentada uma proposta inicial de uma variação do PMLM com o objetivo de substituir o DC por uma ontologia para aumentar a flexibilidade na representação do conhecimento e facilitar o reuso dessa estrutura 1 Possibilidade de inclusão de maior quantidade de informações relevantes em uma única regra. 28 Figura 3.2: Estrutura do Dicionário de Conhecimento (Spolaôr, Lee, Cherman, Honorato, Fagundes, Góes, Coy and Chung, 2007). para a construção de outras ontologias sem a necessidade de reconstruí-la e sem a necessidade da alteração do algoritmo de mapeamento para adaptá-lo a essas estruturas. Em Wu, Coy, Lee, Fagundes, Ferrero, Machado, Maletzke, Zalewski, Leal, Ayrizono and Costa (2010) e Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung (2011), foi proposta a versão atual do PMLM. Entretanto, todas as técnicas aplicadas nesse processo devem ser executadas manualmente e separadamente por intermédio do uso de comandos computacionais, dificultando a aplicação do método por profissionais que não sejam da área computacional. Por exemplo, para a construção de Conjuntos de Frases Únicas (CFU) e o pré-processamento de laudos textuais, o usuário deve executar de forma manual os arquivos escritos na linguagem Perl utilizando instruções específicas por meio de interpretadores dessa linguagem. Outro exemplo é a realização do mapeamento desses laudos, para a qual é necessária a execução manual do método por meio de uma Máquina Virtual Java (MVJ), o qual é executado com o uso de instruções computacionais. Ainda, a construção das estruturas como a lista de stopwords (stoplist) e o Arquivo de Padronização (AP), que são apresentadas na Seção 3.3, é realizada manualmente com o uso de estruturas XML. A organização manual de stopwords e de Regras de Padronização (RP) em estruturas XML se apresenta como uma atividade altamente repetitiva e custosa, pois as suas informações devem ser organizadas de forma padronizada e hierárquica por intermédio de marcadores, podendo acarretar na representação errônea das mesmas e influenciar no desempenho do pré-processamento e do mapeamento de laudos médicos (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Para a construção de ontologias, podem ser utilizadas ferramentas computacionais de uso gratuito para a representação das RM, como o Protégé (Gennari, Musen, Fergerson, Grosso, Crubzy, Eriksson, Noy and Tu, 2003). No entanto, o uso dessa ferramenta requer treinamento e o conhecimento da linguagem de representação de ontologias denominada OWL (Smith, Welty 29 and McGuinness, 2004) por parte de seus usuários, tal como para a elaboração de RM e de atributos é exigido grande esforço. 3.3 Primeira Fase do PMLM Nessa etapa são aplicadas técnicas de processamento de textos em um conjunto de laudos textuais digitais com a finalidade de identificar padrões relevantes que são representados por meio de um Arquivo de Padronização (AP). Em seguida, os padrões identificados nos laudos são analisados em conjunto com profissionais da área médica e da área computacional para definir os atributos da tabela atributo-valor (base de dados estruturada) e as RM que irão compor a ontologia para a representação do conhecimento presente em laudos médicos (Cherman, Spolaôr, Lee, Costa, Fagundes, Coy and Wu, 2008; Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). Na Figura 3.3 é apresentada a primeira fase do método de mapeamento de laudos. Figura 3.3: Primeira fase do PMLM baseado em ontologia (Modificado de Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu (2013)). Com base na Figura 3.3, nas seções seguintes são apresentadas as técnicas de processamento de textos utilizadas no PMLM, bem como são abordadas a construção do AP, da tabela atributo-valor e da ontologia. 30 3.3.1 Construção do Conjunto de Frases Únicas A identificação de frases únicas consiste na extração de todas as sentenças distintas existentes em um conjunto de laudos médicos. Essa técnica é aplicada de forma sequencial em três passos (Cherman, Lee, Honorato, Fagundes, Góes, Coy and Wu, 2007): 1. Concatenação de todas as frases presentes no conjunto de laudos em um único arquivo; 2. Ordenação alfabética das frases; 3. Eliminação de frases redundantes, restando apenas um exemplo para cada frase. Após a aplicação dessa técnica, é gerado o Conjunto de Frases Únicas (CFU). Na Figura 3.4 é ilustrado graficamente o processo de identificação de frases únicas. Figura 3.4: Processo de identificação de frases únicas (Cherman, Lee, Honorato, Fagundes, Góes, Coy and Wu, 2007). 3.3.2 Normalização do Conjunto de Frases Únicas O desempenho da aplicação de métodos de processamento de textos pode ser influenciado pela simples variação de um caracter em um determinado termo. Por exemplo, os termos Japão, japão, Japao e japao podem ser considerados distintos por métodos de processamento de textos devido à variação de um ou mais caracteres, como a presença ou a ausência de acentuação e de caracteres maiúsculos ou minúsculos. Nesse sentido, para evitar problemas de variações de um mesmo caractere, cada termo presente no CFU é normalizado com o objetivo de substituir caracteres maiúsculos por caracteres minúsculos e caracteres com presença de acentuação por caracteres sem acentuação (Cherman, 31 Lee, Honorato, Fagundes, Góes, Coy and Wu, 2007). Na Figura 3.5 é apresentado um exemplo de aplicação da normalização em um fragmento de CFU. Figura 3.5: Normalização de um exemplo de CFU. 3.3.3 Construção do Arquivo de Padronização Após a construção e a normalização do CFU, é possível identificar algumas informações que podem ser padronizadas, como termos semelhantes ou frases que apresentam as mesmas informações de maneiras distintas. Assim, em conjunto com especialistas do domínio é iniciada a construção do AP. Esse arquivo é uma estrutura de dados representada por meio da linguagem de marcação XML utilizada para uniformização de laudos textuais com o objetivo de reduzir a complexidade de cada frase presente nesses laudos, de modo que seja compatível com as RM presentes em uma ontologia. Essa uniformização é realizada por intermédio da substituição de termos que apresentam o mesmo significado ou em formato inadequado por um sinônimo ou um conjunto de sinônimos definidos como sendo mais adequados que estão descritos no AP. Por exemplo, a frase "esôfago com presença erosões", que descreve uma possível anormalidade presente em um tecido biológico, pode ser substituída pelo sinônimo definido como "esôfago anormal". Também, podem ocorrer frases que apresentam mais de uma característica, como "calibre distensibilidade normais", na qual são descritas duas características: calibre e 32 distensibilidade, que são classificadas como normais. Por meio da aplicação de padronização nessa frase, a mesma pode ser substituída por duas outras frases, como "calibre normal" e "distensibilidade normal". Na Figura 3.6 é apresentado um exemplo de estrutura do AP, onde <pattern> é o marcador que representa o cabeçalho do AP, number é o número de Regras de Padronização (RP) presentes no AP, <synonym> é o marcador que representa uma RP, n é o número de termos que irão substituir um determinado termo, <old> é o marcador que constitui um termo a ser padronizado e <new> é o marcador que representa um novo termo que substituirá o termo representado no marcador <old>, caso seja encontrado em um laudo textual durante a aplicação do AP. Figura 3.6: Exemplo de estrutura do Arquivo de Padronização. Para a construção de um AP, podem ser utilizadas Expressões Regulares (ER) 2 com a finalidade de identificar sequências de caracteres importantes para a padronização de termos, como espaços em branco excedentes entre palavras, sequência excedente de um determinado caractere, ou termos que ocorrem raramente em frases (Honorato, Cherman, Lee, Wu and Monard, 2007). Por exemplo, no padrão "ponto[s]*\s*esbranquicado[s]*" (Figura 3.6), a expressão regular "[s]*" aponta a possibilidade de haver zero ou mais vezes a presença do caractere "s" em uma determinada parte de uma palavra e a expressão regular "\s*" aponta a possibilidade de haver zero ou mais vezes a presença de espaços em branco. Nesse contexto, a aplicação de outras técnicas de processamento de textos, como as apresentadas nas próximas seções, pode gerar termos ou frases diferentes, aumentando as possibilidades para desenvolvimento de RP. Desse modo, a construção do AP é continuada no decorrer da aplicação da primeira fase do PMLM, à medida que são identificadas informações que podem ser uniformizadas. 2 Expressão regular é uma sequência de caracteres que formam um padrão a ser identificado em uma frase ou uma palavra, por exemplo na forma de operações "busca e substituição". 33 3.3.4 Remoção de Stopwords Esse método tem a finalidade de reduzir o tamanho de frases por meio da eliminação de stoptwords (Makrehchi and Kamel, 2008), que são termos considerados irrelevantes, ou seja, não são necessários para a compreensão de frases. É importante notar que as stopwords são dependentes de contexto. Os exemplos mais comuns incluem tais como pronomes, preposições, artigos, entre outros. Nesse método, os stopwords compõem uma lista denominada stoplist, que é utilizada no processamento do CFU e de laudos durante a remoção desses termos. A stoplist é construída em conjunto com especialistas do domínio e assim como AP, é representada por intermédio da linguagem de marcação XML. Na Figura 3.7 é apresentado um exemplo de stoplist, onde <stopwords> é o marcador que representa a lista de termos considerados irrelevantes, number é o número de stopwords presentes na stoplist e <stopword> é o marcador que representa um stopword. Figura 3.7: Exemplo de stoplist. 3.3.5 Aplicação de Stemming O método de aplicação de stemming tem o objetivo de reduzir cada termo para o seu radical, eliminando diferentes inflexões da mesma palavra (Hull, 1996). Radical ou morfema é a parte invariante de uma palavra que explicita o significado da mesma, isto é, o sentido de um termo é mantido mesmo sem prefixo e/ou sufixo (Michaelis, 2009). Assim, stemming é aplicado com o intuito de identificar e eliminar frases redundantes, pois muitas sentenças podem ser consideradas distintas por causa da variação de uma palavra, por exemplo, mucosa terço distal erosão e mucosa terço distal erosões representam uma mesma observação, mas 34 estão escritas de formas diferentes. Ao aplicar stemming nessas frases, obtém-se muc terç dist eros para ambos os casos. Nesse sentido, na literatura foram propostos diversos métodos para a aplicação de stemming, dos quais se destaca o Stemmer de Porter (Porter, 1997), que é um algoritmo de remoção de sufixos de palavras em inglês. Nesse algoritmo, a remoção de sufixos é exclusivamente baseada em regras, sem o uso de outras estruturas para realização de operações de busca, tais como listas de exceções e/ou dicionários de dados. Essas regras são escritas na forma S1 → S2 , em que o sufixo S1 é substituído por S2 . Por exemplo, a regra ”ico” → ¨¨ elimina os sufixos de palavras terminadas com "ico", como a palavra médico, que é transformada em méd. Com base no Stemmer de Porter, foram desenvolvidos métodos de aplicação de stemming para a remoção de sufixos de palavras escritas em outros idiomas. Em (Orengo and Huyck, 2001), foi proposto um método de aplicação de stemming em termos escritos em português, o qual foi implementado pelo grupo de pesquisa do LABI para ser utilizado no PMLM. Esse método é aplicado em oito passos, que são apresentados a seguir: 1. Transformação de termos plurais para singular; 2. Conversão de substantivo feminino para masculino; 3. Redução de advérbio para verbo infinitivo ou adjetivo masculino singular; 4. Transformação de substantivo diminutivo/aumentativo para singular; 5. Remoção de pronomes; 6. Eliminação de sufixos de verbos; 7. Exclusão da última vogal; 8. Remoção de acentuação. No PMLM, os passos 3 e 8 não são necessários para o processamento de termos, pois já são aplicados anteriormente nos métodos apresentados nas Seções 3.3.2 e 3.3.4, respectivamente. Na Figura 3.8 é ilustrado graficamente um exemplo de aplicação de stemming em um conjunto de frases normalizadas e sem a presença de stopwords. No entanto, a aplicação de stemming pode acarretar, em alguns casos, na perda da legibilidade de termos, dificultando a compreensão de algumas palavras. Também, a redução dos termos para o seu radical pode conduzir eventualmente a uma interpretação semântica incorreta devido à existência de termos com significados diferentes, mas com radicais iguais (Fuller and Zobel, 1998). Um exemplo disso são as palavras média e médico que tem o mesmo radical méd, mas os significados são distintos. 35 Figura 3.8: Exemplo de aplicação de stemming. Desse modo, com a finalidade de amenizar esses problemas de representação do conhecimento, neste trabalho também é proposta a substituição do método de stemming pela técnica de aplicação de lematização, que é apresentada na próxima seção. 3.3.6 Aplicação de Lematização Laudos textuais médicos contém um vasto vocabulário de termos, apresentados na literatura médica, para descrição de procedimentos médicos, diagnóstico de enfermidades e outras informações. Entretanto, há termos que se diferenciam apenas morfologicamente, mas possuem o mesmo significado (Ananiadou and Mcnaught, 2005). Essa variedade morfológica aumenta a complexidade das informações presentes em laudos médicos, dificultando a aplicação de métodos e de ferramentas computacionais para a análise desses dados. Para amenizar a complexidade dessas informações, podem ser aplicadas técnicas de lematização (lemmatization) com a finalidade de reduzir a variabilidade de termos (Abacha and Zweigenbaum, 2011; Liu, Christiansen, Jr. and Verspoor, 2012). A lematização tem como objetivo transformar morfologicamente cada termo para a sua forma canônica, denominada lema, que é a forma simplificada de um termo, como o singular de um substantivo plural, a forma infinitiva de um verbo conjugado, o masculino do substantivo feminino, entre outros. Assim, a lematização consiste em um processo de redução de termos onde diferentes variações morfológicas de uma palavra são transformadas para um lema base 36 comum, reduzindo o número total de termos distintos (Chrupala, 2006; Jongejan and Dalianis, 2009). Esse processo pode ser realizado por meio da busca em um Dicionário de Lemas (DL) e/ou do uso de Regras de Lematização (RL). O DL consiste em uma estrutura de dados em que são registradas palavras não canônicas e os seus respectivos lemas (Branco and Silva, 2007). As RL tem como objetivo substituir afixos de termos não canônicos por afixos que os tornam canônicos (Nunes, 2007). Os verbos na língua portuguesa em forma canônica, por exemplo, geralmente possuem sufixos "ar" (chamar, trabalhar, conversar), "er" (poder, torcer, crescer), "ir" (pedir, surgir, sorrir), "or" (repor, transpor) ou "ôr" (pôr). Neste caso, o método de lematização substitui os sufixos dos verbos conjugados, como os sufixos de verbos "ou" (agonizou), "rá" (terminará), "ei" (estudei) ou "ado" (recortado) são substituídos pelo su?xo "ar" (agonizar, terminar, estudar, recortar), por um dos cinco sufixos apresentados anteriormente usando RL. Na Figura 3.9 é apresentado um modelo de conjunto de RL para processamento de verbos e um exemplo de aplicação para cada RL exibida. Figura 3.9: Exemplo de conjunto de regras para lematização de verbos. A RL de número dois apresentada na Figura 3.9, por exemplo, tem como finalidade substituir sufixos de verbos conjugados para o tempo passado que terminam com ado pelo sufixo ar, transformando esse verbo para a sua forma infinitiva. Assim, uma regra pode englobar um grande número de lemas, não sendo necessário listá-los explicitamente em um lista, como ocorre em caso de lematizadores que utilizam DL (Branco and Silva, 2007). No entanto, para cada RL pode haver exceções que devem ser tratadas de modo que evite as transformações errôneas de termos, como na regra "ado"→ "ar", a qual é aplicada em verbos, pois, existem palavras terminadas com o sufixo ado que não são verbos, tais como: reinado, gado, lado, entre outros. Para a transformação de termos na sua forma canônica em uma determinada linguagem, existem dois processos principais que podem ser utilizados para isso: o derivativo e o inflexional (Kanis and Skorkovská, 2010). No processo derivativo, os termos são normalizados de acordo com a sua classe morfológica, por exemplo, as palavras diagnosticou e diagnosticará são derivadas do verbo diagnosticar. No processo inflexional, os termos são normalizados conforme outras classes morfológicas, como o termo diagnosticadamente. Nesse contexto, sistemas computacionais avançados de processamento textos que aplicam a técnica de lematização para transformação de dados utilizam RL construídas manualmente (lematizador manual) ou automaticamente (lematizador automático). O lematizador manual utiliza DL e/ou RL construídos manualmente para processamento de termos. O lematizador 37 automático constrói RL e/ou DL automaticamente durante o treinamento do lematizador a partir de conjuntos de dados, que são representados em pares (palavra não simplificada – lema). Nessa abordagem, a construção de RL é baseada na busca de maiores sub-palavras comuns em termos não canônicos e lemas (Jongejan and Dalianis, 2009). Assim como stemming, na literatura também foram propostas várias abordagens para a lematização de palavras escritas em diversos idiomas. Por exemplo, em Juršič, Mozetič and Lavrač (2007) é apresentado um sistema denominado LemmaGen para a construção automática de lematizadores, que foi aplicado em conjuntos de termos escritos em idiomas como alemão, búlgaro, esloveno, estoniano, espanhol, francês, húngaro, inglês, italiano, romeno, sérvio e tcheco. Para a geração de lematizadores, esse sistema utiliza o algoritmo de aprendizado denominado Ripple Down Rule (RDR) (Plisson, Lavrac, Mladenic and Erjavec, 2008), que tem a finalidade de construir RL automaticamente a partir do processamento de textos. Após a elaboração do conjunto de RL, novas regras podem ser adicionados ao sistema na medida em que novos exemplos de termos são avaliados. Em outro trabalho, foi proposto um algoritmo de lematização baseado em regras para processamento de termos nominais escritos no idioma português utilizando listas com quantidade mínima de palavras (Branco and Silva, 2007). Esse algoritmo é baseado no método proposto por Porter (1997), sendo que ao invés de remover os sufixos presentes nos termos, os mesmos são substituídos por outros sufixos definidos nas RL. Também, nesse algoritmo é utilizado um conjunto de regras para desfazer mudanças nas palavras em casos de exceções para a aplicação de determinadas regras. Desse modo, a lematização proporciona os mesmos benefícios da aplicação de stemming, mas tem as vantagens de facilitar a compreensão dos resultados do processamento e de possibilitar a manutenção da semântica dos termos processados (Korenius, Laurikkala, Järvelin and Juhola, 2004). 3.3.7 Definição dos Atributos da Tabela Atributo-Valor e da Ontologia Após a aplicação do pré-processamento, os CFU resultantes são analisados em conjunto com especialistas do domínio e utilizados para especificar os atributos e seus possíveis valores que irão compor a base de dados (tabela atributo-valor) e serão aplicados para a representação de padrões relevantes que se encontram em laudos textuais, bem como são elaboradas as RM que serão aplicadas com a finalidade de mapear esses padrões para uma base de dados. Os atributos e as RM são representados por intermédio de uma ontologia, que é uma estrutura de dados utilizada para representar o conhecimento de um determinado domínio (Gruber, 2009), conforme apresentado no Capítulo 3. Nesse sentido, o uso de ontologias possibilita a definição de esquemas flexíveis para a descrição e a classificação de termos presentes em laudos textuais médicos, bem como a repre- 38 sentação dos atributos da tabela atributo-valor e das RM. Essas regras definem as combinações de termos para o preenchimento de cada atributo com valores definidos como possíveis para o preenchimento de cada atributo. Conforme mencionado, as RM geralmente são estruturadas para interpretar sentenças com os termos apresentados sequencialmente na forma: • Local: corresponde aos termos que descrevem uma porção anatômica do corpo humano; • Característica: equivale às palavras que caracterizam possíveis anormalidades ou outras informações importantes à respeito de um determinado local; • Subcaracterística: representa as informações complementares de uma determinada característica. Em laudos médicos, cada frase pode ser organizada na sequência local-característica ou local-característica-subcaracterística. Por exemplo, na frase esôfago com úlcera de 8 mm, o esôfago é uma porção anatômica (local), a úlcera é uma anormalidade observada no esôfago (característica) e o termo 8 mm é a extensão da úlcera (subcaracterística). Na Figura 3.10 é ilustrado um exemplo de esquema de ontologia para a representação de atributos e de RM: • Thing: é a classe principal da maioria das ontologias e corresponde a todos os indivíduos representados por essas estruturas; • Atributo: é a classe responsável por agrupar todos os atributos de uma tabela atributovalor e é dividida em duas subclasses: – Nome_atributo: é a classe que representa o nome do atributo; – Tipo_atributo: indica os valores possíveis para o atributo. • Termo: constitui os termos que podem ser encontrados em laudos textuais e é composta por duas classes: – Região: que descreve as porções anatômicas do corpo humano; – Observações: determina as informações sobre uma região do corpo humano. Essa classe é divida em duas classes: ∗ Característica: equivale às descrições sobre uma região; ∗ Subcaracterística: representa as informações complementares sobre uma característica. Geralmente, os atributos representados por uma ontologia são nomeados de modo que seja facilitada a identificação dos mesmos, adotando padrões de nomenclatura local_característica, 39 Figura 3.10: Exemplo de esquema de ontologia para mapeamento de laudos médicos. local_característica_subcaracterística ou outros formatos que sejam compatíveis com a RM. Nesse sentido, a relação local-característica pode gerar no máximo um atributo e a relação local-característica-subcaracterística pode gerar no mínimo dois atributos. Por exemplo, na frase esôfago com úlcera de 8 mm, podem ser definidos dois atributos para compor a tabela atributo-valor: "esofago_ulcera", que consta presença ou ausência de úlcera no esôfago, ou seja, os valores desse atributos são booleanos (verdadeiro ou falso); e "esofago_ulcera_extensoa", que representa a extensão da úlcera no esôfago, isto é, os valores devem ser numéricos. 3.4 Segunda Fase Na Figura 3.11 é ilustrada a segunda fase do processo de mapeamento, que é aplicada sequencialmente na seguinte forma: primeiramente é selecionado o conjunto de laudos a ser processado, podendo opcionalmente ser escolhido o conjunto utilizado na primeira fase. Em seguida, as técnicas selecionadas para o processamento de textos como normalização, remoção de stopwords, stemming e/ou padronização são aplicadas nesses laudos com a finalidade de 40 uniformizá-los, reduzindo a complexidade de suas sentenças. Após, em cada laudo é aplicado o algoritmo de mapeamento com o auxílio de uma ontologia, preenchendo a tabela atributo-valor. Figura 3.11: Segunda fase do PMLM baseado em ontologia (Modificado de Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu (2013)). Essa etapa tem como propósito preencher a tabela atributo-valor, definida anteriormente com os dados contidos no conjunto de laudos textuais digitais. Nessa etapa, o processamento é realizado automaticamente, pois não há interação com o usuário, sendo necessária apenas a escolha do conjunto de laudos a serem processados e o uso das estruturas definidas na etapa anterior, como a stoplist e o AP para a uniformização dos laudos e a ontologia para a realização do mapeamento com base nas RM definidas (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Essa transcrição é realizada por meio de um algoritmo especializado, que processa cada frase dos laudos mediante o casamento de padrões, utilizando RM representadas em uma ontologia. Assim, para cada laudo é gerado um registro com valores de cada atributo presente na ontologia. Esses registros compõem a tabela atributo-valor, representando o conjunto de laudos estruturadamente (Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2010). O método de mapeamento de laudos por meio de ontologias é aplicado em três etapas (Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2009), as quais são apresentadas a seguir: 1. Divisão de laudos em sentenças: cada laudo textual selecionado para a aplicação do método de mapeamento é dividido em um conjunto de sentenças; 2. Processamento das sentenças: cada termo presente nas sentenças é processado e vinculado a uma propriedade de acordo com a sua classificação na ontologia. Caso um termo 41 não seja identificado na ontologia, o mesmo é incluído em uma lista de termos não processados. Após, as palavras identificadas são associadas com as RM, definindo quais são os atributos a serem preenchidos e os seus respectivos valores; 3. Preenchimento de atributos não-mapeados: após o processamento de cada sentença, os atributos que não foram mapeados são preenchidos com o caractere traço (”-"). 3.5 Considerações Finais O PMLM apresenta grande importância para a padronização e a representação de laudos textuais no contexto de aplicação da Mineração de Dados (MD) para a extração de padrões relevantes. Isso pode contribuir com a geração de novos conhecimentos, tais como a descoberta de fatores que aumentam o risco de enfermidades, a criação de novas técnicas para o diagnóstico de doenças, o desenvolvimento de novos medicamentos, a construção de modelos preditivos para auxiliar especialistas da área médica em tomadas de decisão, entre outros. Esse processo foi avaliado em trabalhos anteriores e apresentaram resultados considerados satisfatórios, tanto para a abordagem baseada em DC (Cherman, Lee, Honorato, Fagundes, Góes, Coy and Wu, 2007; Honorato, Cherman, Lee, Monard and Wu, 2007; Cherman, Spolaôr, Lee, Costa, Fagundes, Coy and Wu, 2008; Honorato, Cherman, Lee, Monard and Chung, 2008), quanto a baseada em ontologia (Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2009; Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2010). A ontologia se apresenta como uma estrutura de dados mais flexível e representativa para a aplicação do método de mapeamento de laudos médicos em relação ao DC. É possível observar essa característica na Figura 3.10, na qual no DC a relação local-característica e/ou local-característica-subcaracterística, bem como os atributos e seus respectivos valores são representados em uma única classe, o que se caracteriza como uma estrutura de dados com pouca flexibilidade para representação do conhecimento. Nesse sentido, caso seja necessária a descrição de RM mais complexa e/ou em outros formatos, pode ser necessária a alteração de toda a estrutura do DC ou a geração de um novo esquema. Com a substituição do DC por uma ontologia, o problema de representação do conhecimento é amenizado, pois cada tipo de termo é descrito por uma classe específica, facilitando o reaproveitamento dessa estrutura para a elaboração de RM em diversos formatos. No entanto, como apresentado anteriormente, todas as técnicas utilizadas no PMLM devem ser executadas manualmente e separadamente em todas as suas etapas, dificultando, principalmente, o seu uso por profissionais que não são da área computacional ou que não conheçam detalhadamente o processo. O desenvolvimento de um sistema computacional para automatizar e facilitar o uso do processo é portanto de grande valia. 42 Para a construção de um sistema confiável e com qualidade, é necessária a aplicação de abordagens sistemáticas e disciplinadas de engenharia de software. Sendo assim, no Capítulo 4 são apresentados métodos de engenharia de software que visam orientar na construção de sistemas computacionais. Capítulo 4 Desenvolvimento de Sistemas Computacionais 4.1 Considerações Iniciais Atualmente, os Sistemas Computacionais (SC) 1 apresentam grande importância no cenário mundial, sendo indispensável para os negócios, a ciência, a engenharia e a criação de novas tecnologias. O SC está embutido em diferentes domínios, como médico, militar, transporte, comunicação, industrial, entretenimento, entre outros. Esses sistemas são produtos resultantes da aplicação de processos de engenharia de software para a execução de um conjunto de instruções, que são realizados sequencialmente para a manipulação de informações (Pressman, 2011). A engenharia de software consiste em uma área da computação relacionada com a produção de software, focada na sua especificação, desenvolvimento e manutenção, definição e aplicação de tecnologias e métodos adequados, gerenciamento de projetos e outras atividades com a finalidade de garantir a organização, a produtividade e a qualidade na construção do software (Sommerville, 2009). O processo de desenvolvimento de software pode ser realizado por meio de vários modelos de processos que são aplicados de acordo com o tamanho da equipe de desenvolvimento, a complexidade dos requisitos, o nível de risco do projeto e o domínio do problema a ser resolvido (Pfleeger, 2004). Sendo assim, na Seção 4.2 são apresentados alguns conceitos e um exemplo de processo de software. Após, são apresentadas as principais tarefas dos processos de software, como a atividade de levantamento de requisitos (Seção 4.3). Na Seção 4.4 é apresentada a atividade de projeto de SC. Na Seção 4.5 é abordada a atividade de codificação dos requisitos de software e na Seção 4.6 são descritas algumas técnicas de testes de SC. 1 Neste trabalho, sistema, software e programa são considerados sinônimos. 43 44 4.2 Processo de Software O processo de software, também denominado ciclo de vida de software, consiste em um conjunto de atividades necessárias para a construção de um SC. Esse conjunto de atividades é executados de forma sequencial, gerando como produto final um SC. Atividade é uma fase do processo de software caracterizada como um grupo de tarefas imprescindíveis para atingir um objetivo amplo, como o planejamento da construção do programa. A tarefa é concentrada em um objetivo pequeno e bem definido, por exemplo, a escolha de tecnologias para o desenvolvimento da solução computacional (Pfleeger, 2004; Sommerville, 2009). Basicamente, um processo de software é constituído por cinco atividades (Pressman, 2011): • Comunicação: são realizadas reuniões em conjunto com os interessados no projeto para identificar e compreender as necessidades dos futuros usuários por meio do levantamento de requisitos para a definição das características que deverão ser atendidas pelo sistema; • Planejamento: são descritas as tarefas técnicas a serem desempenhadas, os riscos possíveis, os recursos necessários, o cronograma de trabalho e os resultados esperados; • Modelagem: são criados os modelos computacionais e/ou gráficos para facilitar a compreensão das necessidades do usuário e como as mesmas deverão ser atendidas; • Construção: é gerado o código-fonte do SC com base nas especificações do planejamento e nos modelos construídos, bem como são elaborados testes com o objetivo de identificar os erros na codificação; • Emprego: o SC é entregue aos usuários finais, que o avaliam e fornecem um feedback. Nesse sentido, o processo de software é aplicado de modo iterativo e interativo, no qual cada iteração do processo resulta em um incremento do SC. Sendo assim, é importante ressaltar que todos processos de software tem como entrada a definição das necessidades do usuário e como saída uma versão do programa. O ciclo de desenvolvimento de software é comumente repetido várias vezes, na medida em que o requisitos são incrementados, atualizados ou removidos (Pfleeger, 2004). Para oferecer suporte às atividades do processo de software no decorrer da execução do projeto, podem ser realizadas algumas atividades de apoio (Pressman, 2011), como: • Controle e acompanhamento do projeto, no qual é avaliada a evolução do desenvolvimento do projeto, tomando medidas necessárias para o cumprimento do cronograma de execução; • Administração de riscos, em que são avaliados possíveis problemas que possam afetar no resultado e/ou na qualidade do sistema; 45 • Garantia de qualidade, que conduz tarefas para garantir o desenvolvimento de software que atenda satisfatoriamente as especificações levantadas; • Revisões técnicas, na qual são avaliados todos os documentos da engenharia de software, também denominados artefatos, com o objetivo de identificar os possíveis erros para evitar problemas na aplicação das atividades seguintes; • Medição, que determina critérios para medir a qualidade e o progresso do SC, podendo ser utilizadas nas demais atividades do processo de software; • Gerenciamento de configuração, que tem o propósito de controlar os efeitos das mudanças ao longo da aplicação do processo; • Gerenciamento da reusabilidade, em que são definidos os critérios para o reuso dos artefatos e estabelecidos mecanismos para o uso dos componentes reutilizáveis; • Produção de artefatos, que define as tarefas necessárias para elaborar artefatos, como modelos, documentos textuais, diagramas, formulários, código-fonte, entre outros. No entanto, um único modelo de processo de software não é adequado para a aplicação em todos projetos de sistemas. Nesse sentido, os processos de software podem ser aprimorados mediante padronizações dos mesmos, que são denominados modelos de processo, os quais são representações abstratas do processo de software, representando-o em uma determinada perspectiva (Sommerville, 2009). O objetivo de um modelo processo de software é guiar, de modo sistemático, a aplicação das tarefas fundamentais para garantir a construção de um sistema que atenda aos objetivos do projeto e as necessidades dos usuários por intermédio da definição de um conjunto de tarefas a serem executadas, a entrada, a saída, as condições, a sequência e o fluxo de cada tarefa (Tsui and Karam, 2013). Assim, na literatura foram propostos vários modelos de processo de software, os quais são utilizados de acordo com o tipo e a complexidade dos requisitos, como o modelo ágil de desenvolvimento por prototipagem, que é apresentado seguir. Modelo de Desenvolvimento de Sistemas por Prototipagem Prototipagem é uma abordagem da engenharia de software para construção de soluções computacionais de modo ágil. Esse modelo se apresenta adequado quando os requisitos são considerados complexos e há a necessidade de maior participação dos usuários no processo de desenvolvimento do sistema (Pressman, 2011). Na Figura 4.1 é ilustrado o ciclo do modelo de desenvolvimento por prototipagem, que é constituído de cinco etapas: 1. Comunicação: é realizado o levantamento de requisitos por meio de reuniões em conjunto com os interessados no projeto para definir as funcionalidades que deverão ser exercidas pelo novo SC; 46 2. Plano rápido: os requisitos levantados na etapa anterior são analisados e estudados com a finalidade de verificar a viabilidade do desenvolvimento de um software. Em seguida, é realizado um planejamento rápido para a construção de uma solução computacional. Assim, são estruturadas as necessidades dos usuários por intermédio da interpretação dos requisitos e são estudados os métodos e tecnologias existentes que podem prover apoio no desenvolvimento do software; 3. Modelagem: a partir das especificações levantadas nas etapas anteriores, são criados modelos com a finalidade de facilitar a compreensão dos requisitos; 4. Construção do protótipo: o software é implementado por meio de uma linguagem de programação apoiado por um ambiente de desenvolvimento e de outras ferramentas computacionais. Durante e após a codificação, são realizados testes no sistema com a finalidade de identificar e corrigir erros que podem afetar o desempenho do processamento, a integridade e a segurança dos dados; 5. Avaliação e feedback: o SC é entregue aos usuários finais, os quais verificarão se foram atendidos satisfatoriamente os requisitos levantados. Após a avaliação, os usuários fornecem feedback com sugestões definindo os requisitos que devem ser incluídos, removidos e/ou alterados. Figura 4.1: Modelo de desenvolvimento por prototipagem (Modificado de Pressman (2011)). Na Figura 4.1, é possível observar que a construção do sistema é iniciada com um conjunto simples de requisitos. No decorrer da execução do ciclo de desenvolvimento, os requisitos são ajustados e detalhados. O planejamento para a construção da solução computacional é aprimorado por meio do desenvolvimento de modelos. Ao final, o SC é implementado utilizando uma linguagem de programação e após a realização de testes, o mesmo é entregue aos usuários para avaliação e validação. Assim, cada atividade do ciclo pode ser repetida inúmeras vezes na medida em que novos requisitos são levantados e erros são encontrados (Pfleeger, 2004). 4.3 Levantamento de Requisitos O levantamento de requisitos é realizado por meio de reuniões em conjunto com usuários e/ou outros interessados no projeto com o objetivo de estabelecer as necessidades que devem ser 47 atendidas em um SC (Pfleeger, 2004). Essa fase de construção de software ocorre no início do ciclo de desenvolvimento, podendo ser repetidas mais de uma vez, até atender satisfatoriamente as especificações levantadas, dependendo do modelo de construção de sistema abordado. Na engenharia de software, requisitos são descrições das funcionalidades que o programa deve oferecer, as quais são documentadas e revisadas no decorrer do desenvolvimento do projeto do SC (Sommerville, 2009). Essas descrições podem ser do tipo explícito, normativo ou implícito (Filho, 2009). Os requisitos explícitos são descritos, em linguagem natural, em documentos textuais. Os requisitos normativos descrevem as aplicações que devem seguir normas impostas por leis, padrões, regras, entre outros. Os requisitos implícitos são as funções esperadas por clientes que não são documentadas, como tratamento de segurança de dados, desempenho, entre outros. Dessa maneira, os requisitos são geralmente classificados em dois tipos: funcionais e não-funcionais (Pressman, 2011; Sommerville, 2009). Os requisitos funcionais são relacionados diretamente com as funcionalidades do sistema, isto é, definem a entrada de dados, o comportamento do SC e a saída de dados. Esses requisitos incluem o processamento de dados, a realização de cálculos, entre outras aplicabilidades que o programa deverá atender. Os requisitos não-funcionais descrevem as restrições de uso do software, tais como segurança, desempenho, tecnologias auxiliares, entre outros. Nesse contexto, o final dessa fase resulta em um conjunto de requisitos. Entretanto, no decorrer da construção do software podem haver mudanças e alternativas na medida em que ocorrem diálogos com os usuários durante todas as etapas de cada ciclo de desenvolvimento. Com isso, é importante ressaltar que, para a produção bem sucedida de uma solução computacional é imprescindível a compreensão detalhada dos requisitos, sendo que um levantamento deficiente pode influenciar negativamente nas fases seguintes da elaboração do sistema (Pfleeger, 2004). 4.4 Projeto de Software Antes da elaboração do projeto de software, os requisitos levantados inicialmente são analisados e estudados detalhadamente com a finalidade de verificar a viabilidade tecnológica e econômica para o desenvolvimento de uma solução computacional que atenda as especificações desses requisitos (Pressman, 2011). Caso seja viável a construção, é iniciada a elaboração do projeto do SC, bem como são definidas as tecnologias necessárias para esse fim. O projeto de software tem o objetivo de traduzir os requisitos para documentos em formatos textuais e/ou gráficos, definindo como o sistema deve ser desenvolvido. Assim, são definidas as tarefas que serão desempenhadas pelo programa, os riscos possíveis do desenvolvimento do projeto, a arquitetura do SC, os elementos da interface, os recursos necessários para a implementação da solução computacional, o cronograma de execução do trabalho, entre 48 outras (Braude, 2005). Para melhor descrição dos requisitos do programa, cinco modelos de projeto podem ser aplicados simultaneamente (Pressman, 2011): • Projeto de dados/classes: definição de modelos de dados, também denominado estrutura de dados, que serão manipulados pelo sistema; • Projeto arquitetural: definição dos tipos de relacionamentos entre modelos de dados, a arquitetura do SC e os padrões de projeto que podem ser aplicados para atender as especificações levantadas anteriormente; • Projeto de interface: tem a finalidade de determinar o modo de interação da solução computacional com outros softwares e com os usuários que o utilizarão; • Projeto em nível de componente: descreve o comportamento de cada elemento do SC, isto é, os algoritmos para o processamento de dados que ocorre em um elemento e/ou em uma interface que executa todas as operações desses componentes; • Projeto em nível de implantação: determina os recursos tecnológicos necessários para a implantação do sistema, como o ambiente computacional físico e os subsistemas que irão interagir com o novo software. Nesse contexto, o gerenciamento de projetos consiste em uma tarefa essencial para a construção de software e tem o propósito de assegurar que essa tarefa seja realizada corretamente. Para o gerenciamento de projetos de sistemas, são comumente executadas as seguintes atividades: preparação da proposta; planejamento do desenvolvimento; elaboração do cronograma; estimativa de custos e de riscos; monitoração e revisões de projeto; seleção e avaliação de integrantes; preparação de relatórios; e apresentações dos resultados (Sommerville, 2009). O gerenciamento de projetos pode ser aplicado em quatro fases (Tsui and Karam, 2013), que são apresentadas na Figura 4.2. Figura 4.2: Processo de gerenciamento de projetos (Modificado de Tsui and Karam (2013)). 49 Na fase de planejamento, são determinados os resultados esperados do projeto, o cronograma de execução, os recursos necessários, as metas a serem alcançadas, as medidas de qualidade e os riscos do projeto. Na fase de organização, são definidos os mecanismos para o monitoramento das tarefas e do cronograma, os recursos imprescindíveis para o desenvolvimento do projeto, os meios para mensurar e monitorar os objetivos e as medidas para listar, acompanhar e minimizar os riscos. Na fase de monitoramento é acompanhada a execução do projeto para verificar se a construção do mesmo está progredindo como planejado. Essa fase é realizada por meio da coleta de informações do projeto, da análise dos dados coletados e da apresentação das informações por intermédio de reuniões com os envolvidos. Na fase de ajuste, são realizadas as alterações no projeto para adequá-lo com os novos requisitos, os problemas encontrados durante a elaboração do software, entre outros. Também, outras técnicas e ferramentas podem ser utilizadas para o desenvolvimento de projetos de software, como a Unified Modeling Language (UML) 2 , que é uma linguagem padrão de modelagem, de especificação e de documentação de SC, comumente utilizada para esse fim. Nessa linguagem, são desenvolvidos diversos diagramas, dos quais cada tipo de diagrama é utilizado para representar diferentes partes e detalhes do SC com a finalidade de eliminar ou minimizar possíveis erros de projeto (Miles and Hamilton, 2006). 4.5 Implementação A maioria dos projetos de engenharia de software tem o intuito de construir um SC funcional (Tsui and Karam, 2013). Nesse sentido, na etapa de implementação, os requisitos e os modelos computacionais são codificados por meio de uma linguagem de programação com suporte de um ambiente de desenvolvimento (Pressman, 2011). Para essa tarefa, existem várias linguagens de programação que são utilizadas para construção de programas de acordo com as necessidades dos usuários, como Java 3 , Ruby 4 , Python 5 , entre outras. A implementação de sistemas pode ser facilitada com o uso de ambientes de desenvolvimento e de outras ferramentas computacionais, auxiliando e automatizando a tarefa de geração de código-fonte. Durante a etapa de construção do programa, os desenvolvedores devem escrever o códigofonte de forma simples e compreensível, adotando padrões de programação das linguagens utilizadas para reduzir custos e facilitar as atividades de manutenção, de revisão e de reuso. Assim, para a codificação de softwares, alguns aspectos gerais de programação devem ser considerados, tais como: conjuntos de algoritmos que devem ser utilizados para atender os requisitos do usuário; entrada e saída de dados para o uso dos algoritmos; estruturas de controle para coordenar o fluxo de dados do sistema; estrutura de dados para organizar os algoritmos e simplificar a 2 http://www.uml.org/ http://www.java.net/ 4 http://www.ruby-lang.org/pt/? 5 http://www.python.org/ 3 50 construção do SC; revisões do código-fonte com a finalidade de aprimorá-lo; e reutilização de códigos-fonte desenvolvidos em outros projetos para facilitar a elaboração da solução computacional. Também, o código-fonte dever ser documentado para facilitar a compreensão da lógica interna do software, auxiliando nas manutenções futuras do mesmo (Pfleeger, 2004). De acordo com Tsui and Karam (2013), para uma boa codificação de sistemas, os desenvolvedores devem considerar as seguintes características: • Legibilidade: o código-fonte deve ser escrito de forma que facilite a sua leitura e compreensão por outros desenvolvedores; • Manutenibilidade: o código-fonte deve ser facilmente alterado e mantido; • Desempenho: os algoritmos devem ser produzidos de modo que a sua execução seja realizada o mais rápido possível; • Rastreabilidade: o código do sistema deve corresponder a um elemento de design, ou seja, garantir que o software seja desenvolvido corretamente; • Exatidão: o código-fonte deve ser escrito para fazer exatamente as tarefas para o qual foi construído; • Integralidade: todos os requisitos devem ser atendidos satisfatoriamente. Entretanto, uma codificação mal realizada e mal documentada pode implicar na geração de um software deficiente, mesmo funcionando corretamente, dificultando a realização de alterações, o reuso dos componentes de software em outros projetos e a compreensão da lógica interna por outros integrantes do projeto (Tsui and Karam, 2013). 4.6 Testes de Software O teste de software é um conjunto de tarefas projetadas antecipadamente para desempenhar as funcionalidades do sistema com o propósito de identificar erros que influenciam no funcionamento correto dos algoritmos, tal como na integridade e na segurança dos dados processados pelo programa (Pressman, 2011). A realização de testes em SC consiste em uma tarefa complexa e altamente custosa, representando cerca de 50% a 80% do custo total do desenvolvimento do projeto. Os testes de software são utilizados de forma controlada para verificar a concordância de suas funcionalidades em relação às especificações levantadas e expôr as suas falhas de forma antecipada à sua entrega ao usuário final (Sommerville, 2009). Nesse contexto, foram propostas várias abordagens para a avaliação de sistemas, as quais são divididas em testes dos tipos caixa-branca, caixa-preta e e caixa-cinza. O teste caixa-branca, 51 também denominado teste estrutural ou orientado à lógica, tem o objetivo de avaliar a lógica interna dos componentes de um determinado SC. O teste caixa-preta, igualmente denominado teste funcional, orientado a dados ou a entrada/saída, tem a finalidade de avaliar o comportamento do programa em relação à entrada de dados e são conduzidas por meio de uma interface gráfica. O teste caixa-cinza consiste na combinação das técnicas caixa-branca e caixa-preta para a avaliação do SC (Myers, Badgett, Sandler and Thomas, 2004; Sommerville, 2009; Tsui and Karam, 2013; Lewis, 2008). Geralmente, as avaliações de software são realizadas em várias etapas: teste de unidade, teste de integração, teste de sistema e teste de aceitação. Essas etapas são ilustradas na Figura 4.3 e apresentadas em seguida. Figura 4.3: Etapas do teste de software (Jung, 2012). O teste de unidade tem o intuito de avaliar isoladamente cada membro do SC. Essa abordagem é focada na lógica interna do processamento e nas estruturas de dados que envolvem um componente e pode ser aplicado em paralelo com outros testes de unidade (teste de integração). O planejamento do teste unitário pode ser realizado antes, durante e depois da codificação do sistema (Pressman, 2011). O teste de integração é uma técnica utilizada para identificar falhas de agregação dos membros de SC testados anteriormente, isto é, os componentes são combinados e avaliados em grupo. Esse teste tem o propósito de avaliar os requisitos funcionais, o desempenho e a modelagem da solução computacional para descobrir erros relacionados com a interface. Para 52 isso, foram propostas várias abordagens, das quais se destacam as técnicas bottom-up e topdown (Pfleeger, 2004). O teste bottom-up é uma abordagem incremental que avalia os elementos do programa hierarquicamente, começando com pequenos grupos de componentes combinados, nos quais são incrementados alguns elementos (unidades de componentes e/ou outros grupos) no decorrer da evolução dos testes, até que todos os componentes estejam integrados a um único grupo. O teste top-down é o inverso de bottom-up, ou seja, a avaliação é iniciada com todos os componentes integrados em um único grupo, o qual é fragmentado em pequenos grupos até que todas as falhas identificadas serem isoladas. O teste de sistema é aplicado para avaliar o SC como um todo por meio da execução de todas as suas funcionalidades, sob o ponto de vista do usuário final. Esse tipo de teste engloba diversos tipos de avaliações que são vantajosas para a construção de SC (Pressman, 2011), tais como: teste de recuperação, que é executado para forçar o programa de várias maneiras para falhar e verificar se a recuperação de falhas é realizada corretamente; teste de segurança, que é utilizado para examinar os métodos de proteção usados na solução computacional com o propósito de garantir que os dados dos usuários estejam protegidos de acessos indevidos; teste por estresse, que avalia o SC em situações anormais, como a demanda de recursos em termos de quantidade, frequência e/ou intensidades consideradas anormais; teste de desempenho, o qual é usado com o objetivo de assegurar que o sistema pode operar o volume necessário de dados, que é aumentado até o comportamento do SC ser considerado inaceitável e é realizado em todas as etapas de testes; e teste de disponibilização, que examina a operação do software em diferentes tipos de plataformas. O teste de aceitação é focado nas atividades que serão desempenhadas pelo usuário. Para isso, são definidos os critérios a serem considerados na validação por intermédio de um plano de avaliação que define os tipos de testes que serão conduzidos com o intuito de garantir que todos os requisitos sejam atendidos satisfatoriamente, todas as características comportamentais anormais sejam identificadas e que todos os dados originados pelo sistema sejam confiáveis e apresentados adequadamente. Nesse sentido, os testes de aceitação são realizados inicialmente por desenvolvedores em ambiente controlado e são caracterizados como testes alpha. Após a realização dos testes e correção dos erros identificados pelos desenvolvedores, o SC é entregue aos usuários finais para avaliarem as suas funcionalidades com a finalidade de identificar erros que não foram identificados pelos desenvolvedores. Essa avaliação é também conhecida como teste beta (Sommerville, 2009). Desse modo, os testes são realizados enquanto os erros forem encontrados e solucionados. Assim, quando as avaliações forem bem-sucedidas, o sistema é entregue aos usuários. Entretanto, podem ser necessárias algumas adaptações para o melhor aproveitamento e funcionamento da solução computacional, como o treinamento dos usuários e a aquisição de hardware e software (Laudon and Laudon, 2007). 53 4.7 Considerações Finais Para a construção de SC, o processo de software apresenta-se como uma abordagem de grande importância para o sucesso do projeto, o qual é uma ferramenta relevante para o desenvolvimento de uma solução computacional de qualidade, pois possibilita a organização das atividades a serem ministradas, o estudo e a análise dos riscos, o gerenciamento de equipes, a estipulação de custos, entre outros. Para o êxito e a entrega do sistema dentro do prazo estipulado, é necessário que cada atividade do processo seja realizada cuidadosamente, desde a iniciação até o final do projeto, de modo que garanta a entrega de um produto de qualidade satisfatória e que facilite a realização de manutenções futuras. Outro recurso importante para a construção de programas é o uso da UML, que facilita a compreensão e o registro exato dos requisitos por meio da elaboração de modelos e de diagramas. Neste trabalho foi utilizado o modelo ágil de desenvolvimento de sistemas por prototipagem devido à complexidade dos requisitos e a necessidade do envolvimento de especialistas do domínio para acompanhar a construção de um Sistema Computacional Colaborativo (SCC) com a finalidade de automatizar o Processo de Mapeamento de Laudos Médicos (PMLM). No Capítulo 5 são apresentadas as tecnologias que foram utilizadas para o desenvolvimento do SCC para a automatização do PMLM apresentado neste trabalho. 54 Capítulo 5 Ferramentas e Tecnologias 5.1 Considerações Iniciais Uma área tecnológica em crescente evolução é o de desenvolvimento de sistemas web devido à facilidade e a agilidade no seu uso, pois não são necessários computadores sofisticados, bem como é dispensável a instalação de softwares específicos e a configuração da máquina para utilizar um sistema web. Outra vantagem é a não ocupação de espaço no disco ou em outro dispositivo de armazenamento do usuário. Com essas características, o usuário pode acessar o sistema por meio de computadores, sendo necessário apenas que um navegador web como o c , ou o Google Chrome 3 esteja instalado na Mozila Firefox 1 , o Opera 2 , o Internet Explorer máquina do usuário e que haja acesso à Internet. Para a construção de sistemas web é necessário o uso combinado de diversos tipos de tecnologias, tais como: linguagens de programação, de marcação e de estilo; ambientes de desenvolvimento; frameworks; e infraestrutura física, como servidores, redes de computadores, entre outros. Para o uso dessas tecnologias, é imprescindível o conhecimento técnico por parte dos desenvolvedores para possibilitar a construção de sistemas web eficientes e que atendam às especificações de seus usuários, bem como deve ser considerado o uso de diferentes tipos de navegadores web, pois cada navegador possui características específicas que podem influenciar no funcionamento correto desses sistemas (Jung, 2012). Desse modo, neste capítulo são apresentadas as principais ferramentas e as tecnologias utilizadas pelo Processo de Mapeamento de Laudos Médicos (PMLM) e as que são necessárias para o desenvolvimento do Sistema Computacional Colaborativo (SCC) para automatizar a utilização do método. Nas Seções 5.2 e 5.3 são apresentadas algumas características das linguagens de programação Java e Ruby, respectivamente. Na Seção 5.4 é apresentado o principal framework da 1 www.mozilla.org/pt-BR/ www.opera.com/pt-br 3 www.google.com/intl/pt-BR/chrome/browser/ 2 55 56 linguagem Ruby que é aplicado na construção de sistemas web. Na Seção 5.5 é descrito um dos ambientes de desenvolvimento de softwares mais utilizados na atualidade por desenvolvedores de software. Na Seção 5.6 é apresentada a linguagem de programação comumente aplicada na elaboração de métodos de processamento de textos denominada Perl. Nas Seções 5.7 e 5.3 são descritas as linguagens de marcação HTML e XML. Na Seção 5.9 é apresentada a linguagem de estilo denominada CSS, que é comumente utilizada para a modelagem de layout de documentos HTML e XML. Na Seção 5.10 é explanada a linguagem de programação Javascript, que é frequentemente usada no tratamento de eventos relacionados com a interação de páginas web com usuários. 5.2 Linguagem de Programação Java Java é uma das linguagens de programação mais utilizadas para o desenvolvimento de Sistemas Computacionais (SC), devido à ampla variedade de recursos disponíveis (Deitel and Deitel, 2010). Essa linguagem, foi construída na década de 90 por desenvolvedores liderados por James Gosling, na empresa Sun Microsystems 4 . Diferentemente de outras linguagens, o código-fonte escrito em Java é traduzido para um formato intermediário de código, denominado bytecode, que é interpretado por uma Máquina Virtual Java (MVJ), a qual tem como finalidade converter os bytecodes para um código executável por máquinas, bem como gerenciar aplicações desenvolvidas na linguagem Java. Com a MVJ, os softwares escritos em Java podem ser executados em qualquer sistema operacional que contém uma MVJ instalada (Lindholm, Yellin, Bracha and Buckley, 2013). Assim, nessa linguagem podem ser destacadas algumas características: paradigma de programação orientado a objetos; independência de plataforma, isto é, o software desenvolvido nessa linguagem pode ser executado em qualquer sistema operacional; extensa biblioteca de ferramentas para auxiliar na construção de sistemas, recurso necessário para projetos que apresentam requisitos complexos para o seu desenvolvimento; simplicidade e eficiência para a construção de softwares, sem a necessidade do gerenciamento de memória por código, reduzindo possibilidades de erros de programação; desalocação automática de memória por meio do processo denominado coleta de lixo (garbage collector) (Deitel and Deitel, 2010). Para facilitar a construção de SC por intermédio da linguagem Java, foram desenvolvidas várias ferramentas e bibliotecas. Na Sun Microsytems, foi criado o pacote de ferramentas denominado Java Development Kit (JDK), que contém bibliotecas e outros recursos necessários para a escrita de código-fonte de softwares. Também, foi desenvolvido o Java Runtime Environment (JRE), o qual é uma biblioteca que inclui a MVJ e outros recursos para a execução de sistemas Java (Gosling, Joy, Steele and Bracha, 2005). 4 http://www.oracle.com/us/sun/index.html 57 Foram construídos também diversos ambientes de desenvolvimento, denominados Integrated Development Environment (IDE), que têm o propósito de reunir os principais recursos para a construção de softwares em Java, tais como JDK, JRE, entre outras ferramentas e bibliotecas (Boudreau, Glick and Spurlin, 2002). Um dos IDE mais populares entre os desenvolvedores para a implementação de SC em Java é o NetBeans 5 , que é apresentado na Seção 5.5. 5.3 Linguagem de Programação Ruby Ruby é uma linguagem dinâmica de código aberto focada na simplicidade e na produtividade para a elaboração de sistemas que foi criada em 1995 por Yukihiro "Matz" Matsumoto, o qual tinha como objetivo desenvolver uma linguagem de script mais poderosa do que Perl e mais orientada a objetos do que a linguagem Python 6 , combinando a programação funcional com a programação imperativa. Assim, a linguagem Ruby consiste na combinação das linguagens Perl, Smalltalk, Eiffel, Ada e Lisp. Atualmente, essa linguagem se encontra na versão c , GNU/Linux, Mac OS, Solaris, 2.0 e é disponível para diversas plataformas, como Windows entre outros (Metz, 2012). A linguagem Ruby apresenta as seguintes características: todos os elementos utilizados são considerados objetos, incluindo números e outros tipos de dados primitivos; o gerenciamento de memória é realizado de modo automático; a linguagem é dinâmica e forte, permitindo o uso de variáveis sem a necessidade de declará-las ou pré-determiná-las; possui sintaxe intuitiva, o que facilita a compreensão do código-fonte; utiliza caracteres especiais para determinar a condição de uma determinada variável, como "$" e "@", os quais indicam que as variáveis são globais e de instância, respectivamente; e a possibilidade de desenvolvimento de ferramentas e de disponibilizá-las em formato padrão de pacote de código, também denominado gem (Carlson and Richardson, 2006). Também, para a linguagem Ruby existem várias implementações alternativas, como o JRuby 7 , que foi escrito na linguagem de programação Java para funcionar em MVJ e possibilitar o uso dos recursos dessa linguagem sem a necessidade da instalação de gems e configuração do computador para viabilizar o uso de ferramentas e/ou outros recursos desenvolvidos nessa linguagem por sistemas construídos em Ruby. JRuby foi desenvolvido em 2001 por Jan Arne Petersen e atualmente se encontra na versão 1.7.4, o qual oferece suporte para Ruby 2.0. O JRuby possibilita o reconhecimento de código escrito em Java e a utilização de classes da plataforma Java no interpretador Ruby (Nutter, Enebo, Sieger, Bini and Dees, 2011). É importante ressaltar que a linguagem Ruby obteve maior aceitação no mercado devido, 5 https://netbeans.org/ http://www.python.org/ 7 http://jruby.org/ 6 58 principalmente, ao desenvolvimento do framework denominado Ruby on Rails 8 , o qual também é compatível com o JRuby. Esse framework é apresentado na próxima seção. 5.4 Framework Ruby on Rails Ruby on Rails (RoR) consiste em um framework de código aberto e de uso gratuito que tem o intuito de agilizar a construção de sistemas web por meio de estruturas pré-definidas, baseada no modelo de desenvolvimento ágil de sistemas. Esse framework foi lançado no ano de 2004 por David Heinemeier Hansson, mas os direitos para o compartilhamento do projeto foram disponibilizados apenas em 2005 (Ruby, Thomas, Hansson, Breedt, Clark, Davidson, Gehtland and Schwarz, 2011). Atualmente, o RoR se encontra na versão 4.0.1. A arquitetura do RoR segue os preceitos do padrão Model-View-Controller (MVC), o qual tem o objetivo de organizar o código-fonte do sistema web em três camadas: model, que determina e gerencia as informações processadas pelo SC; view, que apresenta as informações do model de forma que seja útil ao usuário por intermédio de uma interface; e controller, que tem a finalidade de receber a entrada de dados, processá-la e apresentar os resultados ao usuário (Saint-Laurent, Dumbill and Gruber, 2012). Na Figura 5.1 é ilustrado o padrão MVC, em que as setas contínuas representam o relacionamento direto entre os componentes MVC e a seta tracejada representa o relacionamento indireto entre model e view. Figura 5.1: Padrão MVC (Modificado de Ruby, Thomas, Hansson, Breedt, Clark, Davidson, Gehtland and Schwarz (2011)). Assim, o framework RoR segue os seguintes princípios (Holzner, 2006; Húngaro, 2013): • Não se repita (Don’t Repeat Yourself - DRY): determina mecanismos para evitar a necessidade de repetição do código em diversas partes do sistema; 8 http://www.rubyonrails.com.br/ 59 • Convenção sobre configuração (convention over configuration): define padrões para a construção de sistemas com a finalidade de reduzir a necessidade de elaborar configurações para o funcionamento do mesmo, possibilitando que o desenvolvedor se preocupe apenas com a solução do problema; • Controladores magros e modelos gordos (tiny controllers, fat models): estimula o hábito de limitar as tarefas de um determinado domínio de um problema aos modelos e as tarefas de controle do fluxo de dados aos controladores; • Mantenha simples, estúpido! (Keep It Simple, Stupid - KISS): baseado em um princípio de origem militar, determina que a simplicidade deve ser o foco do projeto e toda a complexidade deve ser desconsiderada ou reduzida; • Você não vai precisar disso (you ain’t gonna need it): define que nenhuma funcionalidade dispensável deve ser adicionada ao sistema; • Desenvolvimento iterativo e incremental (iterative and incremental development): é a base dos métodos ágeis de construção de sistemas em que o ciclo de desenvolvimento pode ser repetido várias vezes e para cada repetição de ciclo é adicionado pelo menos uma funcionalidade; • Desenvolva menos (build less): resultado de todos os princípios e práticas apresentados anteriormente, possibilita a redução do processo de construção de sistemas. Nesse sentido, RoR oferece diversos mecanismos para facilitar a construção de SC por meio da automatização de várias tarefas, como o comando generate, que é aplicado para gerar componentes do sistema. Neste comando, podem ser incluídas outras instruções para a geração de componentes no Padrão MVC, como o scaffold, que tem o intuito de gerar uma parte do sistema no padrão MVC com toda a estrutura CRUD (Create, Read, Update, Delete), que são as operações básicas para manipulação de dados de um sistema, como criar, ler ou visibilizar, atualizar e excluir (Griffiths, 2009). Também,o RoR oferece suporte para o uso de diversos bancos de dados, como PostgreSQL, MySQL, Oracle, entre outros (Ruby, Thomas, Hansson, Breedt, Clark, Davidson, Gehtland and Schwarz, 2011). 5.5 Ambiente de Desenvolvimento NetBeans Inicialmente sob o nome Xelfi 9 , o projeto do NetBeans foi iniciado em 1996 e tinha a finalidade de agregar funcionalidades semelhantes aos disponíveis nos IDE populares da linguagem Delphi 10 , os quais eram atrativos por serem fáceis de utilizar e também por apresentarem recursos gráficos para facilitar o desenvolvimento de softwares. Em 1997, foi desenvolvida 9 10 http://www.xelfi.cz/ http://c2.com/cgi/wiki?BorlandDelphi 60 a primeira versão comercial do IDE NetBeans, que foi comprada pela Sun Microsystems em 1999, tornando-o em um IDE gratuito e de código aberto (NetBeans, 2013). Atualmente na versão 7.4, o NetBeans foi construído com o propósito de simplificar e aumentar a produtividade do processo de construção de sistemas. Essa IDE pode ser utilizada em qualquer sistema operacional, pois foi desenvolvida em Java. Também, essa IDE suporta qualquer linguagem de programação como o próprio Java, Python, Ruby, Perl, entre outras (Boudreau, Glick and Spurlin, 2002; Kutler and Leonard, 2008). Assim, é possível a construção de sistemas utilizando várias linguagens simultaneamente, isto é, dependendo da complexidade dos requisitos, pode ser usada mais de uma linguagem em um único projeto de software. Essa IDE possui vários recursos, das quais se destacam: editor de código-fonte com vasta gama de mecanismos para a construção de sistemas web e aplicações visuais para a elaboração de interfaces gráficas; gerador automático de código; ferramentas para a criação de diagramas UML; controle de versão, o qual tem como finalidade manter antigas versões dos arquivos em uma base dados para facilitar a recuperação dos mesmos quando necessário; gerenciamento de bases de dados; integração e/ou reuso de componentes; disponibilidade de servidores de sistemas para web; ferramentas de modelagem de interfaces gráficas; e suporte para a construção de aplicações para dispositivos móveis (Silva, 2005). 5.6 Linguagem de Programação Perl Perl (Practical Extraction and Report Language) 11 é uma linguagem de programação multiplataforma que tem o intuito de facilitar o desenvolvimento de métodos e ferramentas para o processamento de textos, de relatórios e de formulários textuais. Essa linguagem foi desenvolvida por Larry Wall em 1987 com o objetivo de reunir as principais vantagens de tecnologias comumente utilizadas no sistema operacional Unix, como o editor Stream EDitor (’sed’) 12 e as linguagens AWK 13 , C 14 e Shell Script 15 . Em 1992, na sua quarta versão, Perl tornou-se uma linguagem padrão para o sistema operacional Unix (Schwartz, Phoenix and D’Foy, 20011). Recentemente, o Perl se encontra na versão 5.18.1. A linguagem Perl segue o preceito "Existe mais de uma maneira para fazer isso" (There’s More Than One Way To Do It - TMTOWTDI), isto é, para cada tarefa ou problema existem várias formas para solucioná-las, facilitando o desenvolvimento de soluções computacionais e o aprendizado do uso da linguagem por programadores (Wall, Christiansen and Schwartz, 2012). 11 http://www.perl.org/ http://www.gnu.org/software/sed/manual/sed.html 13 http://awk.freeshell.org/ 14 http://www.open-std.org/JTC1/SC22/WG14/www/standards 15 http://tldp.org/LDP/abs/html/why-shell.html 12 61 A sintaxe do Perl é semelhante ao do C e possui uma ampla variedade de recursos para realização de tarefas comuns, como a manipulação de arquivos. No código-fonte Perl, todas as variáveis escalares, ou seja, que assumem um valor individual, são precedidas pelo caractere "$". As variáveis vetoriais que representam os conjuntos de valores (arrays) são precedidas pelo caractere "@" e as variáveis associativas, as quais apresentam valores de arrays associativas (tabelas hash), são precedidas pelo caractere "%". Também, todas as versões dessa linguagem gerenciam a memória automaticamente e possuem tipagem dinâmica, uma característica que não exige a declaração de variáveis devido à capacidade de definição do tipo de dado dinamicamente para cada variável (Wainwright, Cozens, Calpini, Corliss and Merelo-Guervos, 2001). Outras vantagens da linguagem Perl são: possibilidade de elaboração de código-fonte rapidamente; disponibilidade de comandos poderosos para processamento de textos; suporte à programação estruturada e à orientada a objetos; disponibilidade para vários sistemas operacionais; facilidade de compreensão da documentação da linguagem; e viabilidade do uso de Expressões Regulares (ER) (Schwartz, Phoenix and D’Foy, 20011). Uma das características responsáveis pela popularização da linguagem Perl é a possibilidade do uso de ER, que tem a finalidade de identificar cadeias de caracteres com características de interesse, tais como letras particulares, palavras ou padrões de caracteres (Wall, Christiansen and Schwartz, 2012; Friedl, 2006). Essas expressões são escritas formalmente em uma linguagem que pode ser interpretada por determinados processadores de textos, os quais processam ER por meio de casamento de padrões, que geralmente é realizado com suporte de caracteres especiais, denominados de metacaracteres (Friedl, 2006). Na Tabela 5.1, são apresentados alguns exemplos de metacaracteres e os seus significados. Tabela 5.1: Tabela de exemplos de metacaracteres utilizados em ER (Adaptado de Schwartz, Phoenix and D’Foy (20011) e de Intentor (2010)). Metacaractere . * + {n} {n,m} \ [] () ˆ $ \n \t \d ou \D \s ou \S \w ou \W Significado Coincidir qualquer caractere Presença de zero ou mais vezes de um determinado caractere ou conjunto Presença de um único caractere ou de conjunto no mínimo uma vez Presença de um determinado caractere ou de um conjunto exatamente n vezes Presença de um determinado caractere ou um conjunto no mínimo n e máxima de m vezes Quando um determinado caractere especial está presente em uma cadeia de caracteres, é utilizado "\" precedido do mesmo Agrupamento de expressões Agrupamento de caracteres Início de uma linha de texto Fim de uma linha de texto Nova linha Caractere de tabulação Reconhecem apenas dígitos Reconhecem apenas espaços em branco Reconhecem qualquer caractere alfanumérico e o caractere underline ("_") Por exemplo, na ER "ˆ \s*", são identificados todos os espaços em branco no início de 62 uma frase. Em Perl, uma ER é designada entre barras (/) e o casamento de padrões é realizado por meio do operador lógico "=∼". Na expressão "$algo =∼ /ˆ \s+ / ", por exemplo, o resultado será verdadeiro (true) se a sentença analisada contém no mínimo um espaço em branco no início de uma frase e o resultado será falso (false), caso contrário. Também, podem ser aplicadas operações em ER, como substituição, que é dada por "$algo =∼ s / ER / P / ", na qual "s" (substitute) é o caractere que representa a operação de substituição e "P" é a sequência de caracteres que substituirá o padrão encontrado por "ER", como na expressão "$frase =∼ s / ˆ \s* // ", a qual elimina os espaços em branco no início de uma frase. No entanto, a expressão "$algo =∼ s / ER / P" elimina apenas uma ocorrência de "ER", sendo que pode haver a necessidade de remover todas as ocorrências. Para isso, na expressão deve ser adicionada ao final mais uma barra e um caractere que represente a operação de remoção de todas as ocorrências, acarretando na expressão "$algo =∼ s / ER / P / g", na qual "g" (global) é o caractere que representa todas as ocorrências de "ER", por exemplo, a expressão "$algo =∼ s / - / \s / g" substitui cada caractere “-" por um espaço em branco. Neste caso, também pode ser utilizado no final da expressão o caractere "gi" (global ignore), que tem a mesma funcionalidade de "g", mas neste caso, os caracteres maiúsculos não são diferenciados dos minúsculos (Wainwright, Cozens, Calpini, Corliss and Merelo-Guervos, 2001; Schwartz, Phoenix and D’Foy, 20011). 5.7 Linguagem de Marcação HTML HyperText Markup Language (HTML) 16 é uma linguagem de marcação utilizada para construção de páginas web que foi criada pelo físico Britânico Tim Berners-Lee com a finalidade de resolver um problema de comunicação e de disseminação de pesquisas entre ele e seu grupo de pesquisadores. Nas primeiras versões dessa linguagem foram definidas regras sintáticas para auxiliar na publicação de documentos na Internet (Castro and Hyslop, 2013). Essa linguagem foi especificada na década de 1990 baseada nas propostas de Tim BernersLee para a elaboração de uma linguagem inspirada em Standard Generalized Markup Language (SGML) 17 para a web. A primeira versão do HTML foi publicada em 1993 como uma aplicação do SGML. Após a publicação da versão 3.5 do HTML em 1997, foi iniciado pela Wide World Web Consortium (W3C) 18 o desenvolvimento do XHTML 19 , que combina as funcionalidades das linguagens HTML e XML (eXtensible Markup Language) 20 com o propósito de ser o sucessor da linguagem HTML. Em 2008, foi lançado a quinta versão do HTML, também conhecido como HTML5, que é amplamente utilizado atualmente (Pilgrim, 2011; Lubbers, Albers and Dalim, 2013). 16 http://www.w3.org/html/ http://xml.coverpages.org/sgmlsyn/sgmlsyn.htmC6 18 http://www.w3.org/ 19 http://www.w3.org/TR/xhtml1/ 20 http://www.w3.org/XML/ 17 63 Para a elaboração de documentos utilizando qualquer versão da linguagem HTML, são utilizadas estruturas de marcação pré-definidas com instruções denominadas etiquetas, marcadores ou tags, que são representadas na forma <nome_do_marcador>. Uma tag contém o seu respectivo nome e opcionalmente possui atributos, os quais são aplicados para alterar os resultados padrões de uma tag por intermédio de valores que definem essas mudanças. Um elemento HTML geralmente contém uma tag de abertura, uma tag de encerramento e conteúdo. Uma tag e abertura é representada na forma <Nome_Tag atributo=valor> e na mesma pode conter inúmeros atributos. Uma tag de fechamento é representada na forma </Nome_Tag> e não comporta atributos. O conteúdo é apresentado entre as duas tags e geralmente são textos, imagens, vídeos ou outros tipos elementos representados pela tag. Assim, um elemento HTML pode ser representado na forma <Nome_Tag att1=valor1 attN=valorN> Conteúdo </Nome_Tag> houver a representação de alguma informação, ou na forma <Nome_Tag atr=valor> </Nome_Tag> ou <Nome_Tag att1=valor1 attN=valorN />, caso contrário (Lawson and Sharp, 2011). A estrutura básica de um documento HTML é definida pelas seguintes tags (Castro and Hyslop, 2013): • <html>: é a tag que define o início de um documento HTML; • <head>: define o cabeçalho da página e as informações sobre o documento para o navegador web; • <body>: determina o conteúdo principal da página web. Nessa tag, são comportados outros marcadores que contém textos, imagens, vídeos, ou outros tipos de dados; • <title>: representa o título do documento. Outro componente que faz parte da estrutura básica de um documento HTML é denominado <!DOCTYPE html>, que é geralmente localizada na primeira linha de código do documento, antes das tags básicas. O Doctype tem o intuito de informar ao navegador web ou outros sistemas e ferramentas qual especificação de código deve ser utilizada para a exibição do documento. É importante ressaltar que o Doctype não é uma tag HTML, mas sim uma instrução interpretada pelo navegador web para informar sobre a versão do HTML em que o código foi escrito (Lubbers, Albers and Dalim, 2013). Nesse contexto, existem várias tags para a representação e a formatação de dados em páginas web (Pilgrim, 2011). Para formatação de textos, podem ser citados os seguintes exemplos de tag: • <p>: determina um novo parágrafo; • <b>: formata o texto para negrito; • <i>: formata o texto para itálico; • <u>: formata o texto para sublinhado; 64 • <sub>: formata o texto para subscrito; • <sup>: formata o texto para sobrescrito; • <h1>, <h2>, <h3>, <h4>, <h5> e <h6>: determina o tamanho dos caracteres, sendo <h1> o maior e <h6> o menor. Na Figura 5.2, é apresentado um exemplo de documento HTML (à esquerda) e a página web equivalente (à direita). Figura 5.2: Exemplo de documento HTML e página web equivalente. Outras tags comumente utilizadas para a representação de dados são: <img>, que tem a finalidade de exibir uma imagem; <a>, que representa um link para uma outra página web; <ul>, <ol> e <dl> para a exibição de listas; <form> para a elaboração de formulários e é composta pelos marcadores <input> (campo de texto para entrada de dados), <button> (botão), <select> (lista de opções para seleção), entre outros; <table> para a apresentação de tabelas e os seus elementos são definidos pelas tags <tr> (coluna), <th> (célula destacada) e <td> (célula comum); entre outras (Castro and Hyslop, 2013; Lawson and Sharp, 2011; Lubbers, Albers and Dalim, 2013). No entanto, para a construção de um sistema web, a linguagem HTML é utilizada apenas para a exibição do conteúdo. Para melhorar a visibilização de dados e a organização do conteúdo, bem como tornar a página interativa com os usuários, é necessário o uso de outras tecnologias para aprimorar o documento HTML, como uma linguagem de estilo para definir como as informações devem apresentadas e uma linguagem de programação para tornar a página interativa. 5.8 Linguagem de Marcação XML eXtensible Markup Language (XML) é uma linguagem de marcação utilizada para representar tipos de dados e organizá-los hierarquicamente. O principal objetivo do XML é facilitar, 65 simplificar e generalizar o compartilhamento de informações por meio da Internet. Essa linguagem é o resultado de um projeto da W3C desenvolvido na década de 1990 que tinha o propósito de desenvolver uma linguagem de marcação que combinasse a flexibilidade da SGML com a simplicidade da HTML e que pudesse facilitar a comunicação entre sistemas construídos em linguagens de programação diferentes (Bray, Paoli, Sperberg-McQueen and Maler, 1996). Assim como o HTML, a linguagem XML utiliza tags para representar dados, no entanto, o XML possibilita a criação de marcadores para a representação de informações, ao contrário de HTML, que tem um repertório limitado de tags. Também, essas linguagens foram desenvolvidas para atender as especificações de diferentes alvos, sendo que o XML é focado no transporte e no armazenamento de dados e o HTML na exibição de dados. Outra diferença entre essas linguagens é que a declaração de um documento HTML é dada por <!DOCTYPE html> e a de um documento XML é <?xml version="1.0" encoding="UTF-8"?>, no qual o atributo version define a versão da linguagem e o encoding determina o modo de codificação de caracteres (Harold, 1998; Deitel, 2012; Lubbers, Albers and Dalim, 2013). Na Figura 5.3 é apresentado um exemplo de estrutura de documento XML para a representação de informações bibliográficas de trabalhos científicos. Figura 5.3: Exemplo de estrutura de documento XML para a representação de documentos científicos. 66 Desse modo, o uso da linguagem XML apresenta os seguintes benefícios: operações de buscas mais eficientes; construção de aplicações flexíveis para a web; integração de dados em formatos diferentes; facilidade na manipulação de dados; várias maneiras de visibilizar os dados; fácil distribuição na Internet; facilidade na compreensão do conteúdo de documentos representados nessa linguagem; baseado em textos simples; suporta o padrão representação de caracteres Unicode 21 , possibilitando a elaboração de documentos com o conteúdo representado em linguagens latinas; entre outros (Deitel, 2012). 5.9 Linguagem CSS Cascading Style Sheets (CSS) 22 é uma linguagem de estilo utilizada para definir a formatação (design) da apresentação de documentos escritos mediante ao uso de linguagens de marcação, como XML e HTML. O objetivo da linguagem CSS consiste em separar o layout do conteúdo de documentos web. Hoje em dia, grande parte desses documentos utilizam CSS para organizar, formatar e expor informações de modo personalizado (Sklar, 2001; Larsen, 2013). A linguagem CSS foi criada em 1994 por Håkon Wium Lie e Bert Bos, os quais apresentaram o projeto dessa linguagem para a W3C, que lançaram a recomendação oficial do CSS Level 1 (CSS1) em 1996 e CSS2 no ano de 1998. Atualmente, a linguagem CSS está em sua terceira versão (CSS3) e ainda se encontra em desenvolvimento (Meyer, 2009). Essa linguagem possui uma sintaxe simples e utiliza palavras em inglês para especificar os nomes de regras e de suas propriedades. Uma regra CSS é dividida em três partes, como o identificador da regra (seletor), a propriedade do seletor e o valor de cada propriedade. Assim, uma regra é definida na forma nome_seletor{ propriedade1:valor1; propriedadeN:valorN; } e é classificada em três tipos distintos (Lie and Bos, 2005; Sklar, 2001; Meyer, 2009): • Seletores XHTML: definem o modo de exibição de uma tag HTML. Esse tipo de seletor não pode ser nomeado dinamicamente, isto é, podem apenas conter nomes de tags HTML. Por exemplo, a regra p{color:red; background-color:green;} determina que as informações representadas pela tag <p> terão todos os seus caracteres apresentados na cor vermelha e o parágrafo terá a cor de fundo verde; • Classes: os seletores podem ser nomeados dinamicamente e aplicados em distintos elementos. O nome do seletor para esse tipo de regra é precedido pelo caractere ponto ("."). Ao contrário dos seletores XHTML, o seletor do tipo classe deve ser declarado na tag que utilizará as suas propriedades por meio do atributo class e o seu valor com nome da classe sem o caractere ponto. Assim, esse tipo de regra pode ser utilizada em qualquer tag HTML. Por exemplo, a regra .minha_classe{ background-color:blue; } determina que a 21 22 http://www.unicode.org/ http://www.w3.org/Style/CSS/ 67 cor de fundo de cada tag que a utiliza terá cor azul, como <p class="minha_classe”> ... <p/> e <body class="minha_classe”> ... </body>; • Identificadores (ID): também nomeável dinamicamente, porém, cada ID pode ser aplicada apenas uma única vez em qualquer tag HTML. O nome do seletor para esse tipo de regra é precedido pelo caractere cerquilha ("#") e sua declaração em uma tag HTML é definida pelo atributo id. Por exemplo, a regra #meu_id{color:white;} determina que a cor dos caracteres será branco, como <b id="meu_id”> ... </b>. Em um documento HTML, o CSS pode ser usado em três modos distintos: adição do atributo style diretamente na tag com a respectiva declaração de propriedades, por exemplo, <h2 style="color:black”> ... </h2>; inclusão da tag <style type="text/css”>, que permite a criação de regras CSS dentro do próprio documento HTML; ou inserção de arquivo CSS externo por meio da tag <link>, utilizando o atributo rel para determinar o tipo de documento aplicado e o atributo href para definir o local e o nome do arquivo CSS (Lie and Bos, 2005). Desse modo, com o uso do CSS é possível construir páginas web com design aprimorado sem a necessidade da formatação de informações em arquivos HTML, ou seja, o layout da página é separado da estrutura do arquivo HTML, tornando a página mais leve e viabilizando o reuso do design em outras páginas web, ou seja, um arquivo CSS pode ser utilizado em toda coleção de páginas. Também, o CSS possibilita a redução de tempo para o carregamento de páginas web, pois com todas as regras de formatação em arquivos CSS, é reduzida a quantidade de código dessas páginas, diminuindo o fluxo de dados a serem transmitidos e analisados pelos navegadores web (Meyer, 2009). 5.10 Linguagem de Programação Javascript Javascript 23 é uma linguagem de programação interpretada de característica orientada a objetos e inspirada nas linguagens C, C++ e Java. Originalmente desenvolvida por Brendan Eich da Netscape 24 , sob o nome de Mocha, foi mudado para LiveScript que foi lançado em sua primeira versão em setembro de 1995. A mudança do nome LiveScript para Javascript ocorreu no mesmo período em que a Netscape iniciou a utilização da tecnologia Java em seu navegador web, em dezembro de 1995. Em 1996, Javascript foi submetida para o ECMA (European Computer Manufacturers Association) Internacional com a finalidade de torná-lo uma linguagem padrão industrial, resultando na versão padronizada denominada ECMAScript (Crockford, 2008). Atualmente, Javascript é a linguagem mais utilizada para construção de componentes de interfaces de sistemas web, sites, portais, entres outras ferramentas web. Essa linguagem é geralmente aplicada no desenvolvimento de funcionalidades para a interação do sistema com 23 24 http://www.javascriptsource.com/ http://isp.netscape.com/ 68 os usuários, tais como tratamento de eventos (clique com botões do mouse, pressionamento de teclas, entre outras), validação de formulários, efeitos visuais, transferência de informações, entre outras (Goodman and Morrison, 2007). Essa linguagem possui sintaxe de programação estruturada semelhante ao da linguagem C e tipagem dinâmica, ou seja, não é necessária a declaração do tipo de dados. Também, Javascript é quase inteiramente baseada em objetos (orientação a objetos), possui programação dirigida por eventos e é independente de plataforma (Crockford, 2008). Os códigos escritos na linguagem Javascript são incluídos em arquivos HTML (páginas web), os quais são exibidos para os usuários por meio de um navegador web. Assim, é importante ressaltar que a variabilidade de tipos de navegadores para o acesso às páginas web pode influenciar no comportamento de funcionalidades escritas em Javascript, isto é, uma funcionalidade pode gerar resultados diferentes para cada tipo de navegador (Flanagan, 2006). Esse tipo de problema pode ser solucionado ou amenizado com o uso simultâneo de métodos compatíveis com os principais navegadores para a realização de uma determinada tarefa. Por exemplo, o comando document.selection.createRange().text é utilizado para a captura do texto selecionado pelo usuário e funciona corretamente nos navegadores web Netscape e Internet Explorer, ao contrário dos navegadores Opera, Firefox e Chrome, na quais devem ser usado o comando window.getSelection().toString(). Nesse sentido, esses dois comandos podem ser utilizados em um único SC, sendo necessário apenas a realização de um tratamento para que cada comando seja executado no navegador correto. Para facilitar a construção de aplicações em Javascript, podem ser utilizadas outras tecnologias, como Javascript Object Notation (JSON) 25 e Document Object Model (DOM) 26 . O JSON é uma estrutura padrão de dados manipulável pela linguagem Javascript. Essa estrutura, proposta por Douglas Crockford, é uma alternativa à linguagem XML para manipulação de informações de páginas web (Ferguson and Heilmann, 2013). O DOM é uma linguagem multiplataforma independente para representar interação entre objetos em documentos HTML, XHTML e XML (van Kesteren, Gregor, Russel and Berjor, 2014). Também, para construção de ferramentas utilizando Javascript, podem ser utilizados bibliotecas de código-fonte, como o JQuery 27 , que oferece várias funcionalidades para manipulação de informações (Crockford, 2008). 5.11 Considerações Finais A escolha de ferramentas e tecnologias para auxiliar na construção de uma solução computacional se apresenta como uma abordagem essencial para o sucesso de um projeto de soft25 http://www.json.org/ http://www.w3.org/DOM/ 27 http://jquery.com/ 26 69 ware. Essas escolhas são baseadas nas características e na complexidade dos requisitos estabelecidos. Assim, são definidas as linguagens de programação, os frameworks e outros recursos que deverão ser utilizados na elaboração do SC para atender às especificações de seus usuários. Neste capítulo, foram apresentadas as tecnologias mais empregadas na construção de sistemas computacionais, bem como no SC para a automatização do PMLM. Para o método de mapeamento, foi utilizada a linguagem de programação Perl para a implementação das técnicas de processamento de texto devida a sua variabilidade de métodos que facilitam essa tarefa. A linguagem de marcação XML é usada para representar a lista de stopwords e do Arquivo de Padronização (AP). A linguagem de programação Java foi aplicada sob apoio do ambiente de desenvolvimento NetBeans e outras ferramentas para a implementação do algoritmo de mapeamento de laudos médicos por ontologias. Para automatizar e consolidar o PMLM e facilitar o seu uso por especialistas da área médica, neste trabalho foi desenvolvido um sistema web de modo que seja acessível em qualquer lugar sem a necessidade de instalação de softwares e de configuração da máquina para o seu uso, sendo apenas indispensável um navegador web instalado no computador do usuário e acesso à Internet. Com esse sistema é eliminada a necessidade do conhecimento técnico de seus usuários para a aplicação de cada método de processamento de textos e a criação de estruturas como a stoplist, o AP e a ontologia. Para a construção desse SC, foi utilizada a linguagem JRuby com o suporte do framework RoR e de métodos e ferramentas desenvolvidas em Java e em Perl. Para a elaboração de uma interface amigável, intuitiva e interativa ao usuário, foram utilizadas as linguagens HTML, CSS e Javascript. Desse modo, no Capítulo 6 é descrita detalhadamente a aplicação da abordagem de engenharia de software denominada método de desenvolvimento por prototipagem e o uso de ferramentas e tecnologias discutidas neste capítulo para a construção do SCC para a automatização e a consolidação do PMLM. 70 Capítulo 6 Processo de Desenvolvimento do Sistema Computacional Colaborativo 6.1 Considerações Iniciais Neste trabalho, foi desenvolvido o Sistema Computacional Colaborativo (SCC) seguindo os preceitos de Engenharia de Software conhecido como método de desenvolvimento de sistemas computacionais por prototipagem. Essa escolha foi realizada devido à complexidade das especificações, bem como pela importância e indispensabilidade da participação de especialistas do domínio. Esse método é aplicado em cinco etapas (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013), as quais são apresentadas a seguir. Sendo assim, na Seção 6.2 são apresentadas as atividades realizadas na etapa de Comunicação. Na Seção 6.3 são descritas as tarefas desempenhadas na etapa de Plano Rápido. Na Seção 6.4 é apresentada a modelagem do SCC. Na Seção 6.5 é descrita a construção do sistema. Na Seção 6.6 são ilustradas as telas do SCC e as suas funcionalidades. Na Seção 6.7 é apresentada a avaliação do sistema realizada por especialistas do domínio. 6.2 Etapa de Comunicação Nessa etapa, primeiramente foram estudados conceitos relacionados ao PMLM e às técnicas de processamento de textos utilizadas nesse processo para a compreensão do funcionamento do método de mapeamento. Nesse estudo, foi observado que todas as técnicas utilizadas no PMLM devem ser executadas separadamente por meio do uso de instruções computacionais, dificultando a sua aplicação por profissionais que não sejam da área computacional ou que não conheçam detalhadamente o processo. Também, foi constatado que uma das técnicas utilizadas no pré-processamento, denominada stemming, pode dificultar o entendimento de alguns termos e os resultados de sua aplicação podem ser interpretados pelos especialistas erroneamente, como discutido no Capítulo 3. 71 72 Após o estudo direcionado ao PMLM, foram realizadas reuniões com especialistas do domínio para o levantamento de requisitos para a construção do SCC com o propósito de reduzir os problemas apresentados anteriormente e maximizar a criação de um Sistema Computacional (SC) funcional, amigável e interativo. Assim, os principais requisitos definidos foram: • Automatização do PMLM por ontologias mediante a integração de técnicas de processamento de laudos textuais; • Substituição da técnica de pré-processamento stemming pelo método de lematização, no qual os resultados podem ser mais facilmente compreendidos pelos seus usuários; • Desenvolvimento de uma interface web amigável e intuitiva ao usuário para facilitar o uso do sistema, de modo que não seja necessária a instalação de programas adicionais e a configuração específica do computador para a execução do SCC; • Possibilidade do uso do sistema por qualquer computador com configuração mediana atuc Core i3) que tenha acesso almente (por exemplo, computadores com processador Intel à internet. 6.3 Etapa de Plano Rápido Na etapa de Plano Rápido, os requisitos foram analisados com a finalidade de compreender o problema a ser resolvido para verificar se era viável o desenvolvimento de uma solução computacional. Neste projeto, inicialmente foram realizadas análises conceituais e práticas sobre os métodos desenvolvidos na linguagem Perl com o intuito de esclarecer o funcionamento do pré-processamento de laudos textuais. Assim, primeiramente foram estudados os aspectos teóricos que abrangem essas técnicas, caracterizado como estudo conceitual. O estudo prático foi conduzido de dois modos: simulado, no qual não foram executados os códigos dos métodos por meio de um interpretador computacional, mas de forma manual para simular a execução dos mesmos; e real, em que os códigos dos métodos são executados em um interpretador de código Perl. Também, foram estudados a técnica de pré-processamento aplicada na segunda fase do PMLM e o método de mapeamento de laudos por ontologias, os quais foram codificados nas linguagens Perl e Java, respectivamente. O pré-processamento consiste na seleção e na aplicação das técnicas de transformação de textos utilizadas na construção de Conjuntos de Frases Únicas (CFU) para a uniformização dos laudos que serão mapeados para a tabela atributo-valor por intermédio do método de mapeamento. Esses estudos foram conduzidos da mesma forma que foi aplicada nos métodos de pré-processamento. Sendo assim, com esses estudos foi possível compreender as dificuldades que abrangem o uso do PMLM por profissionais que não sejam da área de computacional ou que não conheçam detalhadamente o processo. 73 Após, foi iniciado o planejamento da solução computacional, bem como foram definidas e analisadas as tecnologias que podem ser utilizadas para apoiar na construção de um SCC com a finalidade de facilitar o uso do método e atender aos requisitos levantados anteriormente. 6.4 Etapa de Modelagem Na etapa de Modelagem do SCC, foram estruturados dois cenários, um para cada fase do PMLM, com o intuito facilitar a compreensão das especificações para o seu desenvolvimento (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). No cenário da primeira fase do PMLM, foram definidas as seguintes funcionalidades: • Gerenciamento do Conjunto de Laudos Médicos: tem a finalidade de gerenciar os conjuntos de laudos textuais que serão utilizados para a geração do CFU. Essa funcionalidade deve possibilitar a seleção, a abertura e a exclusão de laudos em uma lista de arquivos, bem como a visibilização do conteúdo dos mesmos; • Construção e Gerenciamento do Conjunto de Frases Únicas: tem o objetivo de aplicar as técnicas de processamento de textos do PMLM no conjunto de laudos médicos selecionados para a geração de CFU (Conjunto de Frases Únicas). Nessa funcionalidade deve ser possível visibilizar, comparar e gravar os resultados do processamento; • Definição e Gerenciamento da Lista de Stopwords: tem o intuito de auxiliar na definição da stoplist. Nessa tarefa deve ser possível construir uma lista de stopwords, a qual é exibida em um painel de exibição de stoplist. Também, deve ser viável o carregamento e o download da stoplist e a aplicação do método de remoção de stopwords; • Construção e Gerenciamento do Arquivo de Padronização: tem o propósito de auxiliar na construção do AP (Arquivo de Padronização) para a uniformização de laudos. Assim, essa funcionalidade deve permitir a definição de uma lista de padrões, os quais são representados por dois conjuntos, sendo um de termos a serem substituídos e outro de termos substitutos. Do mesmo modo, deve ser possível carregar e gravar AP, tal como aplicá-lo para a uniformização do CFU por meio do método de padronização; • Definição e Gerenciamento do Conjunto de Atributos: tem a finalidade de apoiar na definição de elementos que serão representados por uma ontologia, como os atributos e seus respectivos valores que constituirão a base de dados e as RM que serão utilizadas para mapear o conhecimento presente em laudos textuais para essa base. Esses atributos devem ser apresentados em uma lista e as suas respectivas RM devem ser exibidas no caso de seleção de um elemento dessa lista. Do mesmo modo, nessa funcionalidade é possível carregar e gravar ontologias. Para a segunda fase do PMLM, foram definidas as seguintes funcionalidades: 74 • Aplicação de Pré-Processamento: tem o objetivo de aplicar as técnicas de processamento de textos em um conjunto de laudos, que pode ser o que foi utilizado na primeira fase e/ou outro conjunto novo de laudos disponibilizados em uma única lista de arquivos. Essa funcionalidade deve permitir a seleção de técnicas de pré-processamento a serem aplicadas ao conjunto de laudos, a aplicação dessas técnicas a esses laudos e o download do conjunto pré-processado; • Realização de Mapeamento: tem o intuito de aplicar o método de mapeamento por meio de uma ontologia para a transcrição do conjunto de laudos pré-processados e o preenchimento de uma base de dados. Nessa funcionalidade deve ser possível a visibilização dos resultados por meio de uma tabela atributo-valor e de uma lista de termos não-processados, bem como deve ser permitido gravá-los no computador do usuário. Na Figura 6.1 são apresentadas as funcionalidades de ambos cenários utilizando a linguagem UML (Unified Modeling Language) por meio de um diagrama de casos de uso, no qual é ilustrado a interação entre o usuário e o SCC. Figura 6.1: Diagrama de casos de uso do SCC. 75 Também, a partir da análise dos requisitos e de sua respectiva modelagem, foi elaborado um modelo arquitetural com o intuito de ilustrar a integração das técnicas aplicadas no PMLM com o SCC e a sua respectiva interação com o usuários. Esse modelo é apresentado na Figura 6.2 e é constituído pelos seguintes elementos: • Cliente: é o componente do SCC utilizado pelos usuários para a aplicação do PMLM automatizado por intermédio da Internet; • Internet: rede de comunicação de dados; • Servidor de Aplicações (SA): é o componente do sistema que tem o propósito de gerenciar os recursos computacionais disponíveis para a aplicação do PMLM automatizado por meio da interação do Cliente com o sistema. Esse servidor é composto por: – Interface Web (IW) para a disponibilização das funcionalidades do sistema por meio de telas intuitivas e amigáveis ao usuário; – Controlador de Recursos do Sistema (CRS) para gerenciar o acesso às funcionalidades do sistema, que são compostas por scripts Perl e métodos escritos em Java; – Scripts Perl (SP) para a aplicação das técnicas de processamento de textos, escritas na linguagem Perl, em laudos textuais selecionados pelo usuário; – Métodos Java (MJ) para controlar a execução de SP no sistema e a aplicação do método de mapeamento. Também, esse componente é utilizado para gerenciar as estruturas utilizadas pelo PMLM, como a stoplist, o AP, a ontologia e a base de dados; – Banco de Dados (BD) para armazenar dados de cadastro e de login de usuários; – Base de Dados do Usuário (BDU) para armazenar os laudos e os outros arquivos necessários para a aplicação do PMLM, tal como gravar os seus respectivos resultados. Sendo assim, é importante ressaltar que os dados produzidos pelo PMLM, como o CFU, o AP, a ontologia, os laudos transformados, os termos não processados e a tabela atributo-valor podem ser armazenados no computador do usuário, caso assim seja definido. Desse modo, estruturas como AP e ontologias podem ser reaproveitadas para o mapeamento de outros conjuntos de laudos e a construção de novas bases de dados. 6.5 Etapa de Construção Após o planejamento e a modelagem da solução computacional, nessa etapa foi construído o SCC utilizando as ferramentas e as tecnologias apresentadas no Capítulo 5. 76 Figura 6.2: Modelo de arquitetura do SCC. Nesse sentido, a principal linguagem de programação utilizada foi uma implementação da linguagem Ruby denominada JRuby com o suporte do framework para o desenvolvimento de sistemas web Ruby on Rails (RoR) na versão 3.2.14. Para o controle do acesso ao SCC, foi utilizada a gem Devise 1 http://rubygems.org/gems/devise 1 na versão 3.0.2, que é 77 aplicada ao controle do acesso ao sistema por intermédio de login e senha, assim como para o gerenciamento do cadastro de conta de usuários do sistema. Para prover suporte no armazenamento de dados dos cadastros de usuário, foi utilizado o sistema de gerenciamento de base de dados RoR denominado SQLite 2 na versão 3.7.2.2. Para facilitar a integração e a consolidação do PMLM com o SCC, foram desenvolvidos métodos utilizando a linguagem de programação Java apoiada pelo ambiente de desenvolvimento NetBeans 7.3 para a construção e o carregamento de estruturas utilizadas pelo PMLM e a execução de técnicas de processamento de textos escritas na linguagem Perl por meio de um interpretador JRuby. Esses métodos são apresentados a seguir: • Gerenciador de CFU: controla a aplicação de técnicas de processamento de textos do PMLM escritos em Perl para a geração de CFU; • Gerenciador de stopwords: é aplicado para a construção da stoplist por meio da lista de termos considerados irrelevantes definida no SCC. Também é utilizado para a exibição dos stopwords no SCC; • Gerenciador de Regras de Padronização (RP): constrói e carrega o AP por intermédio de RP definidas pelos usuários no SCC; • Configurador de parâmetros: determina as técnicas que deverão ser aplicadas para o pré-processamento de laudos, isto é, os métodos escolhidos pelo usuário; • Pré-processador de laudos: utiliza as técnicas determinadas no configurador de parâmetros para a execução do pré-processamento em laudos textuais. Também, os métodos escritos em Perl sofreram alterações em nível de código-fonte com a finalidade aprimorá-las e reduzir a complexidade de sua execução por meio da linguagem Java. Assim, na técnica de normalização foi incluída a remoção dos caracteres iniciais ”-", que é utilizado na descrição de observações em laudos textuais por especialistas. Na técnica de remoção de stopwords foi incluída a possibilidade de processamento de caracteres especiais caso sejam definidas como stopwords, tais como parênteses ("()"), ponto de interrogação ("?") e ponto de exclamação ("!"), os quais são comumente encontrados em laudos textuais. Na técnica de aplicação de padronização eram anteriormente utilizados dois AP, sendo um com o intuito de representar RP para a substituição de uma palavra ou parte de uma frase antiga por apenas um novo termo ou uma nova frase (RP do tipo um para um) e outro AP com o objetivo de desempenhar RP para a substituição de uma palavra ou de uma frase antiga por dois ou mais novos termos e/ou frases (RP do tipo um para vários). Na Figura 6.3 são apresentados dois exemplos de AP, em que (a) é a estrutura que representa as RP que contém apenas uma 2 http://www.sqlite.org/ 78 sentença para substituir uma observação presente no laudo não-padronizado e (b) é o AP que contém RP com duas sentenças novas para a substituição de uma única observação. Nessa figura, pattern é o marcador da estrutura do AP que contém apenas RP do tipo um para um, patterntwo é a tag da estrutura do AP que contém apenas RP do tipo um para vários, number é um atributo que descreve o número de RP contidas em uma AP, synonym é o marcador de uma RP de pattern, synonymtwo é a tag de uma RP de patterntwo, n é um atributo que determina o número de termos e/ou de sentenças substitutas contidas em synonymtwo, old é o marcador que define uma palavra ou uma frase a ser substituída e new é a tag que se refere a uma palavra ou uma frase substituta. Figura 6.3: Exemplos de AP antigos. Nesse sentido, o método de padronização foi reestruturado para utilizar apenas um AP que represente todas RP, mantendo as técnicas originais para tratar diferentes tipos de RP. Na Figura 6.4 é a demonstrado um exemplo para a nova estrutura de AP utilizando os exemplos apresentados na Figura 6.3. Figura 6.4: Exemplo de nova estrutura otimizada de AP. Também, no SCC desenvolvido neste trabalho, a técnica de processamento de textos denominada stemming foi substituída pelo método de lematização com o objetivo de reduzir as limitações relacionadas ao stemming, conforme apresentado no Capítulo 3. O método de lematização foi implementado por intermédio da linguagem de programação Perl com base no método proposto por Branco and Silva (2007) e na técnica de stemming implementada por Honorato, Cherman, Lee, Wu and Monard (2007). O método de lematização foi adaptado ao PMLM para 79 processar apenas substantivos femininos e/ou plurais, os quais são mais comuns nos laudos textuais. Como essa técnica de lematização é baseada no algoritmo de Porter (1997), foi possível reutilizar o código-fonte do método de stemming do PMLM, realizando algumas adaptações, como a substituição das regras de remoção de sufixos por regras de lematização. Com a retirada do método de stemming e a inclusão da técnica de lematização no processo de mapeamento, foi necessária a realização de modificações adaptativas no código-fonte do método aplicado na segunda fase do PMLM para o pré-processamento de laudos. Também, por meio da linguagem Perl foi desenvolvido um método para facilitar e automatizar a geração de CFU a partir de um conjunto de laudos médicos selecionados por usuários. Esse método tem a finalidade de construir sequencialmente os seguintes tipos de CFU: • Não-processado; • Normalizado; • Sem stopwords; • Lematizado; • Padronizado. O CFU não-processado consiste em um conjunto de frases e/ou palavras distintas extraídas de laudos médicos, no qual não foram aplicadas técnicas de processamento de textos do PMLM e os outros CFU são conjuntos de frases pré-processadas. Para a elaboração da técnica de geração de CFU, foram utilizados os métodos do PMLM escritos e aprimorados em Perl. Nesse contexto, é importante ressaltar que no método de criação dos CFU, cada tipo de conjunto de frases é gerado a partir do último CFU criado. Além disso, o método de mapeamento de laudos médicos por ontologias, desenvolvido em Java (Costa, Ferrero, Lee, Coy, Fagundes and Chung, 2009; Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011), foi integrado ao SCC. As ontologias utilizadas nesse método, eram construídas na linguagem OWL (Ontology Web Language) utilizando a ferramenta Protégé, as quais foram apresentadas no Capítulo 2. Com o intuito de facilitar e de aprimorar a integração desse método com o SCC foram desenvolvidas as novas funcionalidades, como: • Possibilidade de seleção de ontologias por usuários; • Construção de um gerenciador de atributos para a geração de ontologias por intermédio da definição de RM e de características por usuários no SCC. Esse gerenciador é também utilizado para a exibição de atributos e suas RM no sistema. Para a construção de ontologias, essa ferramenta gera os seguintes componentes, que são apresentado na Seção 7.6: – Propriedades de dados: descrevem os elementos de ontologias; 80 – Propriedades de objeto: desempenham o relacionamento entre os elementos da ontologia, formando as RM e os atributos; – Classes: rotulam e organizam o conhecimento de forma hierárquica; – Elementos: determinam os indivíduos que devem estar presentes em todas as ontologias utilizadas pelo SCC, como regiões anatômicas, características, subcaracterísticas, tipo de dados, atributos e RM. • Requisito de que todas as RM devem conter uma região anatômica e no mínimo uma característica para descrevê-la; • Geração de resultados no formato de texto e organizados de forma que simplifiquem a representação de seus resultados na interface do SCC; • Carregamento e gravação da tabela atributo-valor e da lista de termos não-processados no sistema. Para a construção de uma interface web amigável e interativa com o usuário, foram utilizadas as linguagens: • HTML para a construção de páginas web; • CSS para a modelagem visual dessas páginas; • Javascript para a interatividade da página com o usuário. Nesse sentido, foi desenvolvida uma página web para cada funcionalidade de ambos os cenários do sistema e adicionalmente, foram construídas outras páginas para auxiliarem no uso dessas funcionalidades, tais como para carregamento de laudos, de lista de stopwords, de AP e de ontologias, bem como para a criação e a edição de RP e de mapeamento. Para o gerenciamento do carregamento de arquivos, no SCC foi utilizada a gem Paperclip 2.3 3 . Assim, para elaboração da interface do SCC foi utilizado o modelo de estruturas CSS desenvolvidas em Jung (2012) com o propósito de padronizar o SCC de acordo com os projetos em andamento no LABI. 6.6 Apresentação do Sistema Computacional Colaborativo Desenvolvido Como mencionado, o SCC foi estruturado em dois cenários, um para cada uma das fases 1 e 2, e as tarefas foram organizadas em menus de seleção que proveem acesso direcionado às funcionalidades do PMLM. 3 http://rubygems.org/gems/paperclip 81 Na Figura 6.5 é apresentada a primeira tela do SCC em que é solicitada a autenticação do usuário para possibilitar o uso desse sistema. Somente após a autenticação do usuário, é possível que o mesmo tenha acesso a todas as funcionalidades do sistema relacionadas aos laudos textuais. A partir dessa tela, também é viável a criação de novos cadastros de usuário por meio do link "Criar uma conta" e redefinir senha do usuário por intermédio do link "Esqueceu a sua senha?", a partir do qual é enviado para a conta do usuário a sua senha de acesso. Figura 6.5: Tela de acesso ao sistema. Após a autenticação do usuário, caso essa conexão seja a primeira ao SCC, no diretório do computador servidor onde esse sistema encontra-se hospedado é gerada uma pasta cujo o nome é o número de identificação da conta do usuário e as seguintes subpastas são criadas: • CFU: contendo todos os CFU construídos durante a aplicação da primeira fase do PMLM; • laudos: contendo laudos textuais que foram selecionados para a criação de CFU; • laudos_padronizados: contendo laudos utilizados para o mapeamento, os quais são préprocessados mediante técnicas de processamento de textos do PMLM; • tabela_atributo_valor: contendo resultados do mapeamento dos laudos contidos na pasta laudos_padronizados. Os resultados armazenados são a tabela atributo-valor e a lista de termos não processados. Na pasta do usuário, também são criadas e armazenadas as estruturas que são utilizadas pelo PMLM, tais como o AP, a stoplist e a ontologia, as quais são geradas e/ou carregadas pelo usuário. Outro arquivo que se encontra nessa pasta, é o de configuração de parâmetros denominado parameters, que tem a finalidade de controlar a aplicação do pré-processamento na segunda fase do método no SCC. Esse arquivo é estruturado na linguagem de marcação XML e é composto pelos seguintes marcadores: 82 • applyNormalize: determina se a técnica de normalização deve ser aplicada; • applyStopwords: define se o método de remoção de stopwords deve ser usado; • applyLemmatization: indica se o procedimento de aplicação de lematização deve ser executado; • applyPattern: determina se a técnica de padronização deve ser aplicada; • dirStopWord: define a localização do diretório do usuário em que se encontra a stoplist; • dirDocuments: indica onde está situada a pasta do usuário na qual estão os laudos utilizados para a construção de CFU. Esse marcador também é utilizado para o reuso dos laudos da pasta referenciada pela mesma para a aplicação do pré-processamento e/ou do mapeamento; • dirPatterns: determina o local do diretório do usuário onde está localizado o AP; • dirOutput: indica a localização da pasta do usuário em que se encontram os laudos para serem ou que foram padronizados; Nesse arquivo, os marcadores que determinam a aplicação de técnicas de processamento de textos podem representar apenas os seguintes valores: "sim", o qual é atribuído a um marcador caso o usuário escolheu uma determinada técnica para a aplicação de pré-processamento de laudos; ou "não", que é atribuído aos marcadores das técnicas de processamento de textos que não foram escolhidos pelo usuário. Os marcadores que representam a localização de arquivos e de diretórios do usuário apresentam valores na forma /localização do SCC/tmp/sessions/número de identificação do usuário ou no formato /localização do SCC/tmp/sessions/número de identificação do usuário/subpasta. Na Figura 6.6 é apresentado um exemplo de estrutura de arquivo de parâmetros, que é criado na pasta de um usuário. Figura 6.6: Exemplo de estrutura do arquivo de parâmetros do SCC. O arquivo de parâmetros ilustrado na Figura 6.6 determina que as técnicas de processamento de textos como a de normalização, de remoção de stopwords, de lematização e de 83 padronização foram selecionadas pelo usuário para serem aplicadas ao conjunto de laudos localizado no diretório laudos_padronizados, para o qual a sua localização é representada pelo marcador dirOutput, em que "1" é o nome da pasta de um usuário. Sendo assim, a seguir são apresentadas as funcionalidades de cada cenário do SCC, nas quais os componentes são descritos na forma C.F.I, onde C é o número do cenário, F é o número da funcionalidade de C e I é o item destacado da funcionalidade F. Na Figura 6.7 é apresentada a tela do SCC equivalente à funcionalidade denominada "Gerenciamento do Conjunto de Laudos Médicos", na qual foram destacados: • Menu de seleção das funcionalidades (1.a); • Link para a mudança de cenário (1.b); • Painel da lista de laudos (1.1.1); • Área de texto em que é exibido o conteúdo do laudo selecionado na lista (1.1.2); • Botão "Excluir", que tem a finalidade de descartar os laudos selecionados como sendo de não interesse nesse momento. Essa operação pode ser aplicada pelo pressionamento da tecla ”Delete” no computador do usuário, sendo necessária a seleção de no mínimo, um laudo em (1.1.1); • Botão "Carregar", é usado para carregar conjuntos de laudos. Esse botão ao ser clicado, é aberta uma janela popup com uma página web de gerenciamento do carregamento de laudos textuais. Figura 6.7: Funcionalidade "Gerenciamento do Conjunto de Laudos Médicos" da primeira fase. Na Figura 6.8 são apresentadas as telas de gerenciamento de carregamento de laudos textuais. Nessa figura, (a) representa a tela abertura de arquivos e (b) é a tela para a qual se é 84 direcionado após o usuário clicar no botão "Enviar" na tela (a). É importante destacar que nessa tela é viável carregar vários laudos simultaneamente a partir do computador do usuário. Figura 6.8: Telas de gerenciamento de carregamento de laudos textuais. Na Figura 6.9 é exibida a tela da funcionalidade "Conjunto de Frases Únicas (CFU)", na qual têm-se: • Campos do tipo texto para a exibição de um determinado CFU (1.2.1); • Campos de seleção do tipo de CFU a ser apresentado no campo de exibição (1.2.2); • Botão "Reconstruir CFU", que tem o objetivo de gerar o conjunto de CFU a partir dos laudos carregados na tela da Figura 6.7 e o botão "Download CFU" que permite gravar os resultados no computador do usuário. O texto do botão "Reconstruir CFU" é exibido em duas maneiras, sendo que o texto "Reconstruir CFU" é apresentado neste botão caso pelo menos um CFU seja existente na base de dados ou "Construir CFU", caso contrário. Figura 6.9: Funcionalidade "Construção e Gerenciamento do Conjunto de Frases Únicas" da primeira fase. Nessa funcionalidade, também é possível a visibilização de dois CFU distintos simultaneamente. Nesse contexto, é importante ressaltar que os CFU são construídos por meio do método 85 de geração automática de CFU desenvolvido neste trabalho, sendo apresentadas na seguinte ordem: • Conjunto de Frases Únicas – CFU; • CFU Normalizado; • CFU Normalizado e sem Stopwords (caso exista stoplist na base de dados); • CFU Lematizado (caso não exista uma stoplist cadastrada no SCC) ou CFU Lematizado e sem Stopwords (caso exista uma stoplist cadastrada); • CFU Padronizado (caso exista uma AP na base de dados). Essa funcionalidade apresenta as seguintes restrições: para a construção de CFU, é necessária a existência de laudos textuais para esse fim na base de dados do SCC, os quais devem ser carregados por meio da funcionalidade "Gerenciamento do Conjunto de Laudos Médicos", apresentado na Figura 6.7; e para a construção dos CFU sem stopwords e do CFU padronizado é imprescindível a presença de uma stoplist e de um AP na base de dados local do usuário no SCC, respectivamente. Na Figura 6.10 é ilustrada a tela da funcionalidade "Definição e Gerenciamento da Lista de Stopwords", em que é possível a visibilização de todos CFU gerados até o momento, facilitando a definição e a identificação de palavras consideradas irrelevantes para aquele contexto, também denominadas stopwords. A seguir são apresentados os principais componentes dessa funcionalidade: • Campo de texto para a determinação de uma nova palavra irrelevante, a qual é incluída na stoplist (1.3.1); • Stoplist (1.3.2); • Botão "Incluir", que é utilizado para incluir a stopword de (1.3.1) na stoplist; • Botão "Excluir", que tem o propósito de excluir a stopword selecionada em (1.3.2); • Botão "Carregar Stoplist", que é usado para carregar uma stoplist por intermédio do computador do usuário; • Botão "Download Stoplist", que tem o intuito de gravar a stoplist no computador do usuário; • Botão "Aplicar Stoplist", que tem a finalidade de aplicar o método de remoção de stopwords no último CFU construído. As restrições da funcionalidade apresentada na Figura 6.10 são: a exigência do preenchimento do campo (1.3.1) para a inclusão de uma stopword; a necessidade da existência de uma 86 Figura 6.10: Funcionalidade "Definição e Gerenciamento da Lista de Stopwords" da primeira fase. stoplist para a aplicação do método de remoção de stopwords; e a impossibilidade de cadastrar termos irrelevantes repetidos. No sistema desenvolvido neste trabalho, a existência de uma stoplist é dada pela presença de no mínimo uma stopword em (1.3.2) da Figura 6.10. Nesse sentido, ao executar a técnica de remoção de palavras consideradas irrelevantes mediante o botão "Aplicar Stoplist", os métodos de remoção de stopwords e de lematização são aplicados no último CFU construído, gerando o CFU normalizado e sem stopwords e o CFU lematizado e sem stopwords, respectivamente. Na Figura 6.11 é mostrada a tela da funcionalidade "Construção e Gerenciamento do Arquivo de Padronização", na qual destacam-se: • Painel da lista de termos antigos a serem substituídos (1.4.1); • Painel da lista de termos substitutos do termo antigo selecionado (1.4.2); • Botão "Novo", que ao ser clicado, é aberta uma janela popup para definição de uma nova RP. Também é possível definir uma nova RP por meio da seleção de palavras na área de texto de exibição de CFU, na qual, ao selecionar um termo ou sequência de termos, é aberta a tela de definição de novas regras; • Botão "Editar", que ao ser clicado, é aberta uma janela popup, como na Figura 6.12, para a edição da RP selecionada em (1.4.1). A edição de uma RP também pode ser realizada por intermédio da tecla "Enter"; • Botão "Excluir", que ao ser clicado, é aplicado a remoção de uma RP selecionada em (1.4.1). A exclusão de uma RP também pode ser realizada por meio da tecla "Delete"; • Botão "Carregar Arquivo", que é aplicado para carregar AP do computador do usuário; • Botão "Download Arquivo", que é usado para gravar o AP no computador do usuário; 87 • Botão "Padronizar CFU", que é utilizado para a aplicação da técnica de padronização no último CFU construído. Figura 6.11: Funcionalidade "Construção e Gerenciamento do Arquivo de Padronização" da primeira fase. Para a aplicação da técnica de padronização de CFU, é necessária a existência de um AP na base de dados do SCC, isto é, a lista de termos a serem substituídos como apresentado na Figura 6.11 deve conter no mínimo um termo presente nessa lista. A janela popup para definição de uma nova RP descrita anteriormente é apresentada na Figura 6.12, onde (a) é o campo de texto referente ao termo a ser substituído, (b) é o campo de termo substituto a ser cadastrado e (c) é a lista de termos substitutos. Nessa tela, é possível a definição, a edição e a exclusão de termos substitutos. Assim, o texto do botão de inclusão de termos substitutos é "Incluir +", caso exista no mínimo um termo substituto cadastrado na lista de termos novos ou "Incluir" caso contrário. Para a edição de RP, o SCC disponibiliza uma tela semelhante ao apresentado na Figura 6.12, na qual a única diferença é o título de ambas, sendo "Editar Padrão" para a atualização de RP. Para definir ou editar uma RP, é necessário que (a) seja preenchido e (c) contenha pelo menos um elemento. Também, para cada RP em ambos os casos não pode haver repetição de termos novos, bem como não é permitido que duas ou mais RP possuam o mesmo termo antigo, o qual é substituído pela lista de termos substitutos. Neste caso, um termo pode ser considerado uma palavra ou uma frase. Na Figura 6.13 é exibida a tela da funcionalidade "Definição e Gerenciamento do Conjunto de Atributos", a qual apresenta: • Lista de nome de atributos (1.5.1); 88 Figura 6.12: Tela para definição de uma nova RP. • Valor padrão do atributo selecionado (1.5.2); • Valores possíveis do atributo selecionado (1.5.3); • Região da RM (1.5.4); • Característica da RM (1.5.5); • Lista de observações do atributo selecionado (1.5.6); • Valor da observação selecionada (1.5.7); • Botão "Novo", que é usado para a definição de uma nova RM a partir de uma janela popup, que é apresentada na Figura 6.14; • Botão "Editar", é utilizado para a edição de uma RM selecionada em (1.5.1) por intermédio de uma tela popup similar à apresentada 6.14. A edição de uma RM também pode ser realizada por meio da tecla "Enter"; • Botão "Excluir", que é aplicado para a remoção de uma RM selecionada em (1.5.1). Essa operação pode ser realizada por meio da tecla "Delete"; • Botão "Carregar Ontologia", que é utilizado para carregar ontologia do computador do usuário; • Botão "Download Arquivo", que usado para armazenar localmente a ontologia no computador do usuário. Com essa funcionalidade, a necessidade do uso de ferramentas externas ao SCC para a construção de ontologias na linguagem OWL, como o Protégé, se torna dispensável para representação de atributos e de RM, facilitando e simplificando a elaboração de estruturas de dados para a representação do conhecimento presente em laudos textuais. Outra característica dessa funcionalidade é a impossibilidade de cadastrar atributos com nomes repetidos. Para a 89 Figura 6.13: Funcionalidade "Definição e Gerenciamento do Conjunto de Atributos" da primeira fase. definição de novos atributos e suas RM, é utilizada uma tela popup semelhante ao de elaboração de RP. A tela para definição de atributos e de RM é apresentada na Figura 6.14, em que (a) é o campo para nomeação do atributo, (b) é o campo de seleção de valores possíveis para o atributo, (c) é o valor padrão do atributo, (d) é a região para ser identificada com a RM, (e) é a característica para ser identificada pela RM, (f) é o campo de cadastramento de observações (subcaracterísticas) que serão mapeadas na RM, (g) é valor da observação a ser cadastrada, (h) é a lista de observações cadastradas e (i) é o campo de texto com o valor da observação selecionada em (h). Na Figura 6.14 é ilustrada a definição do atributo "esofagite_edematosa_inferior" com RM no formato local-característica-subcaracterística, no qual "terço distal" é o local, "presenca_edema" é a característica e "normal" e "anormal" são as subcaracterísticas, contabilizando duas RM. No SCC, uma observação é implicitamente considerada subcaracterística quando a RM representa sentenças no formato local-característica-subcaracterística ou é determinada como característica quando a RM representa sentenças no formato local-característica, que ocorre quando o campo "Característica" se encontra vazio no momento em que o atributo é registrado por intermédio do botão "Salvar". Para a definição de atributos e de suas respectivas RM, o sistema apresenta as seguintes restrições: para cadastrar um novo atributo, no mínimo o usuário deve preencher o campo de nomeação do atributo, selecionar uma região e cadastrar no mínimo uma observação; e não é permitido o registro de observações com nomes repetidos. Nesse sistema, cada observação é composta por duas informações: o nome e o seu respectivo valor. O nome da observação é uma informação que deve ser mapeada por meio de uma RM e o valor da observação é uma 90 Figura 6.14: Tela para definição de nova RM. informação utilizada para o preenchimento de um atributo na base de dados caso o nome de sua respectiva observação seja mapeada. Também, no SCC é permitida a criação de observações com nomes iguais aos seus valores, por exemplo, se uma observação tem o nome "normal", o mesmo pode conter o valor "normal". Na Figura 6.15 é apresentada a tela da funcionalidade "Aplicação de Pré-Processamento", na qual são destacados: • Menu de seleção das funcionalidades do segundo cenário (2.a); • Link para mudança de cenário (2.b); • Lista de laudos escolhidos para pré-processamento e mapeamento (2.1.1); • Área de texto utilizada para exibição de laudos (2.1.2); • Botão "Laudos Fase 1", que tem a finalidade de reutilizar os laudos do primeiro cenário; • Botão "Outros Laudos", que é utilizado para carregar outros laudos no computador do usuário; • Botão "Outra Stoplist", que é aplicado para o carregamento de uma stoplist; • Botão "Outro Arquivo", que é usado para o carregamento de um AP; • Botão "Pré-Processamento", tem o objetivo de pré-processar os laudos selecionados para o mapeamento; 91 • Botão "Download Laudos", tem o propósito de gravar os laudos pré-processados no computador do usuário. Figura 6.15: Funcionalidade "Aplicação de Pré-Processamento" da segunda fase. Para o pré-processamento, é permitida a seleção de técnicas como a de normalização, de remoção de stopwords, de lematização e/ou de padronização, de acordo com os critérios do usuário. Sendo assim, nessa funcionalidade, os laudos selecionados podem ser visibilizados apenas em seu estado atual em (2.1.2), ou seja, se não foi aplicada nenhuma técnica de pré-processamento são exibidos os laudos em suas versões originais, caso contrário, são apresentados os laudos processados. Também, o processamento de textos é realizado por meio do botão "Pré-Processamento", que ao ser clicado, o SCC primeiramente verifica as técnicas de processamento de textos selecionados pelo usuário para configurar o arquivo de parâmetros, como apresentado na Figura 6.6. Em seguida, esse arquivo é interpretado pelo sistema com a finalidade de indicar quais técnicas devem ser aplicadas para a transformação dos laudos selecionados para o mapeamento, tal como determinar a localização de alguns elementos importantes nessa tarefa, como a pasta que contém os laudos para serem transformados e as estruturas indispensáveis para a aplicação das técnicas de remoção de stopwords e de padronização. Na Figura 6.16 é ilustrada a tela da funcionalidade "Realização de Mapeamento", na qual destacam-se: • Tabela em que são apresentados os resultados do mapeamento dos laudos pré-processados (2.2.1); • Área de texto em que são apresentados os termos não processados de cada laudo, os quais são utilizados para identificar falhas no mapeamento e definir novas RP e/ou RM (2.2.2); 92 • Botão "Mapear Laudos", que é usado para a realização do mapeamento de laudos textuais; • Botão "Download Tabela", que é utilizado para gravar a tabela atributo-valor dos laudos mapeados; • Botão "Download Termos", que é aplicado para armazenar localmente o arquivo de termos não processados. Figura 6.16: Funcionalidade "Realização de Mapeamento" da segunda fase. Nessa funcionalidade, para o mapeamento dos laudos transformados na função "Aplicação de Pré-Processamento", apresentado na Figura 6.15, o método utiliza a ontologia desenvolvida ou carregada na funcionalidade "Definição e Gerenciamento do Conjunto de Atributos" do primeiro cenário do SCC, conforme apresentado na Figura 6.13. 6.7 Etapa de Avaliação e Feedback Durante a construção do SCC, o mesmo foi constantemente avaliado em conjunto com os envolvidos na elaboração do projeto com o intuito de verificar o andamento do projeto e se as especificações levantadas foram atendidas satisfatoriamente. Assim, foram realizadas reuniões quinzenais entre os envolvidos no desenvolvimento do sistema para discutir as atividades que foram desempenhadas desde a última reunião, bem como apresentadas as dificuldades encontradas e as possíveis soluções. Também, nessas reuniões foram definidos quais requisitos deveriam ser acrescentados, alterados e/ou removidos. 93 Após a construção da versão final do SCC, o mesmo foi avaliado em conjunto com especialistas do domínio, os quais constataram que esse sistema cumpre os requisitos definidos e se apresenta como promissor para a definição, a extração e o estudo de padrões que podem ser encontrados em laudos textuais (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Ainda, o SCC foi avaliado quanto ao desempenho na aplicação do PMLM automatizado a um conjunto de 100 laudos médicos textuais artificiais que simulam exames de Endoscopia Digestiva Alta (EDA). Os critérios e os resultados dessas avaliações são apresentados no Capítulo 7. 6.8 Considerações Finais Neste capítulo foi apresentada a aplicação do processo de desenvolvimento de sistemas por prototipagem para a construção do SCC com o intuito de automatizar o PMLM por ontologias. Inicialmente, foram estudados os aspectos teóricos e práticos que abrangem a aplicação de todas as técnicas de processamento de textos utilizadas nas duas fases do PMLM. A análise desse processo permitiu constatar que o uso de todas as técnicas é complexo para qualquer pessoa que não conheça detalhadamente o método e principalmente por profissionais que não sejam da área computacional. Isso se deve ao fato de que essas técnicas são executadas separadamente mediante às instruções computacionais, bem como as estruturas utilizadas pelo PMLM devem ser construídas manualmente por meio de uma linguagem de marcação. Após o estudo do PMLM, foram realizadas reuniões com especialistas do domínio com o intuito de identificar os requisitos para desenvolver um SCC para automatizar e facilitar o uso do método. Em seguida, os requisitos foram estudados e analisados com a finalidade de verificar a viabilidade para o desenvolvimento de uma solução computacional e planejar a construção do mesmo. Depois, o SCC foi modelado em dois cenários, sendo um para cada fase do PMLM. Após, o sistema foi implementado utilizando a linguagem programação Ruby com o auxílio da ferramenta RoR. Para o uso das técnicas de construção de CFU, de pré-processamento e de mapeamento de laudos médicos foi utilizada a linguagem de programação Java por intermédio do ambiente de desenvolvimento NetBeans. Para facilitar e agilizar o uso do SCC, foi construída uma interface gráfica web amigável, intuitiva e interativa ao usuário. Oferece suporte completo a todas a tarefas e fases do PMLM sem a necessidade do usuário conhecer detalhadamente as especificações técnicas, como linguagens de programação e de marcação, bem como comandos para a execução dos métodos do PMLM, possibilitando a construção de bases de dados para a realização estudos futuros de forma ágil e eficiente. Também, para o uso do SCC não é necessária a sua instalação e a con- 94 figuração do computador do usuário, bastando apenas um navegador web instalado na máquina e acesso à internet. Depois da construção do sistema, o mesmo foi avaliado e validado em conjunto com especialistas do domínio, os quais constataram que a solução computacional atendeu aos requisitos estabelecidos e se apresenta como promissora para a extração e o estudo de padrões em laudos textuais médicos. Em seguida, o SCC foi aplicado a um conjunto de 100 laudos médicos textuais artificiais simulando exames de EDA com a finalidade de avaliar o desempenho do PMLM automatizado. Essa avaliação é apresentada detalhadamente Capítulo 7. Capítulo 7 Estudo de Caso 7.1 Considerações Iniciais Como apresentado anteriormente, este trabalho tem o objetivo de automatizar e de consolidar o Processo de Mapeamento de Laudos Médicos (PMLM) por ontologias por meio da integração de todas as suas técnicas de processamento de textos, bem como a inclusão de outros métodos e funcionalidades em um sistema computacional. Para isso, foi realizado um estudo de caso interdisciplinar envolvendo as áreas computacional e médica. Para alcançar os objetivos deste trabalho, foi construído um Sistema Computacional Colaborativo (SCC) no Laboratório de Bioinformática (LABI) da Universidade Estadual do Paraná (UNIOESTE/Foz do Iguaçu) em parceria com o Serviço de Coloproctologia da Faculdade de Ciências Médicas da Universidade Estadual de Campinas (UNICAMP). Esse sistema foi desenvolvido para automatizar e facilitar o uso do PMLM por profissionais que não sejam da área computacional, por exemplo, da área de saúde e que não possuam conhecimento detalhado do método, possibilitando a construção de grandes bases dados, as quais poderão ser utilizadas para a aplicação de processos como o de Mineração de Dados (MD). Após a construção do SCC e a avaliação por especialistas do domínio, foi realizado um estudo de caso com a finalidade de avaliar o desempenho do sistema durante o processamento de um conjunto de laudos médicos textuais artificiais. Na Seção 7.2 é descrita a avaliação experimental realizada neste estudo de caso. Nas Seções 7.3 e 7.4 são apresentadas a definição do Arquivo de Padronização (AP) e da stoplist, respectivamente. Na Seção 7.5 são descritos os atributos da base de dados e a forma de estruturação de Regras de Mapeamento (RM). Na Seção 7.7 é demonstrada a aplicação do método de mapeamento por ontologias. Na Seção 7.6 são apresentadas as principais características da ontologia utilizada pelo SCC para este estudo de caso, a qual foi proposta em (Lee, Monard, Honorato, Lorena, Ferrero, Maletzke, Zalewski, Coy, Fagundes and Chung, 2011). 95 96 7.2 Avaliação Experimental do SCC Neste trabalho, a avaliação experimental do sistema computacional desenvolvido foi realizada em um conjunto de 100 laudos médicos artificiais que simulam relatórios de exames de Endoscopia Digestiva Alta (EDA). Esses exames são usados por especialistas em processos de diagnóstico de enfermidades que acometem o esôfago, o estômago e/ou o duodeno (Cordeiro, 1994; Cotran, Kumar and Collins, 1996). Os documentos utilizados nessa avaliação experimental contêm um total de 400 frases e 2.520 palavras. Os laudos artificiais apresentam a seguinte estrutura: • Cabeçalho: indica a porção anatômica analisada e geralmente está presente na primeira linha do texto e escrito em caixa-alta; • Observações: são sentenças que descrevem anormalidades e/ou outras características observadas em uma determinada região e são precedidas pelo caractere traço (-). Na Figura 7.1 é apresentado um exemplo de laudo textual artificial de exame de EDA da seção de esôfago, no qual a parte destacada na cor vermelha é o cabeçalho e na cor verde são as observações. Figura 7.1: Exemplo de laudo textual de exame EDA da região do esôfago. De acordo com as informações apresentadas na Figura 7.1 é possível notar que não foram identificadas anormalidades na região do esôfago por intermédio do exame de EDA. Nessas observações, o calibre se refere ao diâmetro interno do esôfago, a distensibilidade é a capacidade de ampliação (elasticidade) de um tecido, a motilidade está relacionada à capacidade de um órgão de executar movimentos autônomos e a TEG é o limite entre o esôfago e o estômago. Conforme mencionado, o PMLM é realizado em duas fases. É importante lembrar que ao se realizar o processo pela primeira vez para um conjunto de laudos de um determinado domínio, é necessária a realização de todas as tarefas associadas ao processo, incluindo a construção do Arquivo de Padronização (AP), da stoplist e da ontologia. Na primeira fase, as frases de todos os documentos selecionados foram concatenados e ordenados alfabeticamente em um único arquivo. Em seguida, todas as frases repetidas foram 97 eliminadas, originando o Conjunto de Frases Únicas (CFU), o qual contém uma entrada para cada frase distinta. Depois, foi executada a técnica de normalização para a redução da variação de caracteres por meio da substituição de todas as letras maiúsculas e/ou acentuadas por caracteres minúsculos e sem acentuação, resultando no CFU Normalizado. Após, foi definida uma lista de termos considerados irrelevantes, conforme apresentada na Seção 7.4. Essa stoplist foi aplicada no CFU Normalizado por meio da técnica de remoção de stopwords, gerando o CFU Normalizado e sem Stopwords. Em seguida, esse grupo de sentenças foi submetido à transformação por intermédio do método de lematização, concebendo o CFU Lematizado e sem Stopwords. Posteriormente, foram definidas Regras de Padronização (RP) a partir da análise dos CFU gerados anteriormente, construindo o AP, conforme apresentado na Seção 7.3. Essas regras foram determinadas para transformar as sentenças de modo que sejam representadas no formato local-característica-subcaracteristica ou local-característica com o propósito de facilitar a definição de RM, como apresentada na Seção 7.5. A aplicação do AP no último conjunto de frases gerados concebeu o CFU Padronizado. Depois da construção de todos os CFU, as frases foram analisadas com o intuito de definir as variáveis e os valores da tabela atributo-valor (base de dados), bem como a estrutura da ontologia, como apresentadas nas Seções 7.5 e 7.6, respectivamente, para a representação do conhecimento presente nos laudos médicos utilizados neste trabalho por intermédio dessas estruturas. Na segunda fase, o conjunto de laudos médicos utilizado na construção de CFU foi submetido à aplicação de técnicas de processamento de textos com o propósito de transformá-los para uma representação adequada para a execução do método de mapeamento. Para isso, foram usadas as estruturas como a stoplist e o AP definidas anteriormente. Sendo assim, nesses documentos foram efetuadas sequencialmente as seguintes técnicas: normalização, remoção de stopwords, lematização e padronização. Posteriormente, as informações presentes nos laudos padronizados foram mapeadas para a base de dados. Esse mapeamento foi conduzido de duas formas: manual, que é realizado c ; e automático, o qual é aplicado por manualmente para uma planilha do Microsoft Excel intermédio do SCC. Após a realização do mapeamento, manual e automática, no conjunto de laudos médicos, para a avaliação dos resultados da aplicação do PMLM por ontologias foram calculados: • Medidas estatísticas para os termos e as frases dos CFU gerados durante a aplicação de técnicas de processamento na primeira fase do PMLM, como média, desvio-padrão, mínimo e máximo; • Custo computacional da aplicação de cada técnica utilizada para a construção de CFU; 98 • Custo computacional da aplicação da primeira fase do PMLM; • Porcentagem de atributos mapeados para a base de dados; • Porcentagem de laudos que apresentaram termos não-processados; • Incidência de termos não-processados; • Custo de tempo para o mapeamento manual; • Custo computacional para o mapeamento automático; • Custo computacional da aplicação do PMLM por meio do SCC. 7.3 Construção do Arquivo de Padronização Para trabalhar com um vocabulário controlado e possibilitar que as informações estejam em formato adequado para a construção de Regras de Mapeamento (RM) que irão compor uma ontologia, como a apresentada na Seção 7.6, deve ser definido o AP por intermédio da elaboração de RP. Nesse sentido, neste trabalho foram definidas, em conjunto com especialistas, 81 RP com a finalidade de uniformizar as frases para o formato local-característica-subcaracterística ou local-característica. Dessas regras, 66 são do tipo um para um (um termo antigo é substituído por um termo novo) e 15 são do tipo um para vários (um único termo antigo é substituído por vários termos novos simultaneamente). Para a elaboração de RP, também foram utilizadas Expressões Regulares (ER) com o intuito de identificar características em palavras ou frases, como espaço em branco excedentes, para padronizá-las adequadamente. Essas RP são apresentadas no Apêndice A.2. Na Figura 7.2 é ilustrado um fragmento do AP elaborado neste trabalho. Figura 7.2: Fragmento do AP desenvolvido no Estudo de Caso. 99 No fragmento de AP apresentado na Figura fig:apEC são apresentados três exemplos de RP para a aplicação da padronização de laudos textuais. A primeira RP é aplicada para a substituição da palavra "enantemo" pela sequência "presenca_edema sim", transformando a frase para o formato local-característica-subcaracterística, sendo que esse termo antigo geralmente é precedido por uma palavra que determina uma porção anatômica, por exemplo, "esofago inferior enantemo". A frase antiga da segunda RP determina que todas as porções do esôfago apresentam pelo menos uma enfermidade, as quais não são descritas explicitamente. Nesse caso, a regra é aplicada para a substituição da sentença antiga por outras três no formato local-característica, determinando que existem anormalidades nas três porções do esôfago. A terceira RP apresentada na Figura 7.2 é uma das regras que tem o propósito de transformar a descrição da extensão da TEG (transição esôfago-gástrico) medida em centímetros para grau de anormalidade. Assim, essa porção é considerada normal quando se encontra no mesmo nível ou até 0,50 cm acima do pinçamento diafragmático do esôfago, grau 1 ("gi") quando é localizada entre 1,00 cm e 2,99 cm acima, grau 2 ("gii") para valores de 3,00 cm até 4,49 cm, grau 3 ("giii") para valores de 4,50 cm até 6,00 cm e grau 4 ("giv") para valores a partir de 6,01 cm. Essa RP contém ER para identificação de padrões em sentenças de laudos textuais, na qual ".*" determina que pode existir nenhum, um ou mais caracteres de qualquer tipo ("."). Ainda, a expressão "[,.]" determina que pode existir ou não os caracteres "," ou ".", "s*" estabelece que pode haver zero ou mais espaços em branco e "[acima]" descreve que pode existir ou não o termo "acima". Nesse contexto, as RP foram desenvolvidas para serem aplicadas em laudos textuais lematizados e sem stopwords devido a menor variabilidade de frases, facilitando a construção dessas regras. 7.4 Elaboração da Stoplist Neste estudo de caso foi definida, em conjunto com especialistas, uma stoplist contendo 59 termos considerados irrelevantes nesse contexto, na qual são incluídas pronomes, preposições, advérbios, entre outros. Essa transcrição foi realizada por meio da análise do CFU Normalizado. Na Figura 7.3 é ilustrada a definição da lista de stopwords a partir de um fragmento de CFU Normalizado, na qual, o usuário identifica o termo considerado irrelevante e o sistema armazena-o na stoplist. Sendo assim, a stoplist definida neste trabalho é apresentada com as suas stopwords organizadas em ordem alfabética crescente no Apêndice A.1, no qual essa lista é exibida utilizando estruturas determinadas na linguagem de marcação XML. 100 Figura 7.3: Exemplo de transcrição de stopwords. 7.5 Definição de Atributos da Base de Dados e de Regras de Mapeamento Após a construção dos CFU, as informações geradas são analisadas com o intuito de definir a estrutura da base de dados, ou seja, a tabela atributo-valor do SCC. Para isso, foram definidos, em conjunto com especialistas, dezesseis atributos representativos com a finalidade de descrever informações relevantes presentes em laudos textuais médicos de EDA. Essas propriedades foram divididas em três grupos de acordo com os seus respectivos tipo de valores, que são apresentados na Seção 7.6. Desse modo, foram definidos nove atributos para a representação dos valores "sim" e "nao" (Grupo 1). Essas características tem a finalidade de representar a presença ou a ausência de enfermidades inflamatórias nas porções de esôfago inferior, médio e superior, as quais são apresentadas a seguir: • esofagite_edematosa_inferior: edemas na região do esôfago inferior; • esofagite_edematosa_medio: edemas no esôfago médio; • esofagite_edematosa_superior: edemas no esôfago superior; • esofagite_erosiva_inferior: erosões no esôfago inferior; • esofagite_erosiva_medio: erosões no esôfago médio; • esofagite_erosiva_superior: erosões no esôfago superior; • esofagite_ulcerada_inferior: úlceras no esôfago inferior; • esofagite_ulcerada_medio: úlceras no esôfago médio; • esofagite_ulcerada_superior: úlceras no esôfago superior. Os atributos que contém os valores "normal" ou "anormal" (Grupo 2) tem o propósito de determinar se as porções do esôfago (inferior, médio e superior) e as características como calibre, distensibilidade e motilidade apresentam anormalidade, correspondendo no total de seis atributos, que são apresentados a seguir: 101 • calibre_esofago: diâmetro interno do esôfago; • distensibilidade_esofago: elasticidade do tecido do esôfago; • motilidade_esofago: capacidade do esôfago de realizar movimentos autônomos; • mucosa_esofago_inferior: condição do esôfago inferior; • mucosa_esofago_medio: situação do esôfago médio; • mucosa_esofago_superior: estado do esôfago superior. Para o grupo de valores "normal", "gi", "gii", "giii" e "giv" (Grupo 3) foi definido apenas um atributo, que é denominado teg_extensao e tem o propósito de determinar se a largura da teg é normal ou caso contrário, apresentar o grau da gravidade de enfermidade. Paralelamente à atividade de definição de atributos, foram definidas as suas respectivas RM, que são foram elaboradas para mapear frases no formato local-característica e localcaracterística-subcaracterística. Para os atributos do Grupo 1, as RM foram definidas para mapear frases que apresentam: • Uma porção do esôfago (inferior, médio, superior), como região; • Presença ou ausência de enfermidade do tipo edema, erosão ou úlcera, na forma "presenca_anormalidade", como característica; • Subcaracterística: "sim" ou "não". Para os atributos do Grupo 2, as RM foram apresentadas na forma local-característicasubcaracterística para a descrição de características do esôfago inteiro, como o calibre, a distensibilidade e motilidade e para a apresentação da situação de uma porção do esôfago e da propriedade do Grupo 3, a RM apresenta o formato local-característica. A seguir são apresentados exemplos de RM para alguns atributos descritos anteriormente: • esofagite_edematosa_inferior: – "esofago_inferior presenca_edema nao"; – "esofago_inferior presenca_edema sim". • calibre_esofago: – "esofago calibre normal"; – "esofago calibre anormal". • mucosa_esofago_medio: – "esofago_medio normal"; 102 – "esofago_medio anormal". • teg_extensao: – "teg normal"; – "teg gi"; – "teg gii"; – "teg giii"; – "teg giv". É importante destacar que os atributos e as RM são representadas por meio de uma ontologia, como a apresentada na Seção 7.6. Também, a base de dados é preenchida apenas após o mapeamento dos laudos textuais, com base nas características determinadas para a tabela atributo-valor. 7.6 Ontologia Construída no Estudo de Caso Para a representação de atributos e de seus respectivos RM em uma ontologia, foi utilizada a linguagem OWL devido ao grande poder de expressividade, à inclusão de todos os recursos da linguagem OWL e a garantia de completude computacional e de operação de expressões por computadores em tempo finito. Sendo assim, nesse sistema é utilizado o esquema de ontologia proposto por Costa, Ferrero, Lee, Coy, Fagundes and Chung (2009), que é organizado pelas seguintes classes (Figura 7.4): • Thing: é a principal classe de todas as ontologias estruturadas na linguagem OWL; • Valor_de_Atributo: determina os valores dos atributos que deverão ser utilizados para o preenchimento da base de dados; • Grupo_va_1: é uma subclasse de Valor_de_Atributo que apresenta os valores "nao" e "sim"; • Grupo_va_2: é uma subclasse de Valor_de_Atributo que descreve os valores "normal" e "anormal"; • Grupo_va_3: é uma subclasse de Valor_de_Atributo que determina os valores "normal", "gi" (grau 1), "gii" (grau 2), "giii" (grau iii) e "giv" (grau 4); • Atributo_Base_de_Dados: representa os atributos da base de dados; • Atributo_Tipo_va_1: é uma subclasse de Atributo_Base_de_Dados que descreve os atributos que são preenchidos pelos valores de Grupo_va_1; • Atributo_Tipo_va_2: é uma subclasse de Atributo_Base_de_Dados que determina os atributos que são preenchidos pelos valores de Grupo_va_2; 103 • Atributo_Tipo_va_3: é uma subclasse de Atributo_Base_de_Dados que estabelece os atributos que são preenchidos pelos valores de Grupo_va_3; • Termo: é destinada para a representação de termos presentes nos laudos pré-processados; • Regiao: é uma subclasse de Termo que descreve as regiões do corpo humano; • Observacao: é uma subclasse de Termo que relata as características e as subcaracterísticas que foram observadas nas regiões representadas pela classe Regiao; • Caracteristica: é uma subclasse de Observacao que representa as informações relevantes que podem ser mapeadas em laudos textuais; • Situacao: é uma subclasse de Observacao que descreve as subcaracterísticas, também denominadas informações complementares; • Anormalidade: é uma subclasse de Situacao que determina as anormalidades descritas em laudos médicos; • Outra_Situacao: é uma subclasse de Situacao que apresenta outras informações complementares. Figura 7.4: Hierarquia de classes da ontologia proposta por Costa, Ferrero, Lee, Coy, Fagundes and Chung (2009). Na ontologia apresentada na Figurafig:ontologiaOWL, as classes são representadas de forma hierárquica e os indivíduos como atributos, possíveis valores, regiões anatômicas e ob- 104 servações são instanciados nas subclasses de níveis mais baixos da hierarquia da estrutura, como Anormalidade, Outra_Situacao, Caracteristica, Regiao e as subclasses relacionadas aos atributos. Para auxiliar na organização do conhecimento presente em laudos médicos por ontologia foram definidas propriedades para desempenhar relacionamentos entre os indivíduos dessa estrutura (Figura 7.6). Assim, uma dessas propriedades de dados é a denominada nomeInstancia, que tem o propósito de descrever um termo para cada elemento, como palavras de laudos textuais pré-processados, atributos da base de dados e possíveis valores para cada tipo de atributo. Essa característica se encontra presente em todas as instâncias de classes. Também, foram definidas as seguintes propriedades de objeto: • observacao: contém os indivíduos que descrevem características e subcaracterísticas em RM; • regiao: representa as instâncias que determinam as porções anatômicas em RM; • valor_da_observacao: apresenta o valor a ser preenchido na tabela atributo-valor caso seja mapeada uma determinada RM. Essa propriedade é associada aos elementos pertencentes às classes Anormalidade e Outra_Situacao; • valor_padrao: determina um valor a ser preenchido em um atributo da tabela atributovalor caso o mesmo não seja mapeado. Essa propriedade, assim como a observacao e a regiao são aplicadas nas instâncias pertencentes às classes Grupo_va_1, Grupo_va_2 e Grupo_va_3. Também, cada instância é referenciada pela propriedade rdf:about, a qual é utilizada por métodos e ferramentas que processam ontologias OWL para identificar cada componente dessa estrutura, como indivíduos, classes e propriedades. Essas referências são atribuídas automaticamente pelo SCC de forma que seja facilmente legível em nível de código por desenvolvedores de ontologias que utilizam a linguagem OWL, permitindo desse modo a intercomunicação, quando necessário, entre ontologias criadas em ferramentas como o Protege e o SCC desenvolvido neste trabalho. Na Figura 7.5 é apresentado o exemplo de ontologia ilustrado na Figura 7.4 com uma instância para cada classe do nível mais baixo dessa hierarquia. Nessa Figura, os retângulos com presença de um círculo de cor alaranjada são classes e os com presença de um prisma de cor roxa são indivíduos instanciados em suas respectivas classes. Assim, as referências de elementos instanciados pelas classes Regiao, Caracteristica, Anormalidade e Outra_Situacao são traduzidas no formato classeIndividuo_numeroIndividuo, no qual classeIndividuo corresponde à classe em que o item se encontra instanciado e numeroIndividuo determina a i-ésima instância cadastrada em uma classe da ontologia. Por exemplo: regiao_01, caracteristica_01, anormalidade_01 e outra_situacao_01. As instâncias das classes Grupo_va_1, Grupo_va_2 e Grupo_va_3 são atribuídas no formato valor_de_atributo_x_numeroIndividuo, em que x é uma referência ao grupo de valores 105 Figura 7.5: Esquema detalhado de ontologia proposta por Costa, Ferrero, Lee, Coy, Fagundes and Chung (2009) com um exemplo de instância para cada classe utilizada para representação de conhecimento. em que o atributo encontra-se instanciado e pode conter apenas os valores "1", "2" ou "3", por exemplo, valor_de_atributo_1_01, que representa o valor de atributo "nao". Os indivíduos das classes Atributo_Tipo_va_1, Atributo_Tipo_va_2 e Atributo_Tipo_va_3 são iguais aos respectivos valores atribuídos pela propriedade nomeInstancia, pois representam os atributos da tabela atributo-valor e as suas respectivas RM. Essas instâncias são definidas de acordo com os grupo de valores que foram escolhidos para o preenchimento de seus atributos na base de dados, por exemplo, se um atributo for do tipo Grupo_va_1, o indivíduo que o representa será instanciado na classe Atributo_Tipo_va_1. Desse modo, as propriedades de objetos são aplicadas nas instâncias que contêm os atributos com a finalidade de representar as RM. Abaixo é apresentado um exemplo de atributo com as suas propriedades: • nomeInstancia: "calibre_esofago"; • regiao: "esofago" (regiao_01); • valor_padrao: "normal" (valor_de_atributo_2_02); • observacao: "calibre" (caracteristica_01); • observacao: "anormal" (anormalidade_01); 106 • observacao: "normal" (outra_situacao_01); Na Figura 7.6 é apresentado o atributo "calibre_esofago" representado na linguagem OWL, no qual owl:Thing é um construtor para a definição de indivíduos, rdf:type é uma propriedade aplicada para estabelecer as classes relacionadas com o indivíduo, NamedIndividual é a classe de todas as instâncias que são definidas pelo construtor owl:Thing, rdf:resource é uma propriedade semelhante à rdf:about que é utilizada para determinar o nome de uma classe ou de uma outra instância. Figura 7.6: Exemplo de atributo representado na linguagem OWL. Nesse contexto, o SCC determina implicitamente os indivíduos para as classes Regiao, Grupo_va_1, Grupo_va_2 e Grupo_va_3, nas quais não é permitido que os usuários definam novos elementos. Os nomes das instâncias de Regiao são: • "esofago" (regiao_01); • "esofago_inferior" (regiao_02); • "esofago_medio" (regiao_03); • "esofago_superior" (regiao_04); • "teg" (regiao_05); • "terco_distal" (regiao_06); • "terco_medio" (regiao_07); • "terco_proximal" (regiao_08). Os itens de Grupo_va_1 são nomeados com valores como: • "nao" (valor_de_atributo_1_01); • "sim" (valor_de_atributo_1_02). 107 Os elementos de Grupo_va_2 são identificados como: • "normal" (valor_de_atributo_2_01); • "anormal" (valor_de_atributo_2_02). As instâncias de Grupo_va_3 possuem nomes como: • "normal" (valor_de_atributo_3_01); • "gi" (valor_de_atributo_3_02); • "gii" (valor_de_atributo_3_03); • "giii" (valor_de_atributo_3_04); • "giv" (valor_de_atributo_3_05). Na Figura 7.7 é apresentado um exemplo de esquema de ontologia expandida na classe Regiao. Figura 7.7: Exemplo de esquema de ontologia criada automaticamente pelo SCC com a classe Regiao expandida. Para as classes Caracteristica, Anormalidade, Outra_Situacao e as subclasses de Atributo_Base_de_Dados, os indivíduos são criados após a definição de um novo atributo por meio de uma tela acessível pela funcionalidade "Conjunto de Atributos" do SCC apresentada na Figura 6.14. Antes da gravação de novos elementos, na ontologia é verificada a existência de um indivíduo nas subclasses de Atributo_Base_de_Dados com o nome igual ao do atributo em definição. Caso seja inexistente, é criada uma nova instância para representar o novo atributo. Também, os termos que representam características e subcaracterísticas na RM são analisados 108 com a finalidade de verificar se foram cadastrados na ontologia. Assim, são criadas instâncias da classe Caracteristica para os termos que descrevem características, da classe Anormalidade para as observações que apresentam o valor "sim", "anormal", "gi", "gii", "giii" ou "giv" e da classe Outra_Situacao para as observações que contém o valor "nao" ou "normal". 7.7 Aplicação do Método Mapeamento por Ontologias em Laudos Médicos Artificiais Com base na estrutura apresentada na Figura 7.4, o PMLM é aplicado em cada cadeia de caracteres presente em um conjunto de laudos médicos. Nesse sentido, ao processar uma frase, o método primeiramente compara cada termo presente na sentença com a informação contida na propriedade nomeInstancia de cada indivíduo das subclasses de Termo com o propósito de verificar se a palavra analisada foi cadastrada na ontologia por meio de RM. Caso o vocábulo não seja encontrado na estrutura, o mesmo é adicionado à lista de termos não-processados, o qual pode ser utilizado posteriormente para a definição de novas RP e RM. Após, nas subclasses de Atributo_Base_de_Dados são analisadas as respectivas instâncias para localizar os atributos que contém RM compatíveis com as palavras da frase que foram localizadas na ontologia e preencher a tabela atributo-valor com o valor dos elementos presentes nas subclasses de Valor_de_Atributo. Por exemplo, na frase "esofago calibre normal", para cada termo, primeiramente o algoritmo realiza uma busca nos indivíduos representados nas subclasses de Termo da ontologia, como a apresentada na Figura7.5, com a finalidade de identificar uma RM compatível com a sentença avaliada e mapear o seu respectivo atributo. Assim, para cada termo é procurado um indivíduo compatível nas classes Região ("esofago"), Caracteristica ("calibre") e Situacao ("normal"), sequencialmente. Após, as RM cadastradas na ontologia são investigadas para identificar o atributo, como o "esofago_calibre", que contenha uma RM compatível com essa frase e mapeá-la para uma base de dados. Também, é importante ressaltar que o algoritmo de mapeamento foi alterado para evitar que os atributos não mapeados sejam preenchidos com seus respectivos valores padrões para evitar representações errôneas semanticamente. Por exemplo, se em um registro (linha) da tabela atributo-valor o atributo "esofagite_erosiva_inferior" for preenchido com o valor "sim", o atributo "mucosa_esofago_inferior" do mesmo registro não pode ocupar o valor "normal", sendo que a outra característica indica presença de erosões no esôfago inferior. Assim, cada atributo não mapeado em um registro é preenchido com o caractere ”-", indicando que um determinado campo está vazio. 109 7.8 Considerações Finais Neste capítulo foram apresentadas distintas abordagens para o mapeamento de laudos médicos, desde a abordagem manual até as duas versões do PMLM, que foram desenvolvidas no LABI da UNIOESTE/Foz do Iguaçu em parceria com o Serviço de Coloproctologia da UNICAMP. A análise do PMLM permitiu constatar que o uso de todas as técnicas é complexo para qualquer pessoa que não conheça detalhadamente o método e principalmente por profissionais que não sejam da área computacional. Isso se deve ao fato de que essas técnicas são executadas separadamente mediante as instruções computacionais, bem como as estruturas utilizadas pelo PMLM devem ser construídas manualmente por meio de uma linguagem de marcação, como o XML. Com o desenvolvimento de uma solução computacional, o PMLM por ontologias foi automatizado por intermédio da integração de todas as suas técnicas no SCC. Nesse sistema não é necessário o conhecimento detalhado de métodos de processamento de textos aplicados pelo processo e de linguagens de marcação para a representação de stoplists, RP, base de dados, RM e atributos. Nesse contexto, o SCC foi utilizado para a realização de uma avaliação experimental em um conjunto de laudos médicos textuais artificiais de exames de EDA. Assim, foram definidas estruturas para a transformação de laudos e a representação do conhecimento, como a stoplist, o AP, a base de dados e a ontologia. Para isso, foram aplicados métodos de processamento de textos laudos para a construção de CFU, os quais eram utilizados como suporte para a definição das estruturas aplicadas na segunda fase do PMLM. Após, os laudos foram processados por intermédio dos métodos de normalização, de remoção de stopwords, de lematização e de padronização. Em seguida, as informações dos laudos uniformizados foram mapeadas para a base de dados (tabela atributo-valor). Esse mapeamento foi realizado de duas formas: manual, no qual o conhecimento presente nos documentos foi transcrito manualmente para uma planilha eletrônica; e automático, em que foi utilizado o SCC para a realização do mapeamento. Desse modo, os resultados da aplicação do PMLM foram avaliados utilizando medidas como média, desvio-padrão, máximo, mínimo, precisão, custo de tempo (apenas para mapeamento manual) e custo computacional. Os resultados obtidos nessas avaliações são apresentados no Capítulo 8. 110 Capítulo 8 Resultados e Discussão 8.1 Considerações Iniciais Após a construção do Sistema Computacional Colaborativo (SCC), o mesmo foi avaliado em conjunto com especialistas do domínio e submetido à aplicação de uma avaliação experimental em um conjunto de 100 laudos médicos textuais artificiais. Para a realização desse experimento, foi realizado um estudo de caso com o propósito de avaliar o desempenho da aplicação do Processo de Mapeamento de Laudos Médicos (PMLM) por ontologias automatizado. Neste capítulo são apresentadas algumas considerações sobre o desenvolvimento do SCC, bem como são apresentados e discutidos os resultados da avaliação experimental da utilização do PMLM automatizado em um conjunto de laudos textuais. Essas avaliações foram realizadas na etapa de avaliação e feedback do processo de desenvolvimento de sistemas por prototipagem, abordagem utilizada para a construção da solução computacional. Nesse mapeamento, cada funcionalidade do sistema foi executado e os resultados avaliados. Sendo assim, a Seção 8.2 são descritas abordagens utilizadas para o mapeamento desses laudos médicos e alguns trabalhos nos quais foram aplicadas essas abordagens. Na Seção 8.3 são discutidos os resultados do desenvolvimento do SCC e na Seção 8.4 são apresentados os resultados e as discussões sobre a aplicação do PMLM automatizado em um conjunto de laudos médicos, tal como são discutidos os resultados do mapeamento manual dos laudos. 8.2 Aplicação do PMLM em Trabalhos Anteriores Conforme apresentado no Capítulo 3, o mapeamento de laudos textuais médicos é geralmente realizado de forma manual para uma base de dados ou planilhas eletrônicas. O mapeamento manual apresenta-se como uma abordagem ineficiente e com elevado custo de tempo, tornando essa atividade inviável para grandes quantidades de documentos textuais. Como mencionado, a primeira versão do PMLM era baseada em Dicionário de Dados. 111 112 Essa proposta foi aplicada em conjuntos de laudos textuais de diversas regiões do sistema digestório, nos quais foram obtidos resultados satisfatórios. Em Cherman, Spolaôr, Lee, Honorato, Coy, Fagundes and Wu (2008), por exemplo, o método foi usado em um conjunto de 100 laudos textuais provenientes de exames de colonoscopia e 609 de exames de Endoscopia Digestiva Alta (EDA), para os quais foram mapeados 82,00% e 100,00% das informações presentes, respectivamente. Assim como o DC, a nova proposta inicial utilizando ontologias, no entanto não automatizada, também foi aplicada efetivamente para o mapeamento de conjuntos de laudos médicos, como em Costa, Ferrero, Lee, Coy, Fagundes and Chung (2010), no qual o PMLM foi aplicado a um conjunto de 3647 laudos de exames de EDA, mapeando aproximadamente 85,82% de suas informações. 8.3 Construção do Sistema Computacional Colaborativo Como descrito no Capítulo 7, a utilização do PMLM por profissionais que não sejam da área computacional ou que não conheçam detalhadamente o método pode não ser uma atividade simples, pois as suas técnicas eram executadas por intermédio de comandos computacionais. Também, a construção de estruturas como o Arquivo de Padronização (AP) e a lista de stopwords (stoplist) eram realizadas manualmente por meio da linguagem de marcação XML. Ainda, para a elaboração de Regras de Mapeamento (RM) e de atributos era necessário utilizar outras ferramentas, como o Protégé, que é empregado para a construção de ontologias. Com o objetivo de automatizar e facilitar o uso do PMLM, neste trabalho foi desenvolvido um SCC. Para a construção do Sistema Computacional Colaborativo (SCC), foi usada a abordagem de engenharia de software denominada processo de desenvolvimento de sistemas por prototipagem em virtude da complexidade dos requisitos e a necessidade do envolvimento de especialistas do domínio para o desenvolvimento de uma solução computacional. Essa abordagem é aplicada em cinco etapas, como apresentado no Capítulo 4. Na Etapa 1 (Comunicação) foram estudados os conceitos sobre o PMLM com o propósito de compreender profundamente o funcionamento dos métodos empregados no processo para a transformação de textos. No Capítulo 6, foram apresentadas limitações do uso do processo por profissionais da área da saúde ou que não conhecem o funcionamento do PMLM, como a execução de técnicas de processamento de textos, as quais eram realizadas manualmente e separadamente com o uso de comandos computacionais executados por meio de interpretadores c Windows e o Terminal de linha de comando, como o Prompt Command (CMD) do Microsoft do Linux. Para o funcionamento correto desses comandos, é necessária a instalação de um interpretador das linguagens Perl e Java, bem como é imprescindível a instalação de outras ferramentas auxiliares e a configuração do computador do usuário. 113 Também, a aplicação do método de pré-processamento aplicado no PMLM denominado stemming pode, em alguns casos, gerar resultados de difícil compreensão por especialistas, acarretando na interpretação errônea de alguns termos, Como apresentado em Fuller and Zobel (1998), a redução de palavras para o seu radical pode acarretar casualmente a uma interpretação semântica incorreta por causa da existência de termos com significados distintos, mas com radicais iguais, conforme apresentado no Capítulo 3. Após a execução de estudos, foram realizadas reuniões em conjunto com especialistas do domínio com a finalidade de definir os requisitos para a construção do SCC. Os principais requisitos foram: a automatização do PMLM; substituição do método de stemming pela técnica de lematização; construção de uma interface web amigável e intuitiva ao usuário; e possibilitar o uso do sistema em qualquer lugar por computadores e outros dispositivo. Na Etapa 2 (Plano Rápido), os requisitos levantados anteriormente foram estudados e analisados com o objetivo de compreendê-los e de determinar as atividades e as tecnologias necessárias para o desenvolvimento de uma solução computacional. Paralelamente, foi verificado se era viável a produção de um sistema computacional para atender às especificações levantadas na Etapa 1. Após, foi iniciado o planejamento da construção do SCC e estudada as tecnologias descritas no Capítulo 5. Na Etapa 3 (Modelagem), para facilitar a compreensão das especificações levantadas nas etapas anteriores, no sistema foi modelado um cenário para cada fase do PMLM. Para o primeiro cenário foram definidas as seguintes funcionalidades: gerenciamento do conjunto de laudos médicos; construção e gerenciamento do CFU; definição e gerenciamento da stoplist; construção e gerenciamento do AP; e definição e gerenciamento do conjunto de atributos. Para o segundo cenário foram determinadas as subsequentes funcionalidades: aplicação de pré-processamento; e realização de mapeamento. Nesse sentido, essas funcionalidades disponibilizam recursos para facilitar a execução de cada técnica de processamento de textos e a definição de estruturas auxiliares como a stoplist, o AP e a ontologia, sem a necessidade do conhecimento detalhado das linguagens e outras tecnologias para esse fim. Também, é possível reaproveitar essas estruturas para realização de novos experimentos. Além disso, no SCC são gerados outros tipos de dados como CFU, laudos padronizados, tabela atributo-valor e lista de termos não processados. Na Etapa 4 (Construção), o SCC foi construído utilizando ferramentas de uso gratuito, dos quais se destaca o JRuby sob o apoio do framework de desenvolvimento web denominado Ruby on Rails (RoR), para a qual estão disponíveis diversas funcionalidades para prover suporte à construção de sistemas, as quais são mantidas e desenvolvidas crescentemente pela comunidade. Para o gerenciamento do cadastro e o controle do acesso ao sistema por meio de login e senha, foi utilizada a gem Devise, a qual constrói automaticamente as telas para a autenticação, o cadastro, a atualização e a remoção de conta de usuário, sendo apenas necessária a customização dessas telas por parte dos desenvolvedores. O controle do acesso ao SCC apresenta grande importância para a segurança de dados dos usuários, principalmente por se tratar de informa- 114 ções médicas, pois é uma das formas mais eficazes para evitar o acesso indevido aos dados, proporcionando confidenciabilidade e integridade dos mesmo. O armazenamento de dados de cadastro de usuários é realizado com o uso do sistema de gerenciamento de bases de dados RoR chamado SQLite devido a sua simplicidade para o gerenciamento, a implementação e a manutenção de base bases de dados. A linguagem de programação Java apoiada pelo ambiente de desenvolvimento NetBeans foi utilizada para a elaboração de métodos que ofereçam suporte para a execução das técnicas de processamento de textos do PMLM que foram escritas na linguagem Perl e a construção e o carregamento de AP, stoplists e ontologias. Assim, foram desenvolvidos os seguintes métodos: gerenciador de CFU; gerenciador de stopwords; gerenciador de Regras de Padronização (RP); configurador de parâmetros; e pré-processador de laudos. Nesse contexto, as tecnologias empregadas para a construção desses métodos oferecem vários recursos, como extensa biblioteca de ferramentas auxiliares, para a produção de sistemas que apresentam requisitos considerados complexos. Para facilitar o uso das técnicas de processamento de textos do PMLM pelo SCC, o código-fonte das mesmas foi alterado para reduzir a complexidade de sua execução em métodos escritos na linguagem Java. Das técnicas alteradas destaca-se a de padronização de laudos, a qual foi reformulada para utilizar apenas um AP que represente todas as RF definidas, mas mantendo as técnicas originais de tratamento de RP de diferentes tipos, como um para um e um para vários. Para a redução da perda de legibilidade causada pela transformação de termos por seus respectivos radicais, a técnica de stemming foi substituída pela de lematização, que tem a finalidade de transformar as palavras para a sua forma simplificada, também denominadas de lemas, como o masculino do substantivo feminino, infinitivo do verbo conjugado, singular de um substantivo plural, entre outros. O uso da lematização possibilita a redução da perda de legibilidade e da variabilidade de palavras, facilitando a descoberta de padrões que podem ser utilizados para a elaboração do RP, RM e de atributos da base dados. Esse método foi implementado utilizando a linguagem Perl para facilitar a sua integração com as técnicas de geração de CFU da primeira fase e de pré-processamento da segunda fase do PMLM. Com a linguagem Perl, também foi desenvolvido um método para automatizar a construção de CFU a partir dos laudos textuais selecionados por usuários na funcionalidade de gerenciamento do conjunto de laudos médicos do primeiro cenário do SCC. Assim, nesse método foi possível integrar ao sistema as técnicas aplicadas no PMLM que foram desenvolvidas na linguagem Perl em trabalhos anteriores realizados no Laboratório de Bioinformática (LABI) e modificados neste trabalho. Também, o método de mapeamento de laudos médicos por ontologias, desenvolvido em Java, foi integrado ao SCC. Para isso, foram elaboradas novas funcionalidades para possibi- 115 litar a realização das seguintes tarefas: seleção de ontologias por usuários; gerenciamento de atributos de bases de dados; imposição de que as RM devem-se encontrar nos padrões localcaracterística-subcaracterística ou local-característica; geração de resultados no formato de texto de forma que simplifique a sua visibilização na interface do sistema; e carregamento e gravação dos resultados do mapeamento como a tabela atributo-valor e a lista de termos não processados. Com o desenvolvimento dessas funcionalidades, o uso do método de mapeamento foi facilitado e aprimorado, bem como não é mais necessário o uso de outras ferramentas computacionais para a construção de ontologias, estando todas as técnicas necessárias para a aplicação do PMLM integradas no SCC. Também, destaca-se que o SCC pode ser utilizado remotamente em qualquer computador ou outro dispositivo computacional e em qualquer lugar, sem a necessidade de instalação e de configuração de um ambiente computacional, sendo necessário apenas o acesso à internet. Outra característica importante desse sistema é a utilização de apenas ferramentas de uso gratuito para sua construção. Além disso, foi construída uma interface web amigável e interativa com o usuário para facilitar o uso do SCC. Para isso, foram utilizadas as linguagens HTML, CSS e Javascript com a finalidade de desenvolver uma página web acessível para cada funcionalidade dos cenários do sistema. As linguagens utilizadas para a elaboração de telas são amplamente aplicadas em sistemas web pela comunidade de desenvolvedores, pois possuem código legível e de fácil uso, bem como é possível desenvolver ferramentas interativas e intuitivas com os usuários. Para a construção das telas do SCC, foi usado o modelo de estruturas propostas por Jung (2012) com a finalidade de padronizá-las de acordo com os projetos desenvolvidos e em desenvolvimento no LABI. Também, para auxiliar no carregamento de laudos, de stoplists, de AP e de ontologias, foi utilizada a gem Paperclip, que constrói automaticamente os gerenciadores de carregamento de laudos do computador do usuário. Na Etapa 5 (Avaliação), o SCC foi avaliado em conjunto com especialistas do domínio, os quais constataram que o mesmo atende às especificações definidas e apresenta-se como de grande valia para a extração e o estudo de padrões que podem ser encontrados nos laudos textuais (Lee, Oliva, Maletzke, Machado, Voltolini, Coy, Fagundes and Wu, 2013). Assim, o sistema pode contribuir com a geração de novos conhecimentos, tais como: desenvolvimento de novos procedimentos médicos; identificação de padrões que podem acarretar à determinadas enfermidades, entre outras. A construção do SCC possibilitou automatizar e facilitar o uso do PMLM por usuários sem a necessidade do conhecimento detalhado dos métodos empregados nesse processo, das linguagens de marcação utilizadas para a representação do conhecimento e de outras ferramentas para a construção de ontologias. Para isso, como mencionado, no SCC são disponibilizadas funcionalidades para o processamento de laudos textuais em dois cenários, sendo cada um correspondente a uma fase do PMLM. 116 No primeiro cenário, é possível carregar laudos textuais remotamente a partir do computador do usuário e visibilizar os seus respectivos conteúdos no sistema, tal como é viável a construção e a visibilização de CFU por intermédio da aplicação de métodos de processamento de textos nesses documentos. Também, é agilizada a definição de stopwords e, posteriormente, a exportação dos termos considerados irrelevantes para uma stoplist; a elaboração de RP, que compõem o AP; e na definição de RM e de atributos da base de dados que irão constituir uma ontologia. O segundo cenário, possibilita o reuso dos laudos usados no primeiro cenário e/ou a abertura de novos conjuntos; a seleção e a aplicação de técnicas de processamento de textos, como normalização, remoção de stopwords, lematização e padronização; e a realização do mapeamento dos laudos uniformizados utilizando ontologias para o preenchimento da base de dados, bem como a visibilização dos resultados, como a tabela atributo-valor (base de dados) e a lista de termos não processados. É importante destacar que o usuário pode armazenar localmente em seu computador os resultados da aplicação do PMLM, como a lista de CFU, a stoplist, o AP, a ontologia, o conjunto de laudos pré-processados para a aplicação do método de mapeamento, a tabela atributo-valor e a lista de termos não processados. Desse modo, o desenvolvimento do SCC foi considerado desafiador, pois além da complexidade dos requisitos e da interdisciplinaridade do projeto, envolveu a interação entre diferentes métodos e ferramentas escritos em linguagens de programação distintas, o que ocasionou em maior tempo de estudos das especificações levantadas inicialmente e de tecnologias para a produção do sistema. 8.4 Avaliação Experimental em Laudos Médicos Artificiais Como apresentado no início deste capítulo, o PMLM automatizado foi aplicado a um conjunto de 100 laudos médicos textuais artificiais construídos por especialistas do Serviço de Coloproctologia da Universidade Estadual de Campinas (UNICAMP). Assim, esses documentos foram submetidos à aplicação de técnicas de processamento de textos em cada fase do PMLM por meio do uso do SCC. No primeiro cenário do sistema, os laudos foram submetidos à aplicação de técnicas de processamento de textos para a construção de estruturas como a stoplist, o AP e a ontologia. Inicialmente, foi construído o primeiro CFU mediante concatenação dos documentos textuais e eliminação de frases repetidas. Em seguida, nesse conjunto de sentenças foi aplicada a técnica de normalização, gerando o CFU Normalizado. Após, foi construída a stoplist apresentada no Apêndice A.1 e aplicado o método de remoção de stopwords no CFU Normalizado para a construção do CFU Normalizado e sem 117 Stopwords. Depois, nesse conjunto foi aplicado o procedimento de lematização, concebendo o CFU Lematizado e sem Stopwords, o qual foi analisado com a finalidade de identificar padrões interessantes para a elaboração RP que irão compor o AP. Essas regras foram geradas no formato local-característica-subcaracterística e local-característica, as quais são apresentadas no Apêndice A.2. Em seguida, O AP foi aplicado por meio da técnica de padronização para a construção do CFU Padronizado. Depois da geração do CFU Padronizado, o mesmo foi utilizado para a definição de atributos que compõem a base de dados e as RM para mapear essas características em laudos textuais para essa base. Esses atributos e RM constituem uma ontologia, que é utilizada para a transformação de documentos textuais não estruturados para o formato estruturado. No segundo cenário do SCC, os laudos utilizados na primeira fase do PMLM foram préprocessados utilizando sequencialmente as técnicas de normalização, de remoção de stopwords, de lematização e de padronização. Nesse pré-processamento foram utilizados a stoplist e o AP definidos no primeiro cenário. Após, as informações presente nos laudos pré-processados foram mapeadas para a base de dados utilizando a ontologia definida anteriormente. Esse mapeamento foi realizada de duas formas: manual, em que essa tarefa é realizada manualmente para uma planilha eletrônica; e automática, na qual o SCC realiza automaticamente essa tarefa. A seguir, são apresentados e discutidos os resultados da avaliação dos dados gerados com a execução do PMLM. A avaliação dos CFU gerados em relação à quantidade de frases é apresentada na Figura 8.1, em que é possível constatar que a quantidade de frases foi reduzida no decorrer da execução das técnicas de processamento de textos do PMLM. Sendo assim, a geração do CFU proporcionou uma redução de 82,25% do número de frases em relação à quantidade total inicial (400 frases), facilitando a análise por parte dos especialistas do domínio. O CFU Normalizado contém a mesma quantia de sentenças em relação ao primeiro conjunto, com o total de 71 observações. A efetuação da técnica de remoção de stopwords acarretou na eliminação de 9,86% das frases do CFU. Com o emprego do método de lematização, o número de sentenças foi reduzido em 4,69% e a padronização do CFU ocasionou na eliminação de 21,31% das observações em relação ao total. Na Figura 8.2 é ilustrada graficamente a quantidade de termos gerados para cada CFU. Nessa figura, o CFU construído inicialmente e o CFU normalizado contém 853 palavras cada, representando uma redução de 66,15% em relação ao total original de 2.520 palavras. Com a geração do CFU Normalizado e sem Stopwords, foi reduzido 50,29% do número total de vocábulos. A aplicação do método de lematização acarretou na eliminação de 2,59% das palavras do CFU e a padronização do CFU determinou na atenuação de 55,45% da quantidade de termos. Nesse sentido, é importante destacar que cada frase não pré-processada do conjunto de laudos contém em média 6,30 termos. No primeiro CFU construído foi constatada uma média de 12,01 palavras por sentença, indicando que a maioria das observações repetidas comportam 118 Figura 8.1: Avaliação dos CFU gerados por quantidade de frases. Figura 8.2: Avaliação dos CFU gerados por quantidade de palavras. a menor quantidade de vocábulos. As frases que apresentam maiores repetições são calibre e distensibilidade normais e motilidade normal, os quais retêm 99 registros cada, correspondendo a 49,50% do número total. A remoção de termos considerados irrelevantes e a lematização resultou em 6,62 e 6,77 palavras por frase, respectivamente. A padronização do CFU acarretou em 3,83 vocábulos por observação, constatando que esse conjunto possui frases que não estão totalmente no formato local-característica ou local-característica-subcaracterística, as quais 119 são adicionadas a uma lista de termos não processados que poderá ser utilizada futuramente para aumentar e atualizar a ontologia, a tabela atributo-valor e as RM. Na Tabela 8.1 são apresentadas as médias, os desvios-padrão, os mínimos e os máximos sobre os resultados da avaliação dos CFU gerados neste trabalho. Tabela 8.1: Resultados da avaliação dos CFU gerados. Frases Termos Média 63,00 542,60 Desvio-padrão 9,46 300,99 Mínimo 48 184 Máximo 71 853 Com base nesta tabela, o menor CFU construído neste trabalho contém 48 frases ou 184 termos e o maior conjunto de CFU contém 71 frases ou 853 termos. Assim, a partir da análise das Figuras 8.1 e 8.2 é constatado que o CFU Padronizado apresenta a menor quantidade de sentenças e de vocábulos e o CFU Normalizado contém o maior número de observações e de palavras. A transcrição automática para a base de dados resultou no mapeamento de 100,00% das informações consideradas relevantes nesses documentos. Nesse contexto, é destacado que 40,00% dos laudos apresentaram termos que não foram processados, pois não foram definidas RP e RM para processá-las. Esses vocábulos são incluídos na lista de termos não-processados, o qual contém 37 palavras diferentes, apresentados em ordem alfabética na Tabela 8.2. Tabela 8.2: Quantidade de termos não-processados. Termo 12 15 2,0 3,0 5 acima avaliacao barrett biopsia circunferencia cm confluente diafragmatico dificultando epiglote especifico espessado extendendo extendento Quantidade 1 1 1 1 1 2 1 5 2 3 5 1 1 1 1 1 8 2 1 Termo extensao gastrico infiltrado junto linear liquido medio miniliase mm moniliase mucosa nao_confluente pincamento piriforme presenca profunda quantidade seio – Quantidade 2 5 1 4 6 1 1 1 2 2 5 10 1 1 1 1 1 1 – Nessa tabela é possível constatar que os termos não-processados com maior incidência nos laudos padronizados são nao_confluente, espessado e linear, os quais foram registrados dez, oito e seis vezes, respectivamente. Desse modo, é importante destacar que a lista de termos 120 não-processados pode ser empregada para a definição de novos atributos, RM e RP, aumentando a variabilidade de opções para a representação do conhecimento. Também, a aplicação do PMLM foi avaliado quanto custo computacional para a execução das técnicas de processamento de textos e ao tempo estimado para a construção da stoplist, do AP e da ontologia. O custo computacional de cada técnica de transformação de textos aplicada no PMLM por meio do SCC é diretamente relacionado com a quantidade de laudos utilizados para o préprocessamento e pode ser organizado de acordo com as duas fases do processo (cenários no SCC). Na Tabela 8.3 é apresentado o custo computacional, em termos de complexidade, para a execução de cada método do PMLM, bem como o número de operações de comparação realizadas. Como referência para o tempo de execução correspondente, considerou-se neste trabalho um computador capaz de executar um milhão de instruções por segundo, ou seja, equivalente a um computador com processador Intel 4004 de 1.000 KHz (Ziviani, 2010). Nessa tabela têm-se: • NL : quantidade de laudos; • NM C : número médio de caracteres por frase; • NM F : número médio de frases por laudo; • NM T : número médio de termos por frase; • NRL : número de regras de lematização; • NS : quantidade de stopwords; • NP : quantidade de RP; • NRM : quantidade de RM. O conjunto de 100 laudos (NL ) utilizado neste estudo de caso contém no total 15.798 caracteres, sendo contabilizados 39,50 por frase (NM C ). Cada frase contém em média 6,30 termos (NM T ) e cada laudo desse conjunto contém quatro frases em média (NM F ). Tabela 8.3: Complexidade dos métodos empregados no PMLM e os respectivos valores em número total de comparações para 100 laudos. Método Construção de CFU (E1) Normalização (E2) Remoção Stopwords (E3) Lematização (E4) Padronização (E5) Mapeamento (E6) Complexidade O(NM C × (NM F × NL )2 + NM F × NM C × NL ) O(NM F × NM C × NL ) O(NM F × NS × NL × NM T ) O(NM F × NRL × NL × NM T ) O(NM F × NP × NL × NM T ) O(3 × NM F × NRM × NL × NM T ) No de Comparações 6.407.980 15.800 148.680 65.520 204.120 264.600 Como apresentado no Capítulo 7, para a aplicação das técnicas de remoção de stopwords e de padronização foram definidas 59 palavras consideradas irrelevantes (NS ) e 81 RP (NP ), 121 respectivamente. Com relação à aplicação da técnica de lematização, neste estudo de caso foram definidas um total 26 regras (NRL ) para a substituição de sufixos de palavras. Na ontologia utilizada no estudo de caso, os atributos apresentam uma RM para cada valor possível relacionado ao tipo de dados que os mesmos representam. Nessa ontologia, quinze atributos são do tipo que apresentam dois valores possíveis, isto é, pertencentes ao Grupo 1 ("sim" ou "nao") e ao Grupo 2 ("normal" ou "anormal"), determinado duas RM para cada atributo, totalizando 30 regras. Para o Grupo 3 ("normal", "gi", "gii", "giii" ou "giv"), foi definido um atributo com cinco RM. Essa ontologia contém portanto o total de 35 RM (NRM ). Como mencionado, a análise do custo computacional para a execução do PMLM completo, considerando que ainda não existem as estruturas AP, base de dados, ontologia e stoplist, que devem ser construídas apenas para o primeiro mapeamento e podem ser reutilizadas para mapeamentos posteriores do mesmo tipo de laudos, pode ser organizada em duas partes, de acordo com as duas fases do processo ou cenários do SCC. Assim, na primeira fase (cenário 1 do SCC), o custo computacional total é de 24.621,84 segundos (6 horas 50 minutos e 21,84 segundos), estimados do seguinte modo: 1. Construção de CFU normalizado, com remoção de stopwords, lematizado e padronizado: E1 + E2 + E3 + E4 + E5 baseado nas complexidades apresentadas na Tabela 8.3, ou seja, 6.842.280 de comparações equivalentes a 6,84 segundos; 2. Análise dos CFU e construção da stoplist contendo 59 stopwords (Tarefa 1): 1.800 segundos (30 minutos); 3. Construção do AP (Tarefa 2): 13.365 segundos (3 horas 42 minutos e 45 segundos) para 81 RP (165 segundos ou 2 horas e 45 segundos para a definição de cada RP); 4. Construção da ontologia (Tarefa 3): 9.450 segundos (2 horas 37 minutos e 30 segundos) para 35 RM (270 segundos ou 4 minutos e 30 segundos para a definição de cada RM). Para a segunda fase (cenário 2 do SCC), o custo computacional é de E2 + E3 + E4 + E5 + E6, totalizando 698.900 comparações (0,70 segundos). Assim, o custo total da aplicação das técnicas de processamento de textos nas duas fases do PMLM é de (Tarefa 1 + Tarefa 2 + Tarefa 3) + E1 + 2 × (E2 + E3 + E4 + E5) + E6, isto é, a 24.622,54 segundos (6 horas 50 minutos e 22,54 segundos). Para o mapeamento manual, as informações contidas nos laudos padronizados foram transcritas para uma planilha eletrônica, neste caso específico o Excel. Nessa base de dados, foram definidas 17 colunas, na qual uma é utilizada para o preenchimento de células com o nome dos laudos e 16 para a representação dos atributos. Em seguida, o conhecimento lido em cada um desses documentos foi transcrito manualmente para a planilha desenvolvida anteriormente, preenchendo cada atributo identificado nos laudos. O tempo médio para o mapeamento 122 foi de 95 segundos por laudo, totalizando 9.500 segundos, ou seja, aproximadamente 2 horas e 38 minutos. A este tempo estimado, é imprescindível acrescentar o custo de tempo necessário para a definição dos atributos que irão compor a base de dados. Esta tarefa também requer a construção e a análise de CFU, de modo que os padrões a serem mapeados possam ser identificados. Neste trabalho foi estimado o tempo de 10.560 segundos (2 horas 56 minutos) para para esta tarefa, divididos do seguinte modo: • 5 segundos para copiar e colar as frases de cada laudo em um aplicativo que permita manipular as frases dos laudos, como o Excel (subtotal de 500 segundos); • 10 segundos para selecionar a opção no aplicativo que permite ordenar as frases; • 600 segundos para identificar e excluir as frases repetidas; • 9450 segundos, equivalente a Tarefa 3, para analisar o CFU e criar a base de dados. Desse modo, o custo de tempo total estimado para a realização do mapeamento manual foi de 5 horas e 34 minutos. Para prover uma visão mais ampla sobre o desempenho comparativo entre as abordagens de mapeamento manual e automático, na Figura 8.3 é apresentado um gráfico da relação número de laudos (em centenas) versus minutos. É importante relembrar que, apesar do tempo elevado para a construção das estruturas AP, ontologia, base de dados e stoplist, essas estruturas necessitam ser definidas apenas na primeira execução do PMLM automatizado e poderão ser reutilizadas nos mapeamentos posteriores de outros laudos do mesmo domínio. Além disso, a segunda fase do PMLM apresenta custo extremamente baixo de execução. Em contrapartida, no mapeamento manual, o tempo para a transcrição das informações por documento é constante e portanto, cresce linearmente de acordo com o número de laudos a serem analisados, como pode ser observado na Figura 8.3. Outra vantagem do PMLM automatizado é a possibilidade de fácil identificação e inclusão de novos atributos, apoiado pela identificação automática dos termos não mapeados anteriormente. Nesse contexto, é possível observar que a partir de 260 laudos, considerando documentos com características semelhantes aos empregados neste estudo de caso, o custo de tempo para a aplicação do PMLM automatizado será menor que o da transcrição manual (Figura 8.3). 8.5 Considerações Finais Neste trabalho, foi construído o SCC com o intuito de automatizar o PMLM por ontologias. Para isso, foram utilizadas as tecnologias apresentadas no Capítulo 5, das quais se destaca a linguagem JRuby, que possibilita o uso de métodos escritos nas linguagens Ruby e Java si- 123 Figura 8.3: Avaliação do desempenho em relação ao tempo para o mapeamento manual e automático. multaneamente. Para a construção de um sistema web de forma rápida e eficiente, o principal framework utilizado foi o Ruby on Rails (RoR). Após a construção da solução computacional e a sua apreciação por especialistas do domínio, o sistema foi utilizado para a realização de uma avaliação experimental em um conjunto de 100 laudos médicos artificiais de exames de EDA, apresentando resultados considerados muito bons. Na abordagem manual, foram mapeados todos os atributos presentes nos laudos para a base de dados com o tempo médio de 95 segundos por documento textual, totalizando aproximadamente 2 horas e 38 minutos. Nesse sentido, o mapeamento manual apresenta-se ineficiente quando aplicado em grandes quantidades de dados, pois é necessária a efetuação de um imenso esforço repetitivo em um longo período, podendo acarretar em transcrições errôneas e desestimular a realização de estudos em grandes quantidades de laudos. Com a transcrição automática por intermédio do SCC, foram mapeados 100% dos atributos presentes nesses laudos. Apesar de que algumas palavras não foram processadas, devido à inexistência de RP para tratá-las ou de RM para mapeá-las, a execução do método apresentou 124 bons resultados, ratificando com as avaliações realizadas em trabalhos anteriores. Nesse sentido, a lista de termos não processados pode ser empregada para a elaboração de novas regras para a transformação e o mapeamento do conhecimento presente em textos médicos, tal como os seus elementos podem ser incluídos na lista de vocábulos considerados irrelevantes (stoplist) de modo que seja possível a eliminação ou a redução de inconsistências de documentos textuais processados pelo PMLM. Sendo assim, a representação adequada de frases apresenta-se fundamental para que o método de mapeamento seja aplicado corretamente e obtenha resultados satisfatórios. Neste trabalho, por exemplo, as RM da ontologia representam as frases no formato local-característica ou local-característica-subcaracterística, ou seja, é recomendado que as sentenças de laudos pré-processados estejam representados dessa maneira. Nesse contexto, a aplicação do PMLM automatizado apresenta-se promissora para a extração de padrões em laudos médicos e a representação do conhecimento em base de dados estruturadas, como a tabela atributo-valor. Com o segundo cenário do SCC, a transformação de laudos e o mapeamento de suas informações são realizadas automaticamente, sendo apenas necessária a seleção de técnicas de processamento de textos e a existência de estruturas como a stoplist, o AP e a ontologia cadastradas remotamente na pasta do usuário no sistema. No Capítulo 9, são apresentadas as conclusões adquiridas durante o desenvolvimento deste trabalho, as principais contribuições e limitações do SCC e as sugestões para desenvolvimento de trabalhos futuros. Capítulo 9 Conclusão Atualmente, devido às grandes quantidades de informações médicas armazenadas em bases de dados em hospitais e clínicas, é fundamental o desenvolvimento de métodos e de ferramentas computacionais para auxiliar na análise e no gerenciamento desses dados. Um dos processos que podem prover apoio nessa análise é o de Mineração de Dados (MD), que permite a identificação de padrões contidos nos dados, os quais podem contribuir para a aquisição de importantes conhecimentos, como: elaboração de novos medicamentos; criação e aperfeiçoamento de procedimentos médicos; novas formas para o diagnóstico e o tratamento de enfermidades; fatores que aumentam os riscos para a progressão de certas doenças; entre outros. Outra possibilidade de uso desses padrões é a construção de modelos preditivos por meio de técnicas de Inteligência Computacional (IC) para prover suporte aos especialistas em diversas áreas, como na da saúde no diagnóstico de enfermidades e em processo de tomadas de decisão. Imensa parte das informações registradas nas bases de dados médicos são provenientes de exames clínicos, laboratoriais e de imagens, os quais são descritos em laudos textuais com a finalidade de representar observações a respeito do estado de saúde dos pacientes, procedimentos médicos, medicamentos, entre outros. Esses laudos, além de serem comumente representados de forma não-estruturada, ou seja, em língua natural, podem conter, por exemplo, erros de digitação e de ortografia, falta de preenchimento de informações importantes, entre outros, dificultando a aplicação direta de MD. Nesse sentido, o Processo de Mapeamento de Laudos Médicos (PMLM) pode ser amplamente utilizado para a transformação de laudos textuais a fim de representá-los em um formato adequado para a realização de MD, auxiliando na extração e na descoberta do conhecimento. Para possibilitar o uso do método por profissionais que não conheçam detalhadamente o processo ou que não sejam da área computacional, como os da área de saúde, neste trabalho foi construído um Sistema Computacional Colaborativo (SCC) para automatizar e aprimorar o PMLM por meio da integração de todos os métodos propostos e inseridos neste processo. Durante o desenvolvimento deste trabalho, foi realizada a revisão bibliográfica, na qual foram estudados conceitos relacionados ao PMLM por ontologias com a finalidade de compreender o funcionamento e as limitações do método. Para isso, foram estudadas as técnicas 125 126 e as estruturas utilizadas no PMLM, bem como foi realizado o mapeamento manual, seguindo os métodos do PMLM em um conjunto de laudos textuais artificiais que simulam exames de Endoscopia Digestiva Alta (EDA) para verificar detalhadamente o funcionamento do processo e do sistema em desenvolvimento. Após, foi realizado um estudo de caso com a finalidade de propor e desenvolver uma ferramenta para reduzir as limitações do uso do PMLM por usuários que não fossem da área computacional. Assim, nesse estudo foi desenvolvido um SCC com o propósito de automatizar e de consolidar o PMLM. Nesse sistema foram construídas funcionalidades para cada fase do método, tal como foi proposta a substituição da abordagem de transformação de textos denominada stemming pela lematização para aprimorar a representatividade dos termos presentes nos laudos, facilitando e melhorando a padronização. A técnica de lematização passou a ser utilizada também na segunda fase, de modo que o próprio processo de busca na ontologia e o mapeamento para a base de dados fosse otimizado. No SCC, foi definida uma interface gráfica web com o intuito de possibilitar o seu uso em qualquer lugar que tenha acesso à Internet e sem a necessidade de instalação de softwares e de configuração da máquina do usuário. Esse sistema foi organizado em dois cenários baseados nas duas fases do PMLM e cada uma das tarefas é disponibilizada ao usuário por meio de telas específicas de modo que cada técnica de processamento seja facilmente aplicada e os resultados sejam visibilizados de modo direto e simples. O SCC foi avaliado em conjunto com especialistas do domínio, os quais o consideraram como promissor para a extração e o estudo de padrões que podem ser identificados em laudos textuais médicos. Também, o SCC foi utilizado para avaliar o desempenho de sua aplicação em um conjunto de laudos médicos textuais artificiais, no qual se obteve resultados considerados muito bons. 9.1 Principais Desfechos deste Trabalho Com a concepção do SCC e o resultado de sua avaliação, é possível obter as seguintes conclusões: • A automatização e a consolidação do PMLM por meio de um SCC possibilita o uso do método por especialistas de outras áreas, como da área médica, sem a necessidade da participação de profissionais da área computacional; • O SCC proporciona a aplicação do método de mapeamento de forma mais objetiva, ágil, eficiente e com menor custo de tempo por meio de uma interface gráfica web amigável e intuitiva ao usuário; • O sistema oferece recursos que facilitam a elaboração de Regras de Padronização (RP) e 127 de Regras de Mapeamento (RM) sem a necessidade do conhecimento técnico de linguagens de marcação para representá-las; • Para a construção de ontologias não é necessária a utilização de outras ferramentas, como o Protégé; • É possível reutilizar as estruturas de representação do conhecimento para a realização de outros experimentos; • O desenvolvimento deste trabalho foi considerado desafiante, visto que além de envolver interdisciplinaridade, necessitou o uso de tecnologias escritas em distintas linguagens de programação; • A integração das técnicas de processamento de textos utilizadas no PMLM viabiliza a realização de estudos mais completos e detalhados em conjuntos de laudos médicos por profissionais da área de saúde; • O SCC pode contribuir em descobertas importantes por meio da identificação e do estudo de padrões encontrados em laudos médicos. 9.2 Limitações Durante e após o desenvolvimento deste trabalho foram identificadas limitações do SCC, as quais são descritas a seguir: • No sistema não é possível determinar exceções para regras de lematização; • Para a definição de algumas RP, é exigido o conhecimento do usuário sobre Expressões Regulares (ER); • A construção de RM pode ser realizada apenas de uma única forma (local-característicasubcaracterística). No entanto, esta forma se mostrou adequada, até o momento, do ponto de vista dos especialistas do domínio; • No SCC não é realizado tratamento semântico de RM para correção de erros relacionados ao preenchimento de informações por especialistas, podendo influenciar no desempenho da aplicação do método de mapeamento; • O estudo de caso foi restrito a um conjunto de laudos textuais artificiais de exames de EDA. No SCC, foi proposta a substituição da técnica de stemming pela lematização com a finalidade de aprimorar a transformação de laudos textuais por meio do uso de regras de lematização em cada termo, modificando para sua forma canônica, mediante a substituição de sufixos de substantivos femininos e/ou plurais por sufixos que convertem esses vocábulos para 128 substantivos masculinos e infinitivos. No entanto, existem palavras na forma canônica que apresentam sufixos compatíveis com regras de lematização, podendo acarretar na modificação errônea desses termos. Por exemplo, na palavra "mucosa"pode ser aplicada a regra "osa"→ "oso", transformando-o erroneamente em "mucoso". Assim, é necessário o desenvolvimento de uma funcionalidade no SCC que possibilite ao usuário a inclusão de exceções para as regras de lematização, isto é, definição de uma lista de vocábulos que não devem ser processados pelo método de lematização. Nos laudos médicos, mesmo com a execução de técnicas como normalização, remoção de stopwords e lematização, as frases podem apresentar algumas peculiaridades que dificultariam a aplicação de RP durante a uniformização dos laudos, como o excesso de espaços em branco entre termos, os erros de digitação, a presença de certos vocábulos entre sentenças, as medidas, entre outros. Para eliminar ou reduzir esses problemas, podem ser aplicadas ER para a identificação de padrões nos termos presentes em documentos textuais. No entanto, para a inclusão dessas expressões em RP é necessário o conhecimento técnico para a sua elaboração, que é incomum em profissionais que não sejam da área computacional e que não possuam conhecimento detalhado do método. Apesar do sistema facilitar a definição de atributos e de RM, no mesmo só é possível a definição de regras apenas no formato local-característica-subcaracterística. No entanto, esta forma se mostrou adequada, até o momento, do ponto de vista dos especialistas do domínio, pois em trabalhos anteriores, a sua aplicação para o desenvolvimento de regras tanto para ontologias quanto para Dicionários do Conhecimento (DC) apresentaram resultados satisfatórios ao serem utilizados na execução do mapeamento de conhecimento em laudos textuais médicos. O sistema não permite a realização de tratamento semântico de RM para evitar o preenchimento errôneo da tabela atributo-valor. Por exemplo, como apresentado no Capítulo 7, se em uma linha dessa tabela o atributo esofagite_erosiva_inferior for preenchido com o valor sim, no atributo mucosa_esofago_inferior deve ser atribuído o valor anormal. No entanto, o SCC não garante que essas atribuições sejam feitas semanticamente corretas, isto é, se esofagite_erosiva_inferior contiver o valor "sim" é possível que mucosa_esofago_inferior seja ocupado com o valor "normal". Esse tipo de erro é causado em consequência do preenchimento errôneo de informações em laudos textuais por parte dos especialistas. Assim, é imprescindível a inclusão de procedimentos para a criação de regras semânticas com o propósito de aprimorar a interpretação de RM pelo método e evitar esse tipo de erro. Neste trabalho, a aplicação do PMLM automatizado foi limitado a um conjunto de laudos médicos artificiais. A devida documentação para que se possa utilizar dados reais está sendo providenciada e outros estudos de caso serão realizados após. 129 9.3 Principais Contribuições As principais contribuições deste trabalho incluem: • Maior agilidade e facilidade para a aplicação do PMLM; • Redução da dependência de especialistas da área computacional para o uso do método; • Facilidade para a representação de RP e de RM; • Possibilidade de fácil identificação de padrões não mapeados e atualização da ontologia para abranger os mesmos; • Viabilidade para a definição de vocabulário padrão para termos médicos; • Construção padronizada e automatizada de grandes bases de dados para estudos futuros; • Possibilidade de identificação de padrões relevantes em laudos médicos; • Auxílio no gerenciamento e na análise dados médicos; • Publicação de resultados em eventos científicos. Devido às dificuldades para o uso do PMLM por profissionais da área médica, foi realizado o planejamento para o desenvolvimento do SCC para automatizar e facilitar o uso do processo tanto por especialistas da área de saúde quanto por profissionais de outras áreas do conhecimento. Nesse sistema foi construída uma interface gráfica web visando facilitar o uso do mesmo e omitir a necessidade de instalação de softwares adicionais e de configuração da máquina por parte do usuário. Também, é destacada a facilidade do uso de cada técnica sem a necessidade do usuário executar instruções computacionais e a disponibilidade de funcionalidades para geração de stoplists, de Arquivos de Padronização (AP) e de ontologias sem a necessidade de conhecimento técnico sobre as linguagens utilizadas para a construção dessas estruturas. Nessas tarefas implementadas em funcionalidades específicas é possível visibilizar os Conjuntos de Frases Únicas (CFU) gerados, facilitando a identificação de stopwords e a elaboração de RP e de RM. Outro recurso que facilita o uso do PMLM é a possibilidade da seleção, pelos usuários, de técnicas para a transformação dos laudos que serão processadas pelo método de mapeamento para o preenchimento da tabela atributo-valor. Por fim, nesse sistema é permitida a visibilização e a gravação dos resultados gerados pelo PMLM. Um termo médico pode apresentar vários sinônimos e as frases podem ser estruturadas de várias formas para descrever uma mesma característica observada em exames de pacientes, dificultado a aplicação de MD em estudos futuros. Nesse sentido, é necessária a utilização de métodos para a redução da complexidade das sentenças desses laudos. No sistema desenvolvido neste trabalho é disponibilizada uma funcionalidade para a construção de AP de modo ágil e intuitivo. Com a facilidade para a definição de RP, é possível propôr vocabulários padrões para a estruturação de laudos textuais de modo que seja reduzido e padronizado o uso de sinônimos para descrições médicas, diminuindo a diversidade das frases. 130 A utilização do PMLM era uma atividade considerada complexa por especialistas da área da saúde, pois exigia conhecimento técnico de vários conceitos relacionados com a área computacional, como linguagens de marcação e de programação, tal como o uso instruções computacionais para a execução de cada técnica de processamento, dificultando a realização de estudos em conjuntos de laudos médicos. Com a automatização do processo e a disponibilidade de funcionalidades para a concepção de estruturas utilizadas no método mediante ao SCC é possível a efetuação de estudos mais complexos e detalhados em laudos médicos, bem como construir grandes bases de dados para esse fim por meio das informações mapeadas. Da mesma forma, os dados mapeados podem ser empregados em aplicações de MD, auxiliando na descoberta de padrões relevantes nesses dados e na contemplação de novos conhecimentos. Nesse contexto, durante o desenvolvimento deste trabalho foram publicados um resumo e um artigo completo no 62o Congresso Brasileiro de Coloproctologia sob o título de "Sistema Computacional para Automatização do Processo de Mapeamento de Laudos Médicos por Ontologias", no ano de 2013. Esse trabalho foi escolhido entre os sete melhores deste importante congresso, considerado um dos mais relevantes da área, bem como foi escolhido para ser publicado no Journal of Coloproctology em 2014. Também, como atividade paralela a este trabalho, foi desenvolvido um aplicativo para dispositivos móveis denominado Sistema Computacional para Análise de Imagens Médicas (SCAIMED-Mobile) com a finalidade de auxiliar na extração de características em fragmentos de imagens de tecidos cólicos. Os resultados referentes à construção do SCAIMED-Mobile foram publicados no 62o Congresso Brasileiro de Coloproctologia sob o título de "Protótipo de um Sistema Móvel para a Extração de Características em Fragmentos de Imagem de Tecido Cólico". É importante ressaltar também que está em fase de confecção do registro de software do SCC para ser submetido ao Instituto Nacional de Propriedade Industrial (INPI), como um projeto conjunto entre o Laboratório de Bioinformática (LABI), o Programa de Pós-graduação em Sistemas Dinâmicos e Energéticos da UNIOESTE e o Serviço de Coloproctologia da Faculdade ele Ciências Médicas da UNICAMP. Posteriormente, serão também realizadas outras publicações dos resultados finais deste trabalho 9.4 Trabalhos Futuros Após a construção e a avaliação do sistema, foram constatados diversos trabalhos futuros que podem trazer melhorias e aumentar a aplicabilidade do SCC. Desse modo, trabalhos futuros incluem: • Realizar testes em laudos médicos reais; • Executar testes mais amplos e complexos no sistema; 131 • Disponibilizar no SCC uma funcionalidade que permita aos usuários definirem termos que não devam ser processados pelo método de lematização; • Incluir outras abordagens de processamento de textos para aumentar a representatividade dos laudos médicos; • Adicionar procedimentos de monitoramento de qualidade de dados para auxiliar na construção de bases dados complexas e sem inconsistências; • Viabilizar a criação automática de laudos textuais a partir do processamento de imagens, de vídeos, de áudios, entre outros; • Oferecer suporte à criação de regras semânticas com o objetivo de propiciar a sincronização de atributos para controlar o preenchimento da tabela atributo-valor por meio do tratamento de possíveis erros relacionados ao preenchimento de dados em laudos textuais por especialistas; • Integrar o sistema com outros projetos em desenvolvimento no Laboratório de Bioinformática (LABI) da Universidade Estadual do Oeste do Paraná (UNIOESTE/Foz do Iguaçu); • Divulgação do trabalho por meio de publicações de trabalhos científicos, de relatórios técnicos e de registro de software. 132 Referências Bibliográficas Abacha, A. B. and Zweigenbaum, P. (2011). Medical entity recognition: a comparison of semantic and statistical methods, In Proceedings of BioNLP 2011 Workshop, Stroudsburg, pp. 56–64. Adobe Systems (1990). Postscript Language Reference Manual, Addison-Wesley, Reading. Ananiadou, S. and Mcnaught, J. (2005). Text Mining for Biology And Biomedicine, Artech House, Norwood. Bechhofer, S., van Harmelen, F., Hendler, J., Horrocks, I., McGuinnes, D. L., Patel-Schneider, P. and Stein, L. A. (2004). OWL Web Ontology Language Reference, Disponível em: http://www.w3.org/TR/2004/REC-owl-ref-20040210/. Acesso em: 27 de jan. 2014. Berners-Lee, T., Hendler, J. and Lassila, O. (2006). The semantic web revisited, IEEE Intelligent Systems 21(3): 96–101. Bodenreider, O. and Burgun, A. (2005). Biomedical ontologies, in H. Chen, S. S. Fuller, C. Friedman and W. Hersh (eds), Medical Informatics: knowledge management and Data Mining in biomedicine, Springer, New York, pp. 211–236. Boudreau, T., Glick, J. and Spurlin, V. (2002). NetBeans: the definitive guide, O’Reilly Media, Sebastopol. Branco, A. and Silva, J. (2007). Very high accuracy rule-based nominal lemmatization with a minimal lexicon, Anais do XXI Encontro Anual da Associação Portuguesa de Linguística, Lisboa, pp. 169–181. Braude, E. (2005). Projeto de Software: da programação à arquitetura: uma abordagem baseada em Java, Bookman Companhia Editora LTDA, Porto Alegre. Bray, T., Paoli, J., Sperberg-McQueen, C. M. and Maler, E. (1996). Extensible Markup Language (XML) 1.0, Disponível em: http://www.w3.org/TR/WD-xml-961114.html. Acesso em: 27 de jan. 2014. Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E. and Yergeau, F. (2006). Extensible Markup Language (XML) 1.0 (second edition), Disponível em: http://www.w3.org/TR/xml11/. Acesso em: 27 de jan. 2014. Brickley, D. and Guha, R. V. (2004). RDF Vocabulary Description Language 1.0: RDF Schema, Disponível em: http://www.w3.org/TR/2004/REC-rdf-schema-20040210/. Acesso em: 27 de jan. 2014. Campbell, K. E. (1998). The unified medical language system: Toward a collaborative approach for solving terminologic problems, Journal of the American Medical Informatics Association 1(5): 12–16. 133 134 Carlson, L. and Richardson, L. (2006). Ruby Cookbook, O’Reilly Media, Sebastopol. Castro, E. and Hyslop, B. (2013). HTML and CSS: Visual QuickStart Guide, Peachpit Press, San Francisco. Cherman, E. A., Lee, H. D., Honorato, D. F., Fagundes, J. J., Góes, J. R. N., Coy, C. S. R. and Wu, F. C. (2007). Metodologia de mapeamento de laudos médicos para bases de dados: aplicação em laudos colonoscópicos, Anais do II Congresso da Academia Trinacional de Ciências, Foz do Iguaçu, pp. 1–9. Cherman, E. A., Spolaôr, N., Lee, H. D., Costa, L. H. D., Fagundes, J. J., Coy, C. S. R. and Wu, F. C. (2008). Metodologia de mapeamento computacional de informações médicas: aplicação em laudos de coloscopia e manometria anorretal, 57o Congresso Brasileiro de Coloproctologia, Vol. 28, Revista Brasileira de Coloproctologia, pp. 42–42. Cherman, E. A., Spolaôr, N., Lee, H. D., Honorato, D. F., Coy, C. S. R., Fagundes, J. J. and Wu, F. C. (2008). Um estudo do mapeamento de laudos médicos de endoscopia digestiva alta e colonoscopia para aquisição de conhecimento, Anais do VII Workshop de Informática Médica, Belém, pp. 1–10. Cherman, E. A., Spolaôr, N., Lee, H. D. and Wu, F. C. (2008). Mapeamento automático de laudos médicos para extração de conhecimento, Anais do VIII Safety, Health and Environmental World Congress, Rio de Janeiro, pp. 1–1. Chrupala, G. (2006). Simple Data-Driven Context-Sensitive Lemmatization, Procesamiento del Lenguaje Natural 37(0): 121–127. Chute, C. B. (2005). Medical concept representation, in H. Chen, S. S. Fuller, C. Friedman and W. Hersh (eds), Medical Informatics: knowledge management and Data Mining in biomedicine, Springer, New York, pp. 165–182. Corcho, O. and Gómez-Pérez, A. (2000). A roadmap to ontology specification languages, In Proceedings of the 12th European Workshop on Knowledge Acquisition, Modeling and Management, New York, pp. 80–96. Cordeiro, F. (1994). Endoscopia Digestiva, Editora Média e Científica, Rio de Janeiro. Costa, L. H. D., Ferrero, C. A., Lee, H. D., Coy, C. S. R., Fagundes, J. J. and Chung, W. F. (2009). Construção de uma ontologia para auxiliar no mapeamento de laudos médicos de endoscopia digestiva alta para bases de dados estruturadas, Anais do IV Congresso da Academia Trinacional de Ciências, Foz do Iguaçu, pp. 1–9. Costa, L. H. D., Ferrero, C. A., Lee, H. D., Coy, C. S. R., Fagundes, J. J. and Chung, W. F. (2010). Mapeamento de laudos médicos de endoscopia digestiva alta apoiados por ontologias, Anais do X Workshop de Informática Médica, Belo Horizonte, pp. 1–10. Cotran, R. S., Kumar, V. and Collins, T. (1996). Patologia Estrutural e Funcional, Guanabara Koogan, Rio de Janeiro. Crockford, D. (2008). JavaScript: The Good Parts, O’Reilly Media, Sebastopol. Deitel, H. M. (2012). Xml: como programar, Bookman, Porto Alegre. 135 Deitel, H. M. and Deitel, P. D. (2010). Java: como programar, Pearson, São Paulo. Farquhar, A., Fikes, R. and Rice, J. (1997). The ontolingua server: a tool for collaborative ontology construction, International Journal of Human-Computer Studies 46(6): 707–727. Ferguson, R. and Heilmann, C. (2013). Beginning JavaScript with DOM Scripting and Ajax, Apress, Berkely. Filho, W. P. P. (2009). Engenharia de Software: fundamentos, métodos e padrões, LTC, Rio de Janeiro. Flanagan, D. (2006). JavaScript: the definitive guide, O’Reilly Media, Sebastopol. Fox, M., Barbuceanu, M., Gruninger, M. and Lin, J. (1998). An organizational ontology for enterprise modeling, in M. Prietula, K. Carley and L. Gasser (eds), Simulating Organizations: computational models of institutions and groups, AAAI/MIT Press, Menlo Park, pp. 131–152. França, P. C. (2009). Conceitos, classes e/ou universais: com o que é que se constrói uma ontologia?, Linguamatica 1(1): 105–121. Friedl, J. E. F. (2006). Mastering Regular Expressions, O’Reilly Media, Sebastopol. Fuller, M. and Zobel, J. (1998). Conflation-based comparison of stemming algorithms, In Proceedings of the Third Australian Document Computing Simposium, Sydney, pp. 8–13. Garcia, A. C. B. and Sichman, J. S. (2003). Agentes e sistemas multiagentes, in S. Rezende (ed.), Sistemas Inteligentes: fundamentos e aplicações, Editora Manole, Barueri, pp. 269– 306. Genesereth, M., Fikes, R. E., Brachman, R., Gruber, T., Hayes, P., Letsinger, R., Lifschitz, V., Macgregor, R., Mccarthy, J., Norvig, P. and Patil, R. (1992). Knowledge interchange format version 3.0 reference manual, Technical report, Stanford University, Stanford. Disponível em: citeseer.ist.psu.edu/genesereth92knowledge.html Gennari, J. H., Musen, M. A., Fergerson, R. W., Grosso, W. E., Crubzy, M., Eriksson, H., Noy, N. F. and Tu, S. W. (2003). The evolution of protégé: an environment for knowledge-based systems development, International Journal of Human-Computer Studies 58(1): 89–123. Goodman, D. and Morrison, M. (2007). JavaScript Bible, Wiley, John & Sons, Incorporated. Gosling, J., Joy, B., Steele, G. and Bracha, G. (2005). Java (TM) Language Specification, Addison-Wesley, Boston. Griffiths, D. (2009). Head First Rails: a learner’s companion to Ruby on Rails, O’Reilly Media, Sebastopol. Gruber, T. (2009). Ontology, in L. Liu and M. T. Özsu (eds), Encyclopedia of Database Systems, Springer, New York, pp. 1963–1965. Gruber, T. R. (1992). Ontolingua: a mechanism to support portable ontologies, Technical report, Stanford University, Stanford. Disponível em: ftp://ksl.stanford.edu/pub/KSL_Reports/KSL-91-66.ps.gz 136 Guarino, N. (1997). Semantic matching: Formal ontological distinctions for information organization, extraction, and integration, in M. T. Pazienza (ed.), Information Extraction: a multidisciplinary approach to an emerging information technology, international summer school, SCIE-97, Springer, New York, pp. 139–170. Guarino, N. and Giaretta, P. (1995). Ontologies and knowledge bases: towards a terminological clarification, in N. J. I. Mars (ed.), Towards Very Large Knowledge Bases: knowledge building and knowledge sharing, IOS Press, Washington, pp. 25–32. Han, J. (2005). Data Mining: concepts and techniques, Morgan Kaufmann Publishers, San Francisco. Harold, E. R. (1998). XML: Extensible Markup Language, IDG Books Worldwide, Foster City. Harper, D. (2010). Online Etymonology Dictionary, http://www.etymonline.com/index.php?allowedi nf rame = ontology. Acessoem : 21dejan.2014. Disponível 0search em: = Hendler, J. and D. L. McGuinness, D. L. (2000). The DARPA Agent Markup Language, IEEE Intelligent Systems 15(6): 67–73. Húngaro, L. (2013). Princípios do Rails, http://lucashungaro.wordpress.com/2007/11/03/principios-do-rails/. jan. 2014. Disponível em: Acesso em: 27 de Holzner, S. (2006). Beginning Ruby on Rails, Wiley, John & Sons, Incorporated, Chatham. Honorato, D. F., Cherman, E. A., Lee, H. D., Monard, M. C. and Chung, W. F. (2008). Construction of an attribute-value representation for semi-structured medical findings knowledge extraction, CLEI Electronic Journal 11(2): 1–12. Honorato, D. F., Cherman, E. A., Lee, H. D., Monard, M. C. and Wu, F. C. (2007). Construção de uma representação atributo-valor para extração de conhecimento a partir de informações semi-estruturadas de laudos médicos, Anais do XXXIII Conferência Latino-Americana de Informática, San José, pp. 1–12. Honorato, D. F., Cherman, E. A., Lee, H. D., Wu, F. C. and Monard, M. C. (2007). Descrição do projeto da metodologia de mapeamento de informações semi-estruturadas em uma representação atributo-valor, Technical report, Universidade de São Paulo, São Carlos. Disponível em: http://www.icmc.usp.br/ biblio/BIBLIOTECA/relt ec/rt309.pdf Horrocks, I. (2002). Daml+oil: a reason-able web ontology language, In Proceedings of the 8th International Conference on Extending Database Technology (EDBT), Praga, pp. 2–13. Horrocks, I., Fensel, D., Broekstra, J., Decker, S., Erdmann, M., Goble, C., van Harlemen, F., Klein, M., Staab, S., Studer, R., Motta, E. and Horrocks, I. (2000). The ontology inference layer oil, Technical report, Free University of Amsterdam, Amsterdam. Disponível em: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.22.2713&rep= rep1&type=pdf Horrocks, I., Goble, C. and Stevens, R. (2001). Oiled: a reason-able ontology editor for the semantic web, In Proceedings of the Joint German/Austrian Conference on Artificial Intelligence, Lecture Notes in Artificial Intelligence, New York, pp. 396–408. 137 Hull, D. A. (1996). Stemming algorithms – a case study for detailed evaluation, Journal of the American Society for Information Science 47(1): 70–84. Humpheys, B. L., Lindberg, D. A. B., Schoolman, H. M. and Barnett, G. O. (1998). The unified medical language system: An informatics research collaboration, Journal of the American Medical Informatics Association 1(5): 1–11. Intentor (2010). Pequeno Guia de Expressões Regulares, http://intentor.com.br/pequeno-guia-regex/. Acesso em: 25 de nov. 2013. Disponível em: Jongejan, B. and Dalianis, H. (2009). Automatic training of lemmatization rules that handle morphological changes in pre-, in- and suffixes alike, In Proceedings of the Joint Conference of the 47th Annual Meeting of the ACL and the 4th International Joint Conference on Natural Language Processing of the AFNLP, Suntec, pp. 145–153. Jung, W. (2012). Aplicação de princípios de qualidade de dados durante o desenvolvimento de um sistema computacional médico para a cirurgia coloproctológica, Dissertação de mestrado, Universidade Estadual do Oeste do Paraná, Foz do Iguaçu. Juršič, M., Mozetič, I. and Lavrač, N. (2007). Learning Ripple Down Rules for Efficient Lemmatization, In Proceedings of the 10th International Multiconference Information Society, Ljubljana, pp. 206–209. Kanis, J. and Skorkovská, L. (2010). Comparison of different lemmatization approaches through the means of information retrieval performance, Lecture Notes in Artificial Intelligence 6231: 93– 100. Klyne, G., Carroll, J. J. and McBride, B. (2014). RDF 1.1: concepts and abstract syntax, Disponível em: http://www.w3.org/TR/rdf11-concepts/. Acesso em: 23 de mai. 2014. Knublauch, H., Fergerson, R. W., Noy, N. F. and Musen, M. A. (2004). The protégé owl plugin: An open development environment for semantic web applications, in S. A. McIlraith, D. Plexousakis and F. van Harmelen (eds), The Semantic Web – ISWC 2004, Springer Berlin, Berlin, pp. 229–243. Korenius, T., Laurikkala, J., Järvelin, K. and Juhola, M. (2004). Stemming and lemmatization in the clustering of finnish text documents, In Proceedings of the Thirteenth ACM International Conference on Information and Knowledge Management, New York, pp. 625–633. Kutler, C. and Leonard, B. (2008). NetBeans Ruby and Rails IDE with JRuby, Apress, Berkely. Larsen, R. (2013). Beginning HTML and CSS, Wrox Press, Birmingham. Laudon, K. C. and Laudon, J. P. (2007). Sistemas de Informação Gerenciais, Pearson, São Paulo. Lawson, B. and Sharp, R. (2011). Introdução ao HTML5, Alta Books, Rio de Janeiro. Lee, H. D., Monard, M. C., Honorato, D. F., Lorena, A. C., Ferrero, C. A., Maletzke, A. G., Zalewski, W., Coy, C. S. R., Fagundes, J. J. and Chung, W. F. (2011). Mapping unstructured data in digital and printed documents into attribute-value tables, in R. A. E. Andrade, J. M. Gómez and A. R. Valdés (eds), Towards a Trans-disciplinary Technology for Business Intelligence, Gathering Knowledge Discovery, Knowledge Management and Decision Making, Shaker Verlag, Maastricht, pp. 198–209. 138 Lee, H. D., Oliva, J. T., Maletzke, A. G., Machado, R. B., Voltolini, R. F., Coy, C. S. R., Fagundes, J. J. and Wu, F. C. (2013). Sistema computacional para automatização do processo de mapeamento de laudos médicos por ontologias, 62o Congresso Brasileiro de Coloproctologia, São Paulo, pp. 1–24. Lewis, W. E. (2008). Software Testing and Continuous Quality Improvement, Auerbach Publications, Boston. Lie, H. W. and Bos, B. (2005). Cascading Style Sheets: designing for the Web, Addison-Wesley, Boston. Lindholm, T., Yellin, F., Bracha, G. and Buckley, A. (2013). Java Virtual Machine Specification, Addison-Wesley, Boston. Liu, H., Christiansen, T., Jr., W. A. B. and Verspoor, K. (2012). Biolemmatizer: a lemmatization tool for morphological processing of biomedical text, J. Biomedical Semantics 3(1): 3. Lubbers, P., Albers, B. and Dalim, F. (2013). Programação Profissional em HTML5, Alta Books, Rio de Janeiro. Makrehchi, M. and Kamel, M. S. (2008). Automatic extraction of domain-specific stopwords from labeled documents, In Proceedings of the IR Research, 30th European conference on Advances in Information Retrieval, Berlim, pp. 222–233. McGuinness, D., Fikes, R., S., J. R. and Wilder (2000). The chimaera ontology environment, In Proceedings of the Seventeenth National Conference on Artificial Intelligence and Twelfth Conference on Innovative Applications of Artificial Intelligence, Austin, pp. 1123–1124. McGuinness, D. L. and van Harmelen, F. (2004). OWL Web Ontology Language Overview, Disponível em: http://www.w3.org/TR/owl-features/. Acesso em: 27 de jan. 2014. Metz, S. (2012). Practical Object-Oriented Design in Ruby: an agile primer, Addison-Wesley, Boston. Meyer, E. A. (2009). Cascading Style Sheets – the definitive guide: visual styles for HTML, O’Reilly Media, Sebastopol. Michaelis (2009). Dicionário de Português Online, Disponível http://michaelis.uol.com.br/moderno/portugues/index.php?lingua=portuguesportuguespalavra=morfema. Acesso em: 24 de set. 2013. em: Miles, R. and Hamilton, K. (2006). Learning UML 2.0, O’Reilly Media, Sebastopol. Minsk, M. (1985). A framework for representing knowledge, in R. J. Brachman and H. J. Levesque (eds), Readings in Knowledge Representation, Kaufmann, Los Altos, pp. 245–262. Myers, G. J., Badgett, T., Sandler, C. and Thomas, T. M. (2004). The Art of Software Testing, Wiley, New Jersey. NetBeans (2013). A Brief History of NetBeans, http://netbeans.org/about/history.html. Acesso em: 20 de nov. 2013. Disponível em: Nunes, F. V. (2007). Verbal lemmatization and featurization of portuguese with ambiguity resolution in context, Dissertação de mestrado, Universidade de Lisboa, Lisboa. 139 Nutter, C. O., Enebo, T., Sieger, N., Bini, O. and Dees, I. (2011). Using JRuby: bringing Ruby to Java, Pragmatic Bookshelf, Raleigh. Orengo, V. M. and Huyck, C. (2001). A stemming algorithm for portuguese language, In Proceedings of the Eighth Symposium on String Processing and Information Retrieval, Laguna de San Rafael, pp. 186–193. Pfleeger, S. L. (2004). Engenharia de Software: teoria e prática, Prentice Hall, São Paulo. Pilgrim, M. (2011). HTML 5 – entendendo e executando, Alta Books, Rio de Janeiro. Plisson, J., Lavrac, N., Mladenic, D. and Erjavec, T. (2008). Ripple down rule learning for automated word lemmatisation, AI Communications 21(1): 15–26. Porter, M. F. (1997). Readings in information retrieval, Morgan Kaufmann Publishers, San Francisco, chapter An Algorithm for Suffix Stripping, pp. 313–316. Pressman, R. (ed.) (2011). Engenharia de Software: uma abordagem profissional, Makron Books, São Paulo. Rezende, S. (ed.) (2003). Sistemas Inteligentes: fundamentos e aplicações, Editora ManoleManole, Barueri. Ruby, S., Thomas, D., Hansson, D. H., Breedt, L., Clark, M., Davidson, J. D., Gehtland, J. and Schwarz, A. (2011). Agile Web Development with Rails, Pragmatic Bookshelf, Raleigh. Saint-Laurent, S., Dumbill, E. and Gruber, E. J. (2012). Learning Rails 3, O’Reilly Media, Sebastopol. Schwartz, R. L., Phoenix, T. and D’Foy, B. (20011). Learning Perl, O’Reilly Media, Sebastopol. Silva, W. (2005). Netbeans 4.1: primeiros passos, Disponível em: http://www.aprendajavafacil.com.br/portal/netbeans_guj.pdf. Acesso em: 21 de nov. 2013. Sklar, J. (2001). Designing Web Pages with Cascading Style Sheets, Course Technology Press, Boston. Smith, M. K., Welty, C. and McGuinness, D. (2004). OWL Web Ontology Language Guide, Disponível em: http://www.w3.org/TR/owl-guide/. Acesso em: 27 de jan. 2014. Sommerville, I. (2009). Engenharia de Software, Pearson Brasil, São Paulo. Spolaôr, N., Lee, H. D., Cherman, E. A., Honorato, D. F., Fagundes, J. J., Góes, J. R. N., Coy, C. S. R. and Chung, W. F. (2007). Um estudo de caso do mapeamento de laudos endoscópicos para bases de dados, Anais do II Congresso da Academia Trinacional de Ciências, Foz do Iguaçu, pp. 1–10. Tsui, F. and Karam, O. (2013). Fundamentos de Engenharia de Software, LTC, Rio de Janeiro. Uschold, M. and Gruninger, M. (1996). Ontologies: principles, methods and applications, Knowledge Engineering Review 11(2): 93–155. van Harmelen, F. and Horrocks, I. (2000). Questions and answers on oil: the ontology inference layer for the semantic web, Disponível em: http://web.squ.edu.om/med-Lib/med/net/e-pathwaysnet/Docs/OIL%20FAQ.htm. Acesso em: 13 de mar. 2014. 140 van Kesteren, A., Gregor, A., Russel, A. and Berjor, R. (2014). http://www.w3.org/TR/dom/. Acesso em: 23 de mai. 2014. W3c dom4, Disponível em: Wainwright, P. C., Cozens, S., Calpini, A., Corliss, A. and Merelo-Guervos, J. J. (2001). Professional Perl Programming, Wrox Press, Birmingham. Wall, L., Christiansen, T. and Schwartz, R. L. (2012). Programming Perl, O’Reilly Media, Sebastopol. Wiederhold, G. and Shortliffe, E. H. (2006). System design and engineering in health care, in E. H. Shortliffe and J. J. Cimino (eds), Biomedical Informatics, Springer, New York, pp. 233–264. Witten, I. H. and Frank, E. (2005). Data Mining: practical machine learning tools and techniques, Morgan Kaufmann Publishers, San Francisco. Wu, F. C., Coy, C. S. R., Lee, H. D., Fagundes, J. J., Ferrero, C. A., Machado, R. B., Maletzke, A. G., Zalewski, W., Leal, R. F., Ayrizono, M. L. S. and Costa, L. H. D. (2010). Método de mapeamento de documentos textuais para bases de dados estruturadas utilizando ontologias protocol. 01810036941 inpi. Ziviani, N. (2010). Projeto de Algoritmos: com implementações em Pascal e C, Thomson. Apêndice A Arquivos Definidos para a Avaliação Experimental do Estudo de Caso A.1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Stoplist <?xml version="1.0" encoding="UTF−8" standalone="no"?> <stopwords number="59"> <stopword>\(</stopword> <stopword>\)</stopword> <stopword>,</stopword> <stopword>−</stopword> <stopword>\?</stopword> <stopword>a</stopword> <stopword>alimentares</stopword> <stopword>ao</stopword> <stopword>aparelho</stopword> <stopword>aproximadamente</stopword> <stopword>area</stopword> <stopword>as</stopword> <stopword>aspecto</stopword> <stopword>ate</stopword> <stopword>com</stopword> <stopword>conseguida</stopword> <stopword>cor</stopword> <stopword>da</stopword> <stopword>de</stopword> <stopword>depois</stopword> <stopword>desde</stopword> <stopword>dificuldade</stopword> <stopword>do</stopword> 141 142 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 <stopword>dos</stopword> <stopword>e</stopword> <stopword>elevada</stopword> <stopword>elevado</stopword> <stopword>em</stopword> <stopword>esparsos</stopword> <stopword>especificas</stopword> <stopword>espessada</stopword> <stopword>fibrina</stopword> <stopword>friavel</stopword> <stopword>grande</stopword> <stopword>o</stopword> <stopword>observa−se</stopword> <stopword>observado</stopword> <stopword>ocupando</stopword> <stopword>partir</stopword> <stopword>passagem</stopword> <stopword>peptica</stopword> <stopword>pequena</stopword> <stopword>pequenas</stopword> <stopword>presente</stopword> <stopword>presneca</stopword> <stopword>progressao</stopword> <stopword>quantidade</stopword> <stopword>realizada</stopword> <stopword>regiao</stopword> <stopword>residuo</stopword> <stopword>residuos</stopword> <stopword>se</stopword> <stopword>situada</stopword> <stopword>situado</stopword> <stopword>sua</stopword> <stopword>suas</stopword> <stopword>tambem</stopword> <stopword>tipo</stopword> <stopword>uma</stopword> </stopwords> 143 A.2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Arquivo de Padronização <?xml version="1.0" encoding="UTF−8" standalone="no"?> <pattern number="81"> <synonym n="12"> <old>normal toda extensao</old> <new>esofago_superior normal</new> <new>terco_proximal presenca_edema nao</new> <new>terco_proximal presenca_erosao nao</new> <new>terco_proximal presenca_ulcera nao</new> <new>esofago_medio normal</new> <new>terco_medio presenca_edema nao</new> <new>terco_medio presenca_erosao nao</new> <new>terco_medio presenca_ulcera nao</new> <new>esofago_inferior normal</new> <new>terco_distal presenca_edema nao</new> <new>terco_distal presenca_erosao nao</new> <new>terco_distal presenca_ulcera nao</new> </synonym> <synonym n="2"> <old>calibre distensibilidade normal</old> <new>esofago calibre normal</new> <new>esofago distensibilidade normal</new> </synonym> <synonym n="1"> <old>teg nivel pincamento diafragmatico</old> <new>teg normal</new> </synonym> <synonym n="1"> <old>teg\s∗proximo\s∗pincamento\s∗diafragmatico</old> <new>teg normal</new> </synonym> <synonym n="1"> <old>teg.∗0[,.]5\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg normal</new> </synonym> <synonym n="1"> <old>teg.∗1[,.]0\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg gi</new> </synonym> 144 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 <synonym n="1"> <old>teg.∗1[,.]5\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg gi</new> </synonym> <synonym n="1"> <old>teg.∗2[,.]0\s∗c(m)∗\s∗[acima]∗\s∗pi(n)∗camento\s∗diafragmatico</old > <new>teg gi</new> </synonym> <synonym n="1"> <old>teg.∗2[,.]5\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg gi</new> </synonym> <synonym n="1"> <old>teg.∗3[,.]0\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg gii</new> </synonym> <synonym n="1"> <old>teg.∗3[,.]5\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg gii</new> </synonym> <synonym n="1"> <old>teg.∗4[,.]0\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg gii</new> </synonym> <synonym n="1"> <old>teg.∗4[,.]5\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg giii</new> </synonym> <synonym n="1"> <old>teg.∗5[,.]0\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg giii</new> </synonym> <synonym n="1"> <old>teg.∗5[,.]5\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg giii</new> </synonym> <synonym n="1"> <old>teg.∗6[,.]0\s∗cm\s∗[acima]∗\s∗pincamento\s∗diafragmatico</old> <new>teg giii</new> 145 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 </synonym> <synonym n="1"> <old>(presenca\s∗)∗ponto[s]∗\s∗(placa[s]∗\s∗)∗esbranquicado[s]∗</old> <new>anormal</new> </synonym> <synonym n="1"> <old>(presenca\s∗)∗placa[s]∗\s∗(ponto[s]∗\s∗)∗esbranquicado[s]∗</old> <new>anormal</new> </synonym> <synonym n="1"> <old>tipo\s∗gastrico</old> <new>anormal</new> </synonym> <synonym n="1"> <old>enantema</old> <new>presenca_edema sim</new> </synonym> <synonym n="1"> <old>proximo\s∗teg</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>(presenca\s∗)∗polipo(\s∗\d∗mm)</old> <new>anormal</new> </synonym> <synonym n="1"> <old>(presenca\s∗)∗cord[o]∗ao\s∗va[r]∗icoso[s]∗</old> <new>anormal</new> </synonym> <synonym n="1"> <old>fibrino</old> <new>anormal</new> </synonym> <synonym n="1"> <old>(coloracao\s∗)∗esbranquicado</old> <new>anormal</new> </synonym> <synonym n="1"> <old>16\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> 146 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 </synonym> <synonym n="1"> <old>17\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>18\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>19\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>20\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>21\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>22\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>23\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>24\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>25\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>26\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> 147 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 </synonym> <synonym n="1"> <old>27\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>28\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>29\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>30\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>31\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>32\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>33\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>34\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>35\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>36\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> 148 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 </synonym> <synonym n="1"> <old>37\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>38\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>39\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>40\s∗cm\s∗[da]∗\s∗ad[s]∗</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>area\s∗esbranquicado</old> <new>anormal</new> </synonym> <synonym n="1"> <old>calibre\s∗aumentado</old> <new>calibre anormal</new> </synonym> <synonym n="1"> <old>fino\s∗calibre</old> <new>calibre anormal</new> </synonym> <synonym n="1"> <old>1/3 superior</old> <new>terco_superior</new> </synonym> <synonym n="1"> <old>hiperemia</old> <new>anormal</new> </synonym> <synonym n="3"> <old>toda extensao anormal</old> <new>esofago_superior anormal</new> 149 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 <new>esofago_medio anormal</new> <new>esofago_inferior anormal</new> </synonym> <synonym n="1"> <old>(mucoso\s∗)∗terco\s∗distal</old> <new>terco_distal</new> </synonym> <synonym n="1"> <old>(presenca\s∗)∗erosao</old> <new>presenca_erosao sim</new> </synonym> <synonym n="1"> <old>(lesao\s∗)∗ulcerado(\s∗lesao)∗</old> <new>presenca_ulcera sim</new> </synonym> <synonym n="1"> <old>(mucoso\s∗)∗terco\s∗medio</old> <new>terco_medio</new> </synonym> <synonym n="1"> <old>presenca\s∗ulcera</old> <new>presenca_ulcera sim</new> </synonym> <synonym n="1"> <old>edematoso</old> <new>presenca_edema sim</new> </synonym> <synonym n="1"> <old>estenose</old> <new>anormal</new> </synonym> <synonym n="1"> <old>(mucoso∗\s∗)∗terco\s∗proximal</old> <new>terco_proximal</new> </synonym> <synonym n="1"> <old>terco(\s|_)∗superior</old> <new>esofago_superior</new> </synonym> <synonym n="3"> 150 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 <old>nao presenca lesao</old> <new>esofago_inferior normal</new> <new>esofago_medio normal</new> <new>esofago_superior normal</new> </synonym> <synonym n="1"> <old>nao\s∗confluente</old> <new>nao_confluente</new> </synonym> <synonym n="2"> <old>terco(\s|_)∗medio\s∗((presenca erosao)|(presenca_erosao sim))\s∗( terco_distal|(32 cm ad))\s∗(anormal|estenose)</old> <new>terco_medio presenca_erosao sim</new> <new>esofago_inferior anormal</new> </synonym> <synonym n="2"> <old>terco(\s|_)∗proximal\s∗(anormal|(presenca cordao varicoso))\s∗medio\ s∗grosso\s∗calibre</old> <new>esofago_superior anormal</new> <new>esofago calibre anormal</new> </synonym> <synonym n="2"> <old>terco(\s|_)∗medio\s∗((presenca\s∗cordao\s∗varicoso)|anormal)\s∗ medio\s∗calibre</old> <new>esofago_medio anormal</new> <new>esofago calibre normal</new> </synonym> <synonym n="1"> <old>terco(\s|_)∗distal\s∗(mucos(a|o)∗)∗\s∗(esbranquicado|anormal)</old> <new>esofago_inferior anormal</new> </synonym> <synonym n="1"> <old>((proximo\s∗teg\s∗)|terco_distal\s∗)pincamento\s∗diafragmatico\s∗ ((( presenca\s∗)∗polipo(\s∗\d∗mm))|\s∗anormal)</old> <new>esofago_inferior anormal</new> </synonym> <synonym n="2"> <old>teg\s∗((40\s∗cm\s∗ad\s∗)|terco_distal\s∗) proximo\s∗pincamento\s∗ diafragmatico\s∗(presenca_erosao|erosao)</old> <new>teg normal</new> 151 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 <new>terco_distal presenca_erosao sim</new> </synonym> <synonym n="2"> <old>presenca(\s∗|_)ulcera\s∗(sim\s∗)∗ ((30\s∗cm\s∗ad\s∗)|terco_distal\s∗) ( presenca)∗(\s∗|_)erosao\s∗</old> <new>terco_distal presenca_ulcera sim</new> <new>terco_distal presenca_erosao sim</new> </synonym> <synonym n="2"> <old>terco(\s|_)∗medio\s∗azul\s∗medio\s∗calibre</old> <new>esofago_medio anormal</new> <new>esofago calibre normal</new> </synonym> <synonym n="2"> <old>medio\s∗calibre\s∗alzul\s∗sinal\s∗vermelho∗\s∗ausente\s∗terco(\s|_)∗ medio</old> <new>esofago calibre normal</new> <new>esofago_inferior anormal</new> </synonym> <synonym n="1"> <old>^motilidade</old> <new>esofago motilidade</new> </synonym> <synonym n="2"> <old>terco(\s|_)∗medio\s∗presenca(\s|_)∗erosao\s∗(sim\s∗)∗(32\s∗cm\s∗ad| terco_distal|esofago_inferior)\s∗(estenose|anormal)</old> <new>terco_medio presenca_erosao sim</new> <new>esofago_inferior anormal</new> </synonym> <synonym n="2"> <old>((terco(\s|_)∗distal)|esofago_inferior)\s∗((coloracao\s∗esbranquicado\s ∗)|anormal\s∗)presenca(\s|_)∗erosao</old> <new>esofago_inferior anormal</new> <new>terco_distal presenca_erosao sim</new> </synonym> <synonym n="2"> <old>((terco(\s|_)∗distal)|esofago_inferior)\s∗((coloracao\s∗esbranquicado\s ∗)|anormal\s∗)(presenca_edema|edematosa)</old> <new>esofago_inferior anormal</new> <new>terco_distal presenca_edema sim</new> 152 348 349 350 351 352 353 354 355 </synonym> <synonym n="3"> <old>terco(\s|_)∗distal\s∗presenca(\s|_)∗erosao\s∗(sim\s∗)∗ linear\s∗nao(\s∗| _)confluente\s∗(esofago_inferior\s∗|terco(\s|_)∗distal\s∗) anormal\s∗ calibre\s∗anormal</old> <new>terco_distal presenca_erosao sim</new> <new>esofago_inferior anormal</new> <new>esofago calibre anormal</new> </synonym> </pattern>