Alexandre Leopoldo Gonçalves
Jomi Fred Hübner
Resumo
O artigo faz uma breve introdução a Sistemas Especialistas (SEs), relata alguns de seus problemas e limitações sugerindo um protótipo distribuído utilizando a Internet. O protótipo visa implementar um SE dividido em três partes: um servidor que aceita requisições de usuários distribuídos geograficamente, resolvendo tais requisições devolvendo uma resposta, a interconexão entre cliente/servidor utilizando redes TCP/IP com o conceito de sockets e, por último, o lado do cliente que efetua consultas por meio de uma interface conhecida, a WWW.
Palavras-chave: Sistema Especialista Distribuído, Internet, Cliente/Servidor, Sockets, Aplicação Java
Abstract
The article introduces Expert Systems (ES), it is showed the problems and limitations of those systems and, also, it is suggested a distributed prototype based on Internet. The prototype aim to implement an ES divided in three parts: a server that receive requisitions of geographic distributed users and solve this requisitions sending an answer, the interconection between client/server using TCP/IP networks with sockets concepts and at last the client side that realize consultation with known interface, the WWW.
Inteligência Artificial (IA) é um campo de estudos que busca o desenvolvimento de sistemas inteligentes. Um sistema inteligente é aquele capaz de resolver problemas, que, quando resolvidos por humanos, exigem um comportamento dito inteligente [HAR 88].
Para tornar possível a tarefa de resolver problemas de maneira inteligente, os pesquisadores de IA desenvolveram sistemas que utilizam muito conhecimento sobre alguma área específica. Estes sistemas são chamados de Sistemas Especialistas (SEs) e representam um ramo da IA aplicada que ocupa-se em desenvolver programas que usem o conhecimento simbólico para simular o comportamento de especialistas humanos [HAR 88].
O professor Edward Feigenbaum, da Universidade de Stanford, um dos principais pesquisadores em sistemas especialistas, definiu um SE como:
"...um programa inteligente de computador que usa conhecimento e procedimentos inferenciais, para resolver problemas que são bastante difíceis de forma a requererem, para sua solução, muita perícia humana. O conhecimento necessário para atuar a esse nível, mais os procedimentos inferenciais empregados, pode considerar-se um modelo da perícia aos melhores profissionais do ramo.
O conhecimento de um sistema especialista consiste em fatos e heurísticas. Os fatos constituem um corpo de informação que é largamente compartilhado, publicamente disponível e geralmente aceito pelos especialistas em um campo. As heurísticas são em sua maioria privadas, regras pouco discutidas de bom discernimento (regras do raciocínio plausível, regras de boa conjectura), que caracterizam a tomada de decisão a nível de especialista na área. O nível de desempenho de um sistema especialista é função principalmente do tamanho e da qualidade do banco de conhecimento que possui [HAR 88]".
Faigenbaum chama os que constróem Sistemas Especialistas baseados no conhecimento de "engenheiros do conhecimento" e refere-se à sua tecnologia como "engenharia do conhecimento".
Contudo, os SEs possuem certas limitações ou enfrentam problemas tais como:
As técnicas de IA permitem a construção de SEs onde cada parte representa uma etapa altamente independente e identificável em direção à solução de um problema ou de um conjunto de problemas [LEV 88].
Este trabalho tem por objetivo o desenvolvimento de um protótipo de SE Distribuído tornando possível que usuários independente de sua localização tenham acesso a conhecimento especialista sobre determinado problema por meio de uma interface padronizada e bastante conhecida.
Os SEs promovem ampla utilização em aplicações práticas (auxílio na resolução de problemas de otimização industrial, sistemas gerenciais, sistemas financeiros etc.). Contudo deve-se procurar não só por necessidade mas também por questões de agilidade a redução de custos e tempos visando distribuir o conhecimento. Para tal é preciso levar em conta algumas características que viabilizam a implementação desses sistemas.
Primeiramente um ambiente nativamente distribuído como a Internet que é baseado em uma interface padronizada e bastante conhecida como a World Wide Web (WWW), sendo esta a parte mais interessante da grande rede e uma importante fonte de auxílio para pesquisadores ou simplesmente usuários que desejem acesso a determina informação. A Web está baseada na Hypertext Markup Language (HTML), que é uma linguagem para confecção de páginas e no Hypertext Transfer Protocol (HTTP) [LYN 93], que é um protocolo baseado no TCP/IP [GAS 93] para acesso de informação entre sites Web. Tendo escrito uma página HTML pode-se carregar o seu resultado utilizado os chamados browsers, programas que viabilizam a navegação pela Internet bem como a carga de páginas HTML.
Em seguida pode-se considerar uma linguagem com propriedades distribuídas possibilitando guanhos no desenvolvimento de aplicações levando-se em conta somente as características relevantes ao projeto de sistemas. A linguagem de programação Java é projetada para resolver vários problemas nas modernas práticas de programação incorporando uma série de objetos prontos, o que facilita a programação. Devido a sua arquitetura neutra, aplicações em Java são ideais para ambientes como a Internet [SUN 95].
Java possui duas formas básicas de utilização:
E por último deve-se considerar o meio de conexão entre o cliente e o servidor. Para que isso seja possível é necessário a implementação de sockets em redes TCP/IP (como a Intenet). Sockets são um meio de comunicação de alto nível entre aplicacões executando em uma rede (conexão entre programas clientes e programas servidores) baseados em um protocolo comum para que haja a conexão [SUN 95]. Na linguagem Java devem ser definidas as classes Sockets tanto no lado do servidor quanto no lado do cliente visando efetuar as conexões e trocas de mensagens. No lado do servidor são definidas as propriedades de conexão e gerenciamento de requisições, por exemplo, o seguinte trecho de programa
cria um objeto "serverSocket" que recebe o número de uma porta que este deve ficar escutando. Se o servidor consegue conectar-se a porta com sucesso, este fica pronto para aceitar conexões de clientes. Após isso cria-se os objetos de recebimento e envio de mensagens.
Tendo efetuado a conexão, o servidor fica esperando em loop por requisições de clientes até que seja finalizada a conexão.
O loop lê as entradas do socket (pelo comando "readLine()") que são recebidas pelo objeto "entrada" onde este contém o conteúdo da string do socket. O objeto "kkp" processa as entradas devolvendo uma resposta que será mostrada pelo objeto "saida". O programa termina quando é encontrada a palavra "fim", o que provoca o fechamento de todas as entradas, saídas, o socket cliente e o socket servidor.
Do outro lado, cria-se um objeto para que o cliente possa conversar com o servidor. Contudo para isso ser possível, o servidor tem que estar ativo, ou seja, já deve estar executando na porta especificada esperando por uma requisição de conexão do cliente, por exemplo, o seguinte trecho de programa cria um objeto "kkSocket", um objeto de recebimento e um de envio de mensagens para que seja realiza uma conexão.
O programa cliente fica recebendo todas as mensagens vindas do servidor contidas no objeto "entrada". Caso o cliente necessite fazer novas consultas é enviada ao servidor as opções desejadas anexadas ao socket pelo objeto "saida".
A comunicação termina quando é encontrado a palavra "fim" provocando a desconexão do programa cliente e o fechamento de todas as entradas, saídas e o socket.
Esta proposta visa apresentar um modelo de SE Distribuído possiblitando que usuários façam consultas de qualquer parte do mundo através da Internet. A figura 1 apresenta um diagrama da junção de tecnológias utililizadas na resolução do problema de distribuição de um SE.
Figura 1: Sistema Especialista Distribuído.
O modelo possui um servidor de conhecimento contendo as regras de inferências e fatos. Recebe requisições de clientes (usuários Web), realiza as interências e envia uma mensagem contendo o resultado. Do outro lado ficam os usuários que efetuam consultas ao SE por meio da Internet utilizando-se de um browser capaz de interpretar o código Java. Para que se torne possível a comunicação entre cliente e servidor utiliza-se o protocolo TCP/IP e o conceito de socket para criar um link entre o cliente e o servidor. O SE servidor executa permanentemente esperando requisições e quando o usuário deseja fazer consultas este chama o sistema pela Internet devendo efetuar a conexão que é requisitada na página Web.
Outra alternativa de funcionamento seria implementar todo o SE como um Applet que executa somente no lado do cliente, porém isto geraria muito tráfego na rede.
Para verificar a viabilidade de utilização do modelo proposto implementou-se um SE de teste. O sistema permite que usuários façam consultas para saber se o seguro aprova ou reprova determinado tipo de tratamento estando baseado em uma árvore de decisão simples descrita na figura 2.
Figura 2: Árvore de decisão do protótipo.
A implementação constituiu-se em duas etapas: implementação do cliente e implementação do servidor.
Figura 3: Applet representado a entrada de dados do Sistema Especialista.
5. Conclusões
Este trabalho apresenta uma proposta para resolução do problema de SEs Distribuídos na Internet por meio da integração de três tecnologias: WWW, Java e TCP/IP/sockets. O modelo foi verificado em um estudo de caso que mostrou a viabilidade da implementação desses sistemas uma vez que usuários, independente de sua localização, tem a possibilidade de obter conhecimento especializado sobre um assunto por meio de uma interface padronizada e conhecida.
Os SEs possuem certas limitações havendo a necessidade de incorporar outras metodologias. Entre estas, podem-se citar a Inteligência Artificial Distribuída (IAD) [DEM 90], [WEI 95], [GAS 88] que está suportada na tecnologia de Agentes. Estes Agentes podem otimizar o processo de consulta e inferência a sistemas baseados em conhecimento a partir da cooperação e distribuíção de tarefas. Outra técnica que poderia ser utilizada para otimizar os SEs Distribuídos seria a lógica difusa [COX 94], [JEN 95] proporcionando a estes sistemas a capacidade de tratar dados imprecisos e qualitativos.
Os SE bem como outras técnicas da IA promovem revoluções nas áreas de conhecimento onde são implementadas. Tais técnicas já se encontram aplicadas em sistemas industriais, engenharia de computadores, nos sistemas comerciais e na área militar. Contudo é preciso evoluir muito e a compreensão de como o ser humano pensa torna-se cada vez mais necessário para conseguir-mos respostas adequadas as crescentes necessidades da sociedade.
[HAR 88] HARMON, Paul ; KING, David. Sistemas Especialistas. Rio de Janeiro: Campus, 1988.
[GAS 93] GASPARINI, Anteu FabianoL. ; BARRELA, Francisco Eugenio. TCP/IP Solução para conectividade. 1.ed. São Paulo: Érica, 1993.
[LYN 93] LYNCH, Daniel C. ; ROSE, Marshall T. Internet System Handbook. [s.l.]: Addison-Wesley Publishing Company, 1993.
[SUN 95] Sun Microsystems. The Java Language : A White Paper. [s.l.]: Sun Microsystems, 1995.
[LEV 88] LEVINE, Robert I. ; DRANG, Diane E. ; EDELSON, Barry. Inteligência Artificial e Sistemas Especialistas. São Paulo: McGraw-Hill, 1988.
[DEM 90] DEMAZEAU, Yves; MÜLLER, Jean-Pierre (Eds). Decentralized Artificial Intelligence. vls 1,2 e 3. North-Holland : Elsevier Science Publishers, 1990.
[WEI 95] WEISER, Mark. Intelligent Agents on the Internet: Fact, Fiction, and Forecast. IEEE Expert, V.10, No.4, p.44-49, 1995.
[GAS 88] GASSER, Les. Distribution and Coordination of Tasks Among Intelligent Agents. In: Proceeding of the JCAI'88. Scandinavian Conference on AI. Amsterdam, Springfield, 1988.
[COX 94] COX, Garl. The Fuzzy Systems Handbook. Massachusetts, Cambridge, :[s.l.], 1994.
[JEN 95] JENG, Bing Chiang and LIANG, Ting-Peng.
Fuzzy Indexing and Retrievel in Case-Based Systems. Expert Systems
With Applications, National SunYat-sen University, Taiwan, V.8, No.1,
p.135-142, 1995.