quinta-feira, 29 de setembro de 2011

Trabalho de Conclusão 2

1 INTRODUCAO

Com o advento da internet, os meios de comunicacao sofreram algumas transformacoes, essas que podem ser explicadas e traduzidas em uma unica palavra, agilidade. A agilidade nas conversas e repasse de informacoes simplesmente revolucionou o modo de como a informacao e tratada. Atualmente existe o twitter1, uma poderosa ferramenta de rede social que esta tomando proporcoes gigantescas, funcionando como transmissor de informacao, quando essa e usada pela imprensa, comunicacao entre pessoas distantes, sendo usada tambem por empresas para captacao de clientes e fidelizacao daqueles que ja sao. Nesse novo molde de comunicacao podemos concluir que a internet tem participacao intensa na transformacao de como hoje nos comunicamos.

Nesse novo mundo que a internet nos trouxe, podemos ver que existem lojas virtuais, sites corporativos, revistas virtuais, faculdades e cursos diretamente na web e mais uma infinidade de ferramentas e utilidades que a ela oferecer. Dentro desse aspecto, e visivel a evolucao e a capacidade de inovacao que a ela trouxe para a humanidade, mas precisamos ver por outro lado, como as duvidas dos usuarios sao resolvidas em um ambiente que podemos ter um crescimento exponencial em pouquissimo tempo? Apenas com pessoas para dar suporte? Uso de FAQ2? Independentemente da forma que se utiliza ferramentas para a resolucao de duvidas, uma ou mais devem existir, pois se e disponibilizado ou vendido uma solucao, caso acontecam duvidas deve existir alguem ou alguma ferramenta capaz de solucionar essas duvidas.

E justamente a uniao desses tres levantamentos que impulsionaram o desenvolvimento desse trabalho, a comunicacao, a internet e ferramentas na web que precisam de suporte. A Faculdade IMED ha pouco tempo passou a utilizar um ambiente virtual de aprendizagem chamado moodle. O moodle e um LMS3, que auxilia no processo de educacao nao presencial ou semipresencial, proporcionando aos usuarios, alunos e professores, um ambiente que simula uma sala de aula, possibilitando a criacao de foruns, chats, envio de questionarios, atividades e muito mais. Para otimizar o atendimento as solicitacoes de duvidas que agregam

1 E uma rede social e servidor para microblogs que permite aos usuarios que enviem e recebam atualizacoes pessoais de outros contatos.

2 FAQ ou Frequently Asked Questions, que significa Perguntas Frequentes. Seu uso e dado quando existe uma compilacao de perguntas referentes sobre um tema.

3 Sistema de Gestao da Aprendizagem ou Learning Management System. E um tipo software que oferece ferramentas no suporte ao ensino a distancia ou semipresencial.

15

tempo dos funcionarios e dos usuarios do ambiente, foi proposta a criacao de um chatterbot4 para auxilio aos usuarios do moodle na Faculdade IMED.

O trabalho foi estruturado em quatro capitulos, sendo que o primeiro traz apenas um embasamento teorico e historico sobre a Inteligencia Artificial. Nesse capitulo podemos ver que a inteligencia artificial teve tres grandes momentos na historia e que possui grandes areas de pesquisa, algumas como robotica, redes neurais e agentes inteligentes.

O segundo capitulo traz informacoes e conceitos sobre chatterbots. Nele podemos ver quais obtiveram maior destaque e quais os tipos existentes. No Terceiro capitulo vimos a linguagem de programacao utilizada para o desenvolvimento do Bibbs. A linguagem AIML e completamente descrita nesse capitulo, sendo explicada cada funcao e mostrado exemplos praticos do uso da linguagem e as outras ferramentas utilizadas para o desenvolvimento do trabalho.

O quarto capitulo traz toda a estruturacao e desenvolvimento do Bibbs, de acordo com todos os conceitos levantados ate o momento. Nele podemos ver a arquitetura que foi seguida para desenvolve-lo, qual foi o modulo interpretador usado para que ele funcionasse, a interface e quais os modulos implementados para que ele possa ter posterior manutencao. Ainda podemos ver como foram os testes e todos os resultados obtidos e a possibilidade do desenvolvimento de trabalhos futuros.

4 Robo de software utilizado para a conversacao entre humanos e maquinas. Ele e um tipo de software que usa o processamento de linguagem natural para se comunicar.

16

2 INTELIGENCIA ARTIFICIAL

Este capitulo traz todo o embasamento historico e conceitual sobre a Inteligencia Artificial. Nele veremos os principais conceitos e como ela evoluiu ate os dias atuais.

2.1 Inteligencia Artificial ¡V O Comeco

Os estudos de conceitos acerca de Inteligencia Artificial tiveram inicio na decada de 40, mais precisamente em 1943 com um trabalho realizado por Warren McCulloch, um neuropsicologo e Walter Pitts, um Matematico. Esse trabalho tinha como base um modelo de neuronios5 artificiais baseado na matematica, possuindo dois estados, ligado ou desligado. Esse trabalho foi o primeiro modelo de uma rede neural6, chamado de Perceptron. Ja em 1949, Donald Hebb realizou estudos e demonstrou para a comunidade academica uma regra de atualizacao simples para definicao de intensidade de conexao entre os neuronios, sendo que essa regra e utilizada ate os dias de hoje (RUSELL e NORVIG, 2004, p. 19).

Em meados da decada de 50, Alan Turing foi um pioneiro, isso porque foi dele o primeiro artigo que trazia uma visao completa sobre inteligencia artificial, com o nome de ¡§Computing Machinery an Intelligency¡§. Neste artigo ele apresentou o Teste de Turing como assunto principal, alem de outros assuntos, como aprendizagem de maquina, algoritmo7 genetico e aprendizagem por esforco (RUSELL e NORVIG, 2004, p. 18). Esse teste baseia-se em um elemento denominado interrogador e duas entidades, sendo uma delas um humano e outra uma maquina. O interrogador faz perguntas as duas entidades tendo como objetivo identificar quem e o humano. A decisao do interrogador e tomada apos dialogo realizado com a maquina e com o humano. O humano tem o objetivo de confirmar sua condicao e a maquina de se passar por um humano. O final do teste se da quando o interrogador consegue descobrir quem e o humano. Quando ele nao consegue, pode-se dizer que uma maquina pode pensar (TURING, 1950, p. 1).

Um ano depois de Turing se firmar nesse cenario com seu artigo conhecido ate hoje, o departamento de matematica de Princenton construiu o primeiro computador de rede neural, conhecido com SNARC. Os responsaveis pelo projeto foram Marvin Minsk e Dean Edmound.

5 Neuronio e a celula do sistema nervoso responsavel pela conducao do impulso nervoso na qual esta localizada no cerebro.

6 Redes Neurais sao sistemas computacionais estruturados numa aproximacao a computacao baseada em ligacoes.

7 Sequencia de instrucoes executadas ate que determinada condicao seja alcancada.

17

O SNARC era um computador mecanico constituido por 3.000 valvulas que simulavam apenas 40 neuronios (RUSELL e NORVIG, 2004, p. 18). No ano de 1956 em Dartmouth foi criado um seminario por John McCarthy, que reuniu os grandes pesquisadores daquela epoca. Esse seminario nao teve grande relevancia geral, a nao ser o trabalho dos pesquisadores de Carnegie Tech8, Allen Newell e Hebert Simon. Estes pesquisadores desenvolveram um programa de raciocinio chamado ¡§Logic Theorist¡¨, ou simplesmente LT. Segundo Simon a descricao do LT e essa. ¡§Criamos um programa de computador capaz de pensar nao numericamente e assim resolvemos o antigo dilema mente-corpo¡¨. Nesse seminario tambem houve a denominacao do nome desse campo de pesquisa. Aqui se da o nome de Inteligencia Artificial a essa area. Essa sugestao foi de John McCarthy, pois ele chegou a conclusao de que essa area nao poderia mais ser uma ramificacao da matematica por ter sua metodologia ligada a ciencia da computacao, possuindo objetivos ligados a comportamentos e acoes humanas como criatividade, raciocinio e uso da linguagem natural. Apesar da epoca nao dar total suporte tecnologico ao desenvolvimento de pesquisas e construcoes de maquinas capazes de reproduzir da maneira desejada o comportamento humano, os trabalhos tiveram muita validade, sendo que padroes obtidos com as pesquisas dessa epoca sao utilizados ate os dias de hoje. A partir da criacao do termo Inteligencia Artificial, de acordo com a MIT 9 pode- se dividir em tres epocas a historia da IA (BITTENCOURT, 2006, p. 2).

2.2 Era Classica

A era classica comecou quando Newell e Simon continuaram suas pesquisas e projetaram um dispositivo capaz de resolver qualquer tipo de problema baseado em simbolos. Sistemas desse tipo podem ser caracterizados com GPS 10 ou solucoes de problemas genericos. Diferentemente do LT, esse projeto tinha como principio a resolucao de problemas relacionados a forma humana, ja que o LT era um solucionador de problemas que utilizava calculos matematicos. Por isso este foi o primeiro sistema a ser considerado com a capacidade de ¡§pensar com forma humana¡¨. Esta pesquisa foi muito importante na epoca, ja que os resultados obtidos foram considerados surpreendentes, pois os testes foram realizados em ambientes relativamente simples, uma vez que o principal objetivo era apenas a demonstracao. Na area de desenvolvimento de jogos e da matematica existiram trabalhos e

8 Atualmente conhecido como Carniegie Mellon University (CMU)

9 Massachusetts Institute of Technology ou Instituto de Tecnologia de Massachusetts

10 General Problem Solver ou Solucionador de problemas genericos

18

muitas pesquisas. Podemos destacar tambem a criacao da linguagem Lisp11 por McCarthy. Essa linguagem foi criada quando McCarthy trocou Dartmouth pelo MIT em 1958. Trabalhos com redes neurais foram desenvolvidos nessa epoca tomando como base o trabalho pioneiro de McCulloch e Pitts. Os responsaveis pelas pesquisas nessas areas foram Winograd e Cowan. Junto com essa pesquisa, Bernie Widrow melhorou a proposta de Hebb, dando o nome de Adalines. De acordo com os fatos, e possivel constatar que nessa era realmente comecou a area de IA, nessa epoca tambem pesquisas e trabalhos relacionadas ao assunto cresceram e contaram cada vez mais com a colaboracao de pesquisadores. A era classica tambem pode ser vista como um marco, pois muitos conceitos que foram criados sao seguidos ainda nos dias de hoje (RUSELL e NORVIG, 2004, p. 20).

2.3 Era Romantica

Nessa fase da IA, o entusiasmo tomou conta dos pesquisadores, isso por que os resultados obtidos eram satisfatorios e a evolucao tecnologica proposta era muito esperada. Esse entusiasmo foi tao grande que Simon fez uma previsao que em 10 anos um computador poderia vencer um jogador profissional de xadrez, cuja previsao teve um erro de aproximadamente 40 anos (RUSELL e NORVIG, 2004, p. 22).

Na era romantica a IA estava direcionada quase que praticamente no ambito academico, ou seja, nessa epoca e possivel afirmar que os trabalhos realizados foram direcionados a pesquisas e a construcao de conceitos. Alguns conceitos elaborados nessa epoca sao utilizados ate os dias de hoje de forma integrada com a ciencia da computacao, como tempo compartilhado, ambientes de desenvolvimento de software, orientacao a objetos e principalmente a eliminacao do mediador para colocar cada usuario em sua estacao de trabalho.

Nessa fase tambem alguns conceitos foram modificados. O que teve maior mudanca foi a utilizacao de forma mais intensiva da matematica nas pesquisas e em julgamentos em trabalhos. De acordo com o que foi proposto, a programacao perdeu importancia na area de IA, devido ao fato de que foi dada maior enfase aos estudos, analise das metodologias e uma melhor construcao da semantica utilizada nos sistemas inteligentes. Com esses avancos na parte conceitual, entre as decadas de 70 e 80 as atividades de IA passaram a ter perspectivas de uso nas areas comerciais e industriais. (BITTENCOURT, 2006, p. 4).

11 Processamento em lista (List Processing) usava matematica como base para desenvolvimento das estruturas de programacao

19

2.4 Era Moderna

A era moderna deu inicio a uma nova visao sobre o desenvolvimento de tecnicas de IA. Ate o inicio dessa era as tecnicas de resolucao de problemas eram de busca geral, ou seja, primeiro se buscavam os passos elementares para resolucao dos problemas. Essa tecnica se mostrou fraca, pois quanto maior o problema, mais complexo o algoritmo, ou seja, maior numero de passos para a resolucao do mesmo, tornando muito mais dificil sua resolucao. A partir dessa visao foi concluido que primeiramente se deveria conhecer todo o problema antes de tentar achar suas respostas, isto e, para resolver um problema primeiro tinhamos que ter sua solucao. (RUSELL e NORVIG, 2004, p. 23).

O primeiro programa desenvolvido seguindo esse novo conceito foi o DENDRAL. Esse software tinha como objetivo descobrir a estrutura molecular a partir de informacoes coletadas de um espectrometro, um instrumento optico capaz de medir propriedades de luz em certa faixa de um espectro eletromagnetico, gerando depois todas as possiveis estruturas para compara-las com a que foi fornecida inicialmente. Os resultados que foram obtidos com o DENDRAL foram muito bons, pois o conhecimento tecnico era de apenas uma area especifica aplicado primeiramente em formas de regras, para depois ser aplicado o raciocinio para resolver o problema, ou seja, foi separado o conhecimento tecnico da base de raciocinio. Essa abordagem foi de McCarthy em Advice Taker.

Apos o DENDRAL ser construido e constatado que o projeto tinha sido um sucesso, foi iniciado o projeto MYCIN. O MYCIN tinha como objetivo fazer analises de infeccoes sanguineas. Sua estrutura de resolucao de problemas foi formada a partir de 450 regras, sendo que ele se baseava no conhecimento que era adquirido em entrevistas com especialistas da area. Esse programa tambem era capaz de aprender com experiencias a cada ¡§consulta¡¨ realizada, ou seja, cada resultado que ele gerava era armazenado para uma futura analise. Seu algoritmo tambem era diferente, ele utilizava um algoritmo de incerteza baseado no conhecimento medico, isto e, ele simulava a forma que os medicos da epoca faziam os seus diagnosticos. Com tudo isso os diagnosticos gerados pelo MYCIN muitas vezes eram mais precisos que os de medicos especialistas (RUSELL e NORVIG, 2004, p. 26). Com o crescimento dos sistemas especialistas, as linguagens de programacao para esse tipo de programas tambem comecaram a ser criadas nessa epoca. Podemos destacar a linguagem

20

Prolog12 que foi desenvolvida e muito utilizada na Europa e a linguagem PLANNER que foi criada e utilizada em grande escala nos EUA.

Na area de redes neurais as pesquisas foram retomadas nessa epoca, porem nao na area de computacao. Elas foram realizadas com base na fisica e da psicologia. Em meados dos anos 80 uma pesquisa realizada por quatro pensadores da epoca recriaram o algoritmo de aprendizado por retro propagacao desenvolvido por Bryson e Ho em 1962. Ela foi utilizada em varios problemas e os resultados obtidos foram apresentados em uma coletanea Parallel Distribuited Processing desenvolvido por Rumelhart e McClelland em 1986.

Nessa era a IA finalmente adotou com firmeza o metodo cientifico, ou seja, se tornou uma ciencia. Para novas descobertas ou novos conceitos serem aceitos, esses deveriam ser submetidos a rigorosos experimentos e os resultados desses experimentos eram analisados de acordo com sua real importancia (RUSELL e NORVIG, 2004, p. 27). Na area do reconhecimento da fala ate a decada de 70, foram criadas muitas arquiteturas e modelos com as mais variadas formas de abordagens, porem nenhuma delas foi convincente o suficiente para se tornar um padrao. Ate que em meados da decada de 80 os MOM¡¦s ou modelos ocultos de Markov comecaram a ser muito utilizados para a area de reconhecimento da fala. Esse modelo comecou a ser utilizado por dois fatores. O primeiro e que ele se baseava em matematica, isso trouxe como beneficio o aproveitamento de estudos relacionados a outras areas para utilizacao nas pesquisas sobre a fala e em segundo que eles eram gerados por um processo de treinamento em um conjunto de dados de fala. Com esse conjunto o desempenho se tornou mais robusto e em relacao a testes cegos e os MOM¡¦s se mostraram muito bons, sempre aumentando suas pontuacoes nos testes. (RUSELL e NORVIG, 2004, p. 27).

Os trabalhos relacionados a redes neurais na decada de 80 tinham como principio tentar definir a abrangencia do que poderia ser feito e aprender o que havia de diferente entre as redes neurais e as tecnicas consideradas tradicionais. Nessa era com o avanco nos estudos e com a utilizacao de novas metodologias, as redes neurais passaram a ser comparadas a tecnicas de estatisticas, a reconhecimento de padroes e de aprendizado de maquina.

Com todos esses resultados alcancados, a mineracao de dados gerou uma nova industria da IA, em 1988 o artigo ¡§Probabilistic, Reasoning in Intelligent System¡¨ foi criado por Judea Pearl. Essa obra teve como denominacao a Rede Bayesiana. As redes bayesianas tem como principio representar de forma eficiente o conhecimento incerto e o raciocinio que utiliza esse tipo de conhecimento. A abordagem da IA aplicada nas redes bayesianas superou os

12 Prolog e uma linguagem de programacao que se enquadra no paradigma de Programacao em Logica Matematica.

21

problemas encontrados nas decadas de 60 e 70, combinando o que tem de melhor dos conceitos da era classica com as redes neurais, possibilitando o aprendizado a partir da experiencia. (RUSELL e NORVIG, 2004, p. 27).

A area da robotica tambem seguiu esses conceitos descritos ate agora. Foi dada enfase a compreensao dos problemas e das propriedades de complexidade combinadas a matematica. Isso tudo resultou em pesquisas e metodos robustos.

2.5 Redes Neurais

As Redes Neurais ou simplesmente RNA sao modelos matematicos que se assemelham as estruturas neurais biologicas e que tem capacidade computacional adquirida por meio de aprendizado e generalizacao (BRAGA, CARVALHO, LUDEMIR, 2000 apud REZENDE, 2005, p. 142). O aprendizado esta diretamente relacionado ao modo de como ele pode adaptar seus parametros ao mundo externo, ou seja, o modo de como uma RNA aprende e interativo. Com isso um sistema baseado em RNA deve melhorar seu desempenho gradativamente a medida que interage com o ambiente. A generalizacao esta associada ao fato de como a mesma se comporta em um ambiente no qual nao foi explorado ainda pelo sistema, ou seja, ela deve ser independente e aprender de acordo com as situacoes que aparecem, por isso que ela e interativa. Porem os conceitos mais atuais dizem que a generalizacao de uma RNA deve ser controlada e que ela e o conhecimento devem ¡§andar juntas¡¨. Isso se explica, pois nos moldes anteriores a generalizacao surgia naturalmente como consequencia do aprendizado.

O processamento da informacao em uma RNA e feito por meio de estruturas neurais artificiais. O armazenamento e processamento da informacao sao realizados de maneira paralela e de maneira distribuida. Cada processador corresponde a um neuronio artificial. O primeiro modelo de neuronio artificial foi proposto por McCulloch e Pitts em 1943 no projeto Perceptron (REZENDE, 2005, p. 142).

22

Figura 1. Visao de uma rede neural proposta por McCulloch e Pitts.

De acordo com a Figura 1, podemos ver um esquema de uma rede neural. As entradas de valores correspondem a X = [x1, x2, xn] da dimensao proposta, sendo que para cada uma das entradas Xi existe um peso Wi. A diferenca entre a soma das entradas Xi e os seus pesos correspondentes Wi resulta na saida linear no somatorio. O Y e o resultado de tudo isso, ou seja, aquilo que foi processado pela RNA.

2.6 Sistemas Tutores

Segundo Gavidia & Andrade, (2003, p. 3) os sistemas tutores tiveram origem no final dos anos 50 quando os principais pesquisadores da epoca achavam que os computadores podiam ter a habilidade de pensar como nos, os seres humanos. Contudo, essa expectativa nao foi alcancada, muitos dizem que foi por causa do poder de processamento das maquinas da epoca que nao tinham capacidade de fazer o que era proposto, tornar a maquina apta a pensar ou para simplesmente seguir instrucoes. Foi entao que os primeiros CAI 13 foram criados.

Durante a epoca de 60 e 70, os estudos sobre IA estavam gerando muita expectativa em relacao ao seu crescimento. Isso se dava, pois nessa epoca o poder computacional estava crescendo, isso tambem contribuiu com que todo esse cenario de expectativa fosse criado. Mesmo com isso, a grande complexidade que era envolvida em relacao aos problemas abordados atravancou esse crescimento. Mesmo assim a esperanca de crescimento continuou durante as epocas seguintes, de 70 e 80.

De acordo com Gavidia & Andrade, (2003, p. 6) os sistemas tutores nasceram com a iniciativa de tratar as falhas dos sistemas generativos e podem ser vistos como os CAI dos anos 80. O foco principal dessa pesquisa pode ser caracterizado pela preocupacao em que os pesquisadores tinham em representar da melhor forma o conhecimento dentro de um sistema

13 Sistemas de Instrucao Assistida por Computador

23

inteligente. Pensando dessa forma, foi dado inicio ao desenvolvimento dos primeiros ICAI 14. Estes tinham uma estrutura diferenciada para trabalhar em dominios educacionais, pelo fato de utilizarem tecnicas de IA e Psicologia Cognitiva para guiar todo o processo de aprendizagem.

Entao podemos dizer que STI (sistemas tutores inteligentes) sao sistemas instrucionais baseados em computador com modelos de conteudo instrucional com a funcao de especificar ¡§o que¡¨ ensinar, e estrategias de ensino que especificam ¡§o como¡¨ ensinar. (WENGER, apud GAVIDIA & ANDRADE, 2003, p. 7).

2.7 Robotica

De acordo com Russel & Norvig (2003, p. 870) robos sao agentes que executam tarefas manipulando fisicamente algum objeto no mundo real. Para que estes agentes fisicos consigam interagir, eles precisam de equipamentos que os tornem capaz disso. Por isso eles sao equipados com efetuadores. Eles tem como funcao, fazer com que os robos tenham forca fisica sobre o ambiente. Efetuadores podem ser pernas, rodas, garras ou articulacoes. Junto com isso, robos tambem sao equipados com sensores. Os sensores tem como funcao proporcionar aos robos a percepcao do ambiente em que se encontram. Para isso sao utilizadas cameras, ultrassom, giroscopios15 e acelerometros16.

Podemos dizer que os robos sao divididos em grandes categorias, sao elas:

„h Manipuladores: Os exemplos mais comuns desse tipo de robo sao os bracos mecanicos construtores de outras maquinas. Todo seu movimento e programavel, sendo que ele se move a partir de articulacoes. E o tipo mais comum de robo da atualidade.

„h Moveis: Sao aqueles que possuem algum mecanismo o qual fornece meio de locomocao, desde rodas, pernas, esteiras e etc. Dentro desse tipo existem tres tipos de robos, os ULV (unmanned land vehicle), este e capaz de se locomover de maneira autonoma em estradas. Os UAV (unmanned air vehicle), este e utilizado para acos de vigilancia, pulverizacao de plantacoes e operacoes militares, como por exemplo, em missoes de descoberta de territorio inimigo e ainda os AUV (autonomous underwater vehicle) que sao usados para exploracoes submarinas.

14 Instrucoes Assistidas por Computador Inteligentes

15 Giroscopio e um dispositivo que consiste de um rotor suspenso por um suporte formado por dois circulos articulados, com juntas tipo cardam. Seu funcionamento baseia-se no principio da inercia.

16 Acelerometro e um instrumento para medir a aceleracao.

24

„h Humanoides: Sao robos que imitam a forma humana. Nessa categoria ainda podem ser citadas as proteses roboticas. Estas proteses podem substituir uma parte do corpo humano como, por exemplo, pernas, bracos, olhos e outros.

2.8 Sistemas Especialistas

Os sistemas especialistas ou baseados em conhecimentos sao aqueles que solucionam problemas que normalmente seriam resolvidos por pessoas muito capacitadas em tal area. (GRZYBOWSKI, 2007, p. 24). Os mais conhecidos sao o MYCIN e o Prospector.

A engenharia do conhecimento e o termo utilizado para descrever o processo de desenvolvimento de um sistema desse tipo. Isso se deve, pois, o engenheiro extrai do especialista todos os seus processos, conhecimentos, procedimentos e regras, ou seja, tudo aquilo que e necessario para que um humano capacitado consiga resolver um problema desse tipo. Somente abstraindo esse conhecimento e possivel desenvolver o sistema especialista relacionado a tal assunto. Porem para que um sistema especialista consiga realizar sua funcao, ele deve armazenar as experiencias passadas, como se fosse um humano que realizou diversas vezes a mesma tarefa ou ainda quando realizou somente uma vez uma tarefa, ter como se lembrar de como que foram realizadas tais acoes.

Para isso sistemas dessa natureza devem guardar as experiencias para que ele possa tomar futuras decisoes. Para que seja possivel essa tomada de decisao, ele deve primeiramente verificar a importancia dos fatos levantados e fazer uma comparacao entre o fato e o seu conhecimento acumulado, depois disso ele ira formular novas hipoteses e levantar novos fatos. Esses novos fatos levantados podem acarretar em novas decisoes. Seguindo esse raciocinio, se um sistema dessa natureza nao tiver um conhecimento previo satisfatorio, as conclusoes que ele chegara podem ser nulas ou muito aquem daquilo que se espera. (GRZYBOWSKI, 2007, p. 24). Um sistema especialista deve ter a capacidade de aprender novos conhecimentos melhorando o desempenho de raciocinio e a qualidade nas decisoes.

Dentro desse contexto, um sistema desse tipo deve ter como principio cinco componentes basicos: Base de conhecimento, Maquina de inferencia, Subsistema de aquisicao de conhecimento, Subsistema de explicacoes e Interface de usuario.

25

2.9 Agentes Inteligentes

Segundo Russel & Norvig (2003, p. 33), um agente e tudo que pode ser considerado capaz de perceber seu ambiente por meio de sensores e de agir sobre o ambiente por meio de atuadores. Pode-se dizer que o primeiro agente foi criado em 1990 por Newell, John Laird e Paul Rosenbloom no SOAR. Em um agente inteligente o software recebe das mais diversas formas informacoes, podendo ser a partir do teclado, de arquivos, pacotes de rede ou de imagens capturadas a partir de uma camera. Dessa forma e possivel afirmar que de uma maneira geral um agente inteligente pode perceber suas acoes, mas em muitas vezes nao e capaz de perceber o efeito delas. Em agentes inteligentes o termo percepcao e utilizado para referenciar as entradas perceptivas do agente em qualquer momento, com isso podemos dizer que uma sequencia de percepcao e a historia completa de tudo aquilo que ja foi percebido pelo agente inteligente.

Um agente inteligente faz aquilo que lhe foi programado, mas de qual forma iremos saber que a acao realizada por ele esta certa ou errada? Para sabermos isso existem as medidas de desempenho. Elas se baseiam em medir o sucesso do comportamento do agente. Um agente em um ambiente executa uma serie de acoes de acordo com aquilo que ele percebe (percepcoes), como vimos anteriormente. Essa serie de acoes esta associada a uma serie de estados, ou seja, a cada acao do agente, pode-se dizer que o ele estava em um tipo determinado de estado.

Em um exemplo citado por Russel & Norvig, (2003, p. 34) um aspirador de po e inserido em um chao sujo. A medida de desempenho de um aspirador de po e subjetiva, ou seja, depende do tempo de limpeza e de como foi realizada a sua tarefa. Pode ser que em um ambiente existam dois aspiradores, sendo que um tenha um desempenho pifio e o outro seja extremamente competente, porem com um longo periodo pausado. Nesse ambiente com dois aspiradores o resultado da limpeza pode ser caracterizado medio, ja que os dois agentes realizaram a mesma tarefa, porem o desempenho de cada um influenciou diretamente no resultado final, que e a limpeza do ambiente. Ainda nesse exemplo e citado outro ambiente com algumas medidas de desempenho. Nesse exemplo o aspirador a cada quadrado limpo tem direito a ficar 1000 unidades de tempo em pausa, o ambiente e conhecido pelo aspirador, mas a posicao da sujeira nao, suas acoes sao esquerda, direita, aspirar e no operation, ou nenhuma funcao. Ele tambem tem a capacidade de perceber se o quadrado esta limpo ou sujo. A partir disso podemos dizer que o aspirador e racional e ao mesmo tempo irracional, ou seja, de

26

acordo com a circunstancia que ele se encontra, o agente ira reagir de uma maneira diferente. Se o local esta completamente limpo, ele tera que ficar ¡§vagando¡¨ de um lado para outro ate achar um quadrado sujo. Nessa situacao seria melhor se o aspirador tivesse uma medida de verificacao, que verificaria se todos os quadrados estivessem limpos, se estivessem limpos ele ficaria em stand-by, senao ele iria ate o quadrado sujo e o limparia. Levando em consideracao o exemplo anterior dos aspiradores, chegam-se a dois conceitos importantes em agentes inteligentes, Onisciencia e Racionalidade.

Onisciencia para Russel & Norvig, (2003, p. 37) e quando um agente sabe quais consequencias suas acoes irao fazer, ou seja, ele teria que ter a capacidade de prever aquilo que acontece depois de realizar sua acao, ou seja, um comportamento impossivel de realizar em um software de um agente. Considerando o fator de o comportamento de onisciencia, a racionalidade apenas maximiza o desempenho esperado do agente, enquanto a perfeicao, ou no caso a caracteristica de onisciencia preve a maximizacao do desempenho real. Considerando os conceitos de onisciencia e racionalidade, podemos afirmar que para um agente ser racional ele nao necessita onisciencia, isso se deve ao fato de que suas escolhas sao racionais, pois elas dependem daquilo que foi percebido, ou seja, elas dependem da sequencia de percepcoes ate o momento. Essa estruturacao se caracteriza em acoes inteligentes. (RUSELL e NORVIG, 2004, p. 38).

Mas para um agente ser caracterizado racional deve ter tambem outras funcoes especificas como aprendizado e autonomia. A capacidade de aprendizado de um agente leva-o a autonomia, pois para que um agente possa ser autonomo ele deve ter a capacidade de interagir com o ambiente de uma forma que nao seja necessaria uma intervencao. Conclui-se com isso que ele deve aprender o que puder para compensar um conhecimento previo, parcial ou incorreto. Seguindo o mesmo exemplo do aspirador de po Russel & Norvig (2003, p. 38) um aspirador que tem a capacidade de saber onde esta sujo e melhor do que um que nao possui tal caracteristica.

2.9.1 Tipos de Agentes

Os agentes inteligentes praticamente possuem a mesma estrutura basica, ou seja, eles recebem a percepcao atual como entrada vinda dos sensores e como retorno, mandam uma acao para os atuadores. Porem existem quatro tipos basicos de agentes inteligentes que incorporam alguns principios particulares, sao eles. (RUSELL e NORVIG, 2004, p. 46).

„h Agentes reativos simples

„h Agentes reativos baseados em modelos

27

„h Agentes baseados em objetivos

„h Agentes baseados na utilidade

Alem destes quatro tipos de agentes, existe ainda um tipo que pode ser incorporado a todos os citados anteriormente, que sao o foco dessa pesquisa, os agentes com aprendizado.

2.9.2 Agentes Reativos Simples

Os agentes reativos simples como o proprio nome diz sao os mais simples. Eles realizam suas acoes de acordo com a percepcao mais atual, sem levar em consideracao as percepcoes anteriores. Um exemplo de um sistema reativo simples pode ser o aspirador de po que falamos anteriormente. Nesse exemplo podemos programa-lo para apenas guardar sua ultima acao, se e andar ou limpar. (RUSELL e NORVIG, 2004, p. 46).

2.9.3 Agentes Reativos Baseados em Modelos

Um agente baseado em modelos deve ter nocao de ¡§como o mundo funciona¡¨. Essa ideia de saber como o mundo funciona e muito simples, isso e, quer dizer que um sistema desse tipo tem um estado interno. Esse estado interno e aquele em que o agente se encontra quando este se depara com um novo acontecimento, ou seja, ele depende do historico de percepcoes. Dessa forma podemos ver que esse estado e o responsavel por fazer o agente refletir sobre o aspecto que ate o momento nao estava sendo observado, caracterizando uma nova acao. Agentes desse tipo tem funcoes de atualizacao. Essas funcoes sao determinantes a esses tipos de agentes, pelo fato de que essas funcoes sao responsaveis por manter o estado sempre com a possibilidade de percepcao de novos conhecimentos e a respeito da evolucao do ambiente que se encontra. (RUSELL e NORVIG, 2004, p. 48).

2.9.4 Agentes Baseados em Objetivos

Baseando-se ainda em relacao aos estados de um agente, nem sempre sabendo o estado em que se encontra atualmente o agente e o suficiente para saber qual sera a proxima acao que ele tera que desempenhar. Para isso, agentes baseados em objetivos tem incluido a logica de estados, informacoes denominadas como objetivos, que nada mais sao em uma maneira geral aquilo que foi determinado ao agente realizar. Muitas vezes uma selecao de acao baseada em objetivos pode ser muito simples e direta, isso quando ele e alcancado resultando apenas uma acao. Porem quando o agente deve considerar muitas acoes para se chegar ao seu objetivo e possivel que ele tenha que ter um metodo de busca e planejamento dele, ou seja, deve-se ter um auxilio a tomada de decisao. O funcionamento de um agente baseado em objetivos pode parecer menos eficiente, mas em contrapartida e mais flexivel,

28

pelo fato de que o conhecimento e quem apoia suas decisoes, podendo ainda esta decisao modificada, de acordo com o conhecimento abstraido. (RUSELL e NORVIG, 2004, p. 49).

2.9.5 Agentes Baseados na Utilidade

Agentes desse tipo aliam as funcoes de objetivos e adicionam um paradigma muito importante que e a utilidade. A utilidade e inserida nos agentes a fim de proporcionar mais qualidade no comportamento onde os agentes interagem. Um exemplo de agente baseado em utilidade e citado por Russel & Norvig (2003, p. 50). Esse exemplo relata a existencia de dois estados, o feliz e o triste. Partindo do principio que conhecemos esses dois estados, podemos saber a partir do que esse modelo de agente propoe, uma comparacao na sequencia desses dois estados, podendo assim estimar um nivel de felicidade ou tristeza. Chegando nesse nivel podemos descrever qual foi o nivel do ¡§sentimento¡¨ do agente para se chegar ao objetivo final. A funcao de utilidade tambem permite decisoes mais racionais aos agentes quando objetivos que podem ser alcancados sao contraditorios e quando os objetivos podem nao ser atingidos com certeza, a utilidade fornece um meio pelo qual a probabilidade de sucesso pode ser ponderada em relacao a importancia dos objetivos. (RUSELL e NORVIG, 2004, p. 51).

2.9.6 Agentes com Aprendizagem

A ideia de criacao de programas agentes com capacidade de aprendizagem foi de Turing em 1950. Ele tinha como metodo construir maquinas com capacidade de aprendizado para depois ensina-las. Esse metodo criado por Turing e utilizado atualmente para o desenvolvimento de sistemas que utilizam IA. Sistemas com essa capacidade podem ser inseridos em ambientes ¡§desconhecidos¡¨ podendo se tornar mais eficientes e competentes de acordo com o aprendizado que esse agente pode vir a ter nesse novo ambiente. Um agente de aprendizado pode ser dividido em quatro componentes conceituais, segundo RUSSEL & NORVIG (2003, p. 51). Sao eles:

„h Elemento de aprendizagem: E responsavel pela execucao de aperfeicoamentos.

„h Elemento de desempenho: Responsavel pela selecao de acoes externas seria como um agente ¡§completo¡¨, pelo fato de que ele recebe percepcoes e decide acoes.

„h Realimentacao do Critico: O elemento de aprendizagem usa a realimentacao do critico para saber como o agente esta funcionando e determina de que maneira o elemento de desempenho deve ser modificado no futuro.

„h Gerador de problemas: Ele e responsavel por sugerir acoes que levarao a novas experiencias e novas informacoes. O gerador de problemas tem como principal

29

funcao, fazer com que o elemento de desempenho possua o poder de exploracao, para abstracao de novos conhecimentos que podem ser utilizados posteriormente.

2.10 Sistemas Multiagentes

Os problemas abordados em sistemas multiagentes nada mais sao que as de um conjunto de agentes autonomos em um universo multiagente, ou seja, esse tipo de sistema por mais que seja ¡§multi¡¨, isto e com varios membros, segue como principio individualizar cada agente. Isso se deve, pois os agentes tem existencia e objetivos proprios a serem alcancados. Dessa forma, como podemos imaginar um sistema onde todos os seus membros tem papeis e objetivos diferentes, chegarem a um unico proposito? Para isso devemos primeiramente conceber os meios atraves dos quais se possam assegurar que tais agentes irao cooperar entre si para somente assim ao proposito final, que e a resolucao do problema proposto no inicio. (RUSELL e NORVIG, 2004, p. 53).

30

3 TRABALHOS RELACIONADOS

3.1 Chatterbots ¡V O que sao?

Atualmente ninguem duvida dos poderes da informatica nas nossas vidas, todos sabem do que ela e capaz e do que pode ser capaz. Porem alguem ha dez anos imaginaria que computadores poderiam controlar o transito, reconhecer pessoas, construir maquinas como carros ou coisas do genero? Pois hoje podemos dizer que sim. Mas se formos mais a fundo nessa questao, podemos concluir que para um computador possa realizar tarefas desses tipos, primeiramente eles devem ter condicoes de perceber aquilo que lhe foi dado para controlar ou manipular e saber realmente o que se deve fazer com tal informacao, dado ou material. Isto e, o computador deve ter a capacidade de raciocinar e tomar decisoes, o que os torna muito parecido com nos, os humanos em uma visao mental, porem, diferente em um aspecto, os computadores nao tem consciencia daquilo que estao executando, ou seja, o processo e completamente mecanico. E justamente nessa parte que pesquisadores estao concentrando seus estudos, tendo como objetivo tornar as maquinas capazes de raciocinar, se comunicar, pensar e compreender como nos. (LUCHETTA, 2005, p. 3).

Uma das formas de computadores interagirem com humanos nos dias atuais sao com os robos de conversacao, ou os chatterbots. Chatterbots sao agentes inteligentes que utilizam do processamento da linguagem natural (PNL) como ferramenta para dialogar com usuarios. Isto e, chatterbots nada mais sao que robos de software que tem como objetivo principal facilitar a interacao homem-maquina com o uso da linguagem natural para conversar e trocar informacao. A palavra chatterbot vem da uniao de duas palavras em ingles, chatter quer dizer conversa, ou algo que conversa e bot e a abreviacao de robot, que quer dizer robo. (LAVEN, 2001 apud LUCHETTA, 2005, p. 6).

3.2 Primeira Geracao

O primeiro chatterbot que se tem noticia foi criado em entre 1964 e 1965 no MIT pelo Dr. Joseph Weizenbaum. O nome desse programa era ELIZA. Esse sistema e um dos mais conhecidos no mundo e teve versoes em muitas linguas. Eliza era um sistema para psicanalise baseado no principio psicanalitico Rogeriano. Tinha como principal funcao repetir frases ditas pelos seus ¡§pacientes¡¨, conseguindo se comunicar sem intervencao do psicanalista. Sua

31

programacao era muito simples, possuindo apenas 204 linhas de codigo. A programacao era caracterizada pelo uso de tecnicas de casamento de padroes, ou seja, para cada entrada do usuario, era realizada uma busca sequencial por grupos de palavras-chave. A resposta do sistema era montada a partir de respostas pre-definidas para cada grupo de palavras-chave. Mesmo com a simplicidade e com o tamanho reduzido das linhas de codigos, ELIZA possuia uma das personalidades mais bem definidas dentre os chatterbots, sendo muito compreensiva com seus pacientes, porem nao se lembrava de nada que foi dito durante a conversa, ou seja, nao eram armazenados dados durante as conversas. (LAVEN, 2001 apud LUCHETTA, 2005, p. 7). Nessa epoca ainda podemos destacar o The PC THERAPHIST, construido em 1992, por Joseph Weintraub e HEX por Jason Hutchens ganhadores dos premios de 1991, 1992, 1993, 1995 e 1996 respectivamente.

3.3 Segunda Geracao

Mesmo com todo o sucesso da ELIZA e a popularizacao dos chatterbots, a comunidade cientifica nao estava satisfeita com os resultados ate entao atingidos com as tecnicas de casamento de padroes. Com essa insatisfacao os pesquisadores comecaram a desenvolver chatterbots que utilizavam outras tecnicas no ponto de vista da IA, com isso as redes neurais e a logica fuzzy17 comecaram a ter destaque. O chatterbot que marcou epoca e que utilizava padroes de redes neurais foi a JULIA. O chatterbot JULIA foi desenvolvido por Micheal Mauldin. Ela se destacou porque habitava ambientes de realidade virtual, baseados em textos. JULIA tinha capacidade de conversacao com usuarios e ainda era capaz de lembrar o que era conversado e o que ela decidiu anteriormente. Ja o MEGA-HAL, desenvolvido por Jason Hutchens e mais um exemplo de chatterbot desenvolvido na epoca. Ele tinha capacidade de aprendizagem automatica, construindo sua base de conhecimento nos modelos de Markov. (LUCHETTA, 2005, p. 8).

O JFRED, ou Java Functional Emulation Devices, um chatterbot desenvolvido em Java, que tinha como foco robos para web, utilizou logica Fuzzy e palavras-chave para o casamento de padroes, igualmente a ELIZA. A base de conhecimento deste chatterbot foi desenvolvida com a linguagem JRL. (JFRED Rulset Language) (LAVEN, 2001 apud GRZYBOWSKI p. 36). Mesmo com todas as tecnicas que foram desenvolvidas, os cientistas nao conseguiram os resultados que tanto sonhavam.

17 A logica fuzzy pode ser entendida como uma situacao onde nao podemos responder simplesmente "Sim" ou "Nao".

32

3.4 Terceira Geracao

No inicio dos anos 2000 um chatterbot inovador foi apresentado no premio Loebner denominado ALICE (Artificial Linguistic Internet Computer Entity). Esse chatterbot foi criado pelo Dr. Richard Wallace, ele utilizou a linguagem AIML (Artificial Intelligence Markup Language), uma linguagem baseada no XML (eXtensible Markup Language), que tem como objetivo representar a base do conhecimento do chatterbot. (LAVEN, 2001 apud GRZYBOWSKI p. 37).

3.5 Classificacao dos Chatterbots

Para que possamos entender melhor sobre os chatterbots, podemos classifica-los de acordo com os seus propositos, isto e, a partir de suas caracteristicas especificas. Entre as categorias podemos destacar (CASTANHO 2002; LEITAO, 2004; SILVA, 2002, apud LUCHETTA, p. 9):

3.5.1 Chatterbots de Entretenimento

O principal objetivo dos chatterbots desse tipo e o divertimento dos usuarios. Nessa area entram chatterbots como ALICE, JULIA, CYBELLE e MEGA-HAL. Todos eles tem caracteristicas em comum, mas uma tem destaque, que e o dinamismo apresentado por eles, ou seja, ele tem como caracteristica simular a vida atraves de suas personalidades. Ainda dentro dessa categoria podem-se incluir os persona-bots, esses chatterbots tem como principal tarefa simular a personalidade de uma pessoa em particular. Um exemplo de um persona-bot foi o John Lennon. Abaixo podemos ver a interface de um dos chatterbot mais famosos do mundo, a ALICE, (Figura 2).

Figura 2. Interface do Chatterbot ALICE

33

3.5.2 Chatterbots de suporte a usuarios

O foco de aplicacao de chatterbots para atendimento ao consumidor e a reducao de custos. Imagine um e-commerce que da todo o suporte via internet. Pois bem, em uma situacao dessas, muitos funcionarios ficariam apostos para dar suporte aos usuarios. Com o uso de um chatterbot, os custos com esses funcionarios seriam cortados e uma grande economia poderia ser feita. Ainda vendo os lados positivos, um chatterbot esta em funcionamento 24h por dia. Um exemplo de um chatterbot desenvolvido com esse fim e o HANK. Ele foi criado pela Coca-Cola e tem como objetivo responder as duvidas dos usuarios em relacao aos produtos e sobre a empresa. Quando o HANK nao tem como responder a uma duvida, um e-mail e enviado para pessoas responderem a duvida. Outro chatterbot que pode ser citado nessa categoria e a Anna. Ela foi desenvolvida pela empresa IKEA de Portugal. A IKEA e uma loja com varios tipos de produtos, sendo que ela responde a respeito dos precos, tamanhos, entregas e pecas de reposicao. Abaixo segue uma imagem com a interface deste chatterbot.

Figura 3. Interface do Chatterbot Anna

3.5.3 Chatterbots de Marketing

O objetivo principal desse tipo de chatterbot e demonstrar um produto. Esse tipo de robo mistura caracteristicas de entretenimento e de um Faqbot. Porem os chatterbots de marketing devem ser muito bem planejados, pois o foco deles sao atrair novos clientes. Deve-se ter cuidado, pelo fato de que dependendo da forma em que ele for programado pode-se

34

conseguir o efeito contrario. Um exemplo de um chatterbot desse tipo e o Se7e Zoom, da empresa Insite, construido para resolver as duvidas dos produtos close-up.

Figura 4. Interface do Chatterbot Se7e Zoom

3.5.4 Ensino a Distancia

Esse tipo de chatterbot e o foco do trabalho. Porem a principal funcao dele e motivar os alunos a manterem contato nas aulas a distancia. Nesse trabalho o foco e parecido com o de um FaqBot. O trabalho propoe a construcao de um chatterbot para solucao de duvidas dos alunos e professores que utilizam o AVA18 moodle. Abaixo segue a interface do chatterbot Prof.a Elektra, desenvolvido pela UFRGS, que tem como principal caracteristica dar apoio 24h por dia aos alunos na complementacao do aprendizado de estudantes de cursos a distancia, (Figura 5).

Figura 5. Interface do Chatterbot Prof.a Elektra

18Ambiente virtual de aprendizagem sao softwares que auxiliam a montagem de cursos ou aulas oferecidos via internet. Muito usado em metodos de ensino a distancia.

35

3.5.5 FaqBots

Tem como objetivo responder perguntas frequentes e simples de usuarios, com base no FAQ. Os Faqbots nao tem como objetivo se passar por humanos, quando ele nao possui a resposta para o usuario, geralmente a pergunta e ignorada. Abaixo segue a interface de um chatterbot desenvolvido pela ADS, chamado Assistente Virtual, (Figura 6).

Figura 6. Interface do FaqBot Assistente Digital

36

4 FERRAMENTAS UTILIZADAS

4.1 AIML

Como foi dito no capitulo anterior, AIML e uma linguagem de marcacao, originada do XML, criada em 1995 pela equipe desenvolvedora do chatterbot mais conhecido, a ALICE, coordenado pelo Dr. Richard Wallace. Eles tinham o objetivo com o desenvolvimento da linguagem, possibilitar aos chatterbots ter a capacidade de dialogar com humanos da forma mais coerente e natural possivel, a partir da construcao da base de conhecimento nos padroes AIML.

A linguagem AIML tem como finalidade construir objetos AIML. Estes objetos tem como objetivo descrever o comportamento e acoes que sao representados pelos agentes responsaveis pela conversacao com os usuarios. Por ser originado do XML, o AIML segue os mesmo padroes de conformidade. (WALLACE, 2005 apud LUCHETTA, 2005 p. 16).

Conforme as metas dentro do projeto ALICE a linguagem AIML teve como foco:

„h Ser de facil aprendizagem.

„h Possibilitar de forma simplificada a construcao do conhecimento em sistemas, atraves do paradigma estimulo-resposta.

„h Ser completamente compativel com XML.

„h Ser uma linguagem clara de entendimento, pois assim facilita-se o desenvolvimento de sistemas que interpretam a linguagem.

„h Ser construida de objetos claros, desta forma possibilita o melhor entendimento dos humanos sobre a linguagem e seu funcionamento.

„h Nao ter dependencia de outras linguagens.

„h Ter uma estrutura bem especificada e simples.

4.1.1 Objetos AIML

De acordo com Luchetta, (2005 p. 17), os objetos AIML sao compostos por uma estrutura fisica e logica. Podemos dizer que fisicamente um objeto e composto de unidades chamadas de topicos e categorias. Ja logicamente um objeto AIML e composto por tags19 da propria linguagem. A seguir iremos demonstrar as tags mais utilizadas nos padroes AIML.

19 Estruturas de linguagem de marcacao que consistem em breves instrucoes, tendo uma marca de inicio e outra de fim.

37

4.1.2 Categoria

A tag categoria e uma das unidades basicas de conhecimento na linguagem AIML. Uma categoria consiste em uma entrada e uma saida. A entrada e relacionada a uma pergunta caracterizada no AIML por <pattern> (teste simples), e a saida uma resposta que no AIML e caracterizado por <template>. Em uma categoria podem-se considerar contextos opcionais, que no AIML sao <that> ou <topic>.

O funcionamento da tag <pattern> se caracteriza em receber um conteudo de texto podendo conter numeros e caracteres especiais, separados por espaco. Ainda nessa tag pode ser inserido wildcards. Esses wildcards nada mais sao que colecao de nomes na qual se faz uma referencia a um endereco na web. Na versao AIML 1.01 que ira ser utilizada nesse trabalho e possivel inserir mais de um wildcard em uma tag <pattern>. As tags <template>, as respostas podem estar contidas nas proprias tags ou em outros processos externos, com as tags system e javascript. Com elas e possivel interagir com processos externos, por exemplo, comando shell de sistemas operacionais ou com codigos javascript, respectivamente. Ja em relacao ao contexto de uma categoria, existem dois comandos diferentes, o <that> e <topic>. A tag <that> serve para guardar a ultima resposta da aplicacao, ou seja, serve para que o robo mantenha a coerencia da conversa. Essa tag e colocada dentro da tag <category>. Ja a tag <topic> serve para armazenar certo grupo de categorias.

4.1.3 Recursividade

A tag <srai> e a responsavel por programar a recursividade no AIML. Essa tag tem algumas variacoes de uso, sao elas:

Reducao Simbolica: E quando a tag <srai> tem como funcao tornar as estruturas gramaticais mais simples, ou seja, fazer com que algumas funcoes fiquem mais genericas, consequentemente facilitando a codificacao, Como no Quadro 1:

Nesse exemplo vimos que a entrada ¡§Voce sabe quem e¡¨, sera substituida por ¡§Quem e ¡§.

Dividir e Conquistar: Essa forma serve para reduzir uma sentenca para duas ou mais sentencas, dessa forma a resposta passa a ser uma combinacao das respostas de cada uma das subsentencas.

<category>

<pattern>Voce sabe quem e * ?</pattern>// * quer dizer algum objeto ou pessoa generica

<template><srai>Quem e<star/></srai></template> // <star/> e a entrada de *

</category>

Quadro 1. Reducao Simbolica

38

Sinonimos: E um dos principais usos da tag <srai>. Nessa situacao o <srai> serve para que independentemente da entrada do usuario, a resposta sempre seja a mesma. No Quadro 2 um exemplo dessa situacao:

Nesse caso acima podemos ver que se o usuario entrar com ¡§Ola¡¨ ou ¡§Oi¡¨, a resposta vai ser ¡§Ola tudo bem¡¨.

Correcoes gramaticais e de fala: Essa pode ser considerada uma das grandes dificuldades em manter um dialogo entre humanos e maquinas, o uso de girias. As girias ou simplificacoes gramaticais transformam ¡¨esta¡¨ em ¡§ta¡¨ ou ¡§voce¡¨ em ¡§vc¡¨. Por isso pode ser usado a tag <srai> para minimizar o uso de girias como no exemplo no Quadro 3:

Deteccao de palavras-chaves: No AIML existe um template no qual e possivel identificar em uma entrada uma palavra-chave, independente do lugar que ela se encontra na frase. No Quadro 4 segue mais um exemplo:

<category>

<pattern>Ola</pattern>

<template>Ola, tudo bem?</template>

</category>

<category>

<pattern>Oi</pattern>

<template><srai>Ola</srai></template> // aqui e referenciada a categoria anterior

</category>

Quadro 2. Sinonimos

<category>

<pattern> Voce ta *<pattern>

<template> Eu acho que voce quer dizer ¡§esta¡¨ e nao ¡§ta¡¨<srai>Voce Esta<star/></srai></template>

</category>

Quadro 3. Correcoes gramaticais e de fala

39

Estruturas Condicionais: Com a tag <srai> e possivel realizar testes condicionais. Por exemplo, como mostra o Quadro 5:

Como vimos nesse exemplo, a primeira categoria e responsavel por captar o nome inserido e a partir disso ele pode explicar quem e ou nao.

Aleatoriedade: Essa funcao possibilita ao chatterbot escolher entre uma lista, uma resposta aleatoria a uma entrada do usuario. Segue um exemplo no Quadro 6:

<category>

<pattern> Pai </pattern>

<template>Voce tem familia? Conte-me mais sobre ela.</template>

</category>

<category>

<pattern> _ Pai </pattern>// palavra-chave e detectada como sufixo

<template><srai>Pai</srai></template> // A resposta e generica, como acima

</category>

<category>

<pattern> Pai _ </pattern>// palavra-chave e detectada como perfixo

<template><srai>Pai</srai></template> // A resposta e generica, como acima

</category>

Quadro 4. Deteccao de Palavras-Chave

<category>

<pattern> Quem e ele? </pattern>

<template><srai>Quem e ele <get name=¡¨ele¡¨/></srai> </template>

</category>

<category>

<pattern> Quem e ele * </pattern>

<template Ele e <get name=¡¨ele¡¨/></template>

</category>

Quadro 5. Estruturas condicionais

40

O exemplo acima mostra que no momento que um usuario entrar em contato com o chatterbot ele ira receber uma das tres opcoes acima de mensagem, aleatoriamente, pois a funcao <random> possibilita isso.

Pensar: O metodo <think> faz com que o interpretador AIML guarde informacoes sobre alguma entrada do usuario para ser usada posteriormente.

Contexto: Conforme foi dito anteriormente, o contexto e um atributo adicional que as categorias podem vir a possuir. E um atributo no qual possibilita o chatterbot se situar de acordo com as mensagens que estao sendo enviadas no momento, ou seja, a partir do conteudo ele sabe em qual categoria buscar as informacoes. O contexto pode ter duas variacoes, <topic> e <that>.

Topic: Esse atributo faz com que o conteudo seja organizado por topicos ou temas. Dessa forma, o chatterbot localiza suas respostas de acordo com o conteudo das entradas. Se ele nao obtiver nenhuma resposta adequada para uma das entradas, ele continua o dialogo buscando outra resposta generica, mas que tenha ligacao com o conteudo da conversa. Abaixo segue o Quadro 7 como exemplo:

<category>

<pattern> CONNECT <pattern>

<template>

<random>

<li>Ola em quem posso lhe ajudar?</li>

<li>Seja bem vindo... No que posso lhe ajudar?</li/>

<li>Oi, que bom que voce esta aqui, no que poso ser util?</li>

</random>

</template>

</category>

Quadro 6. Aleatoriedade

41

That: Essa funcao nada mais e do que uma palavra-chave no AIML. Ela aponta a ultima resposta que foi dada pelo chatterbot, ou seja, ela faz um apontamento a resposta feita pelo usuario. Vamos a um exemplo pratico, no Quadro 8:

Teste Condicional: Com o uso da tag <condition>. Ela faz com que o chatterbot tenha a capacidade de escolher dependendo da entrada do usuario uma resposta. Abaixo segue um exemplo dessa funcao, no Quadro 9:

<topic name = ¡§Amizade¡¨>

<category>

<pattern>ola</pattern> // entrada qualquer

<template>

<random>

<li>Voce possui muitos amigos?</li>

<li>Voce gosta de sair com seus amigos?</li>

<li>O que voce acha da amizade entre as pessoas?</li>

</random>

</template>

</category>

Aqui podem existir outras categorias...

</topic>

Quadro 7. Topic

<category>

<pattern>SIM</pattern>

<that>Voce gosta dos seus amigos?</that> // aqui e feita a pergunta. E se a resposta for sim... Em seguida vem a resposta.

<template>Voce gosta de sair com eles?</template> //essa e a reposta ao sim do usuario

</category>

Quadro 8. That

42

Nesse exemplo podemos ver que dependendo da resposta sobre a primeira pergunta, a conversa com o chatterbot muda o foco. Quando a resposta da pergunta ¡§Voce sabe meu nome?¡¨ for sim, o chatterbot ira responder ¡§Entao nao preciso me apresentar¡¨ e esperar outra entrada do usuario ou realizar outra pergunta. Mas se a resposta for nao, ele vai se apresentar e continuar a conversa. Ainda ha a opcao quando nenhuma das opcoes seja alcancada, ai entra a funcao do terceiro <li> que naquele caso e uma resposta generica, pois nao possui o value. Com ela e possivel direcionar a resposta do usuario, fazendo com que ele responda sim ou nao.

4.1.4 Substituicoes

Ate agora estavamos descrevendo funcoes para o desenvolvimento do arquivo AIML, que ira conter todo o conhecimento do chatterbot. Porem devemos destacar tambem outro arquivo muito importante para o desenvolvimento de um chatterbot, o arquivo de substituicao. O arquivo ¡§startup.xml¡¨ tem como funcao filtrar as entradas dos usuarios para que a acentuacao seja ignorada ou que uma palavra escrita de forma errada seja substituida pela certa, esse que e um dos grandes problemas nos desenvolvimentos dos chatterbots. Essa dificuldade deve-se ao fato de que precisamos prever os erros de digitacao realizados pelos usuarios, traduzir as girias que falamos ou escrevemos em chats para a linguagem escrita formal e ainda analisar se e necessario substituir palavras que contenham acentos. Como e o caso do ¡§e¡¨ e ¡§e¡¨ em uma frase. Dependendo da interpretacao, se substituirmos o ¡§e¡¨ pela letra ¡§e¡¨, a frase pode perder completamente o sentido, entao concluimos que nesse caso, nao devemos substituir, e devemos manter no arquivo AIML o acento no ¡§e¡¨.

<category>

<pattern>*</pattern>

<that>Voce sabe meu nome?</that>

<template>

<think><set name=¡¨reposta¡¨><star/></set></think>

<condition name=¡¨resposta¡¨>

<li value=¡¨sim¡¨>Entao nao preciso me apresentar</li>

<li value=¡¨nao¡¨>Meu nome e fulano.</li>

<li>Voce esta me deixando confuso. Voce sabe meu nome? (sim ou nao).</li>

</condition>

</template>

</category>

Quadro 9. Teste condicional

43

Esse processo de substituicao previne que o chatterbot deixe de reconhecer uma determinada palavra por falta ou excesso de acentos ou ainda se ela esta informada de uma forma incorreta.

O arquivo de substituicao e dividido em quatro partes:

„h Input: Esse bloco define quais palavras ou caracteres irao ser substituidos de acordo com as entradas que os usuarios realizam. Essa substituicao ocorre para que o interpretador AIML tenha mais facilidade para reconhecer os padroes, pois assim os dados sao normalizados. E nesse bloco que se substituem as girias, abreviacoes e outros erros de digitacao. A principal funcao desse bloco e que desta forma, o desenvolvimento do arquivo AIML se torna mais rapido, por nao haver a necessidade de desenvolver muitas categorias desnecessarias, pois o tratamento de erro de digitacao e feito aqui. Abaixo segue um exemplo da tag, no Quadro 10:

„h Gender: Este bloco no arquivo de substituicao e responsavel por substituir alguma sentenca quando for usada a tag <gender> no arquivo AIML. As configuracoes contidas nesse bloco substituem o genero da frase como no exemplo Quadro 11:

„h Person: Esse bloco e responsavel por realizar as substituicoes de primeira para terceira pessoa e vice-versa. A substituicao somente acontece se no arquivo AIML for utilizada a tag <person> na base AIML. Abaixo segue um exemplo dessa aplicacao, conforme o Quadro 12:

„h Person2: Faz a mesma coisa que o bloco Person so que sendo da primeira para a segunda pessoa e vice-versa, no Quadro 13 um exemplo:

<substitute find=¡¨ vc ¡¨ replace= ¡§ voce ¡¨>

<substitute find=¡¨ pq ¡¨ replace= ¡§ porque ¡¨>

<substitute find=¡¨ ele ¡¨ replace= ¡§ ela ¡¨>

<substitute find=¡¨ dele ¡¨ replace= ¡§ dela ¡¨>

<substitute find=¡¨ ele ¡¨ replace= ¡§ eu ¡¨>

<substitute find=¡¨ eu ¡¨ replace= ¡§ ela ¡¨>

Quadro 12. Substituicoes - Person

<substitute find=¡¨ comigo ¡¨ replace= ¡§ com voce ¡¨>

<substitute find=¡¨ voce e ¡¨ replace= ¡§ eu sou ¡¨>

Quadro 10. Substituicoes - Input

Quadro 11. Substituicoes - Gender

Quadro 13. Substituicoes - Person2

44

Como podemos ver, em todas as tags de substituicao existe o comando find. Ele e responsavel por localizar as palavras direcionadas, porem nao faz distincao entre letras acentuadas,

4.1.5 Arquitetura dos Chatterbots em AIML

De acordo com Luchetta (2005, p.27) a estrutura basica de um chatterbot em AIML se baseia em tres partes, Interface em linguagem natural com o usuario, interpretador AIML e base AIML.

A interface em linguagem natural com o usuario e o modulo onde sera realizado o dialogo entre as partes (chatterbot e usuario). Essa interface geralmente e desenvolvida em HTML ou Flash.

O Interpretador AIML e o modulo responsavel por interpretar aquilo que e digitado pelo usuario e retornar uma resposta ao usuario. As linguagens mais comuns de interpretadores sao C++, Java e PHP.

A Base de conhecimento e a parte na qual fica todo o conhecimento do chatterbot no arquivo AIML. Estruturado da forma como vimos alguns exemplos anteriormente.

Figura 7. Arquitetura de um Chatterbot em AIML

45

4.2 Ferramentas Utilizadas

Como foi percebido na Figura 7, um chatterbot tem por padrao um modulo especifico para interpretacao de cada entrada do usuario, interpretando essa entrada ele deve retornar a resposta adequada para aquela situacao. Esses interpretadores podem ser desenvolvidos em varias linguagens de programacao e rodarem em diversos ambientes, como em um servidor Web ou em um desktop20 sem acesso a Internet.

Porem ha tambem interpretadores desenvolvidos pela comunidade livre, disponivel na comunidade A.L.I.C.E, principal difusora da linguagem AIML no mundo. Pelo fato do tempo ser reduzido para desenvolver um modulo interpretador de arquivos AIML, foi escolhido um interpretador na comunidade livre para suprir essa carencia. Abaixo segue uma relacao dos interpretadores mais conhecidos na comunidade livre:

„h Program E: Esse foi o interpretador escolhido para o desenvolvimento do chatterbot Bibbs. Ele e desenvolvido na linguagem PHP21 e e conhecido como PHiliP, uma analogia ao nome da linguagem em que ele funciona.

„h Program D: Esse interpretador foi implementado em Java, tendo como principal caracteristica possuir o que tem de mais novo em termos tecnologicos.

„h Program M: Desenvolvido em SETL (Set Theory and Mathematical Logic). Esse interpretador funciona somente em ambiente Linux.

„h Program P: Desenvolvido em Delphi, utilizando a linguagem Pascal, mais conhecido como PascALICE. Funciona somente em ambiente desktop. Esse interpretador foi utilizado para que fosse possivel testar de forma mais agil a base de dados desenvolvida na linguagem AIML.

„h Program V: Esse interpretador foi desenvolvido na linguagem Perl.

„h Program Y: Desenvolvido em Python e mais conhecido como PyAIML, pode ser considerado o modulo de interpretacao de mais simples codificacao, pois depende apenas das bibliotecas proprias do Pyhton.

„h Program Z: Esse interpretador e desenvolvido em Common Lisp. E bastante conhecido pelo fato de que o site PandoraBots oferece hospedagem gratis possuindo ferramentas de suporte para desenvolvimento da base AIML do chatterbot, ou seja, no proprio site se desenvolve o chatterbot e nele fica disponivel a todos.

20 Modalidade de software que usa recursos locais para uso, isto e, nao usa internet ou um browser de internet.

21 Hypertext Preprocessor, e uma linguagem de programacao de computadores interpretada, livre e muito utilizada para gerar conteudo dinamico na Internet.

46

Para a escolha do interpretador, foram realizadas pesquisas sobre o funcionamento e documentacao de cada um dos tipos relacionados anteriormente e se chegou a conclusao de que o Program E se adapta melhor ao projeto. Essa adaptacao se deve ao fato dele possuir documentacao em larga escala, por ser desenvolvido em PHP, uma linguagem de facil aprendizagem, por existirem servidores com suporte ao PHP e Mysql22 e por existir uma comunidade dando suporte e atualizacoes constantes.

A plataforma desenvolvida para testes foi a Windows, instalando o Vertrigo Server 2.2. Esta ferramenta instala no computador o servidor do APACHE23, PHP e MySql todos de forma integrada e muito simplificada. Apos isso foi instalado o modulo interpretador no servidor APACHE e realizado alguns testes, para aprendizado e para ver o funcionamento do Program E. Abaixo segue os principais diretorios no qual e estruturado o Program E.

Figura 8. Arquivos e diretorios do Program E

„h aiml: Dentro desse diretorio ficam os arquivos com extensao AIML, ou seja, as bases de conhecimento e o arquivo de startup responsavel pela substituicao conforme capitulo anterior e por conter as informacoes ¡§pessoais¡¨ do chatterbot como nome, genero, criador e principais caracteristicas.

„h docs: Na pasta docs se encontram os fontes e um pequeno manual de instrucoes, contendo os principais requisitos de sistema.

„h sql: Neste diretorio fica o script24 do banco de dados para instalacao do modulo interpretador Program E e tambem alguns exemplos de bases de dados AIML.

„h src: Aqui ficam os arquivos que fazem funcionar o interpretador e as funcionalidades de carregamento e conversacao com o chatterbot.

22 E um sistema gerenciador de banco de dados. E atualmente um dos bancos de dados mais populares, com mais de 10 milhoes de instalacoes pelo mundo.

23 Um servidor web gratuito, sendo um dos mais utilizados pelo mundo.

24 Pedaco de codigo-fonte ou arquivo utilizado em linguagens de programacao interpretadas

47

Em termos de funcionamento esse interpretador primeiramente realiza a leitura do(s) arquivo(s) AIML desenvolvidos e os insere em uma base de dados Mysql. Apos ele realizar essa leitura, o interpretador ira reagir a cada entrada do usuario, buscando as informacoes no banco de dados Mysql, seguindo todos os padroes e metricas utilizadas para o desenvolvimento do arquivo AIML.

48

5 Chatterbot BIBBS

5.1 Descricao Geral

O sistema proposto nesse trabalho se baseia em desenvolver uma ferramenta na qual servira de apoio e acompanhamento aos usuarios do AVA, moodle pela IMED. Esta ferramenta e um chatterbot denominado Bibbs, que pode vir a ser integrado ou apenas inserido no ambiente, atuando de forma independente ao moodle, ou seja, de forma semelhante ao chatterbot Anna, desenvolvido pela empresa IKEA, Figura 3.

O desenvolvimento do chatterbot Bibbs vem de encontro a ideia da crescente utilizacao de Ambientes Virtuais de Aprendizagem dia apos dia, ainda mais com o advento do EAD e da utilizacao de Objetos de Aprendizagem nas novas metodologias de ensino. Aumentando a utilizacao de ferramentas dessa natureza, a demanda de suporte a elas consequentemente aumenta tambem, por esses motivos foi proposto o desenvolvimento do chatterbot, pensando em agilizar e automatizar todo o suporte decorrente ao uso do moodle pela IMED.

Como foi visto anteriormente, para o desenvolvimento deste chatterbot, foram estudados conceitos sobre IA, referenciados por Russel & Norvig (2003), mais especificamente Agentes Inteligentes. A analise realizada sobre agentes inteligentes nos leva a conclusao de que:

[...] um agente inteligente nada mais e que um programa situado em um determinado ambiente capaz de perceber mudancas, como entradas de dados, interacoes externas que ocorrem nesse ambiente e agir de acordo com essas mudancas retornando respostas ou realizando tarefas para os usuarios.

A partir dessa citacao de Russel & Norvig, apud Grzybowski (p. 57), podemos concluir que o chatterbot proposto deve ter como caracteristica principal a racionalidade, conceito relatado como ¡§aquele agente que faz tudo certo, fazendo com que o agente maximize seu sucesso¡¨. Podemos ver que de acordo com que foi dito, o termo racionalidade e variavel, dependendo do proposito de cada agente inteligente a racionalidade e diferente. Para que esses conceitos de racionalidade e de sucesso sejam mais bem entendidos, foi criada uma descricao do ambiente, especificando os possiveis sensores e atuadores do agente, gerando uma descricao completa da especificacao do agente que vai ser desenvolvido nesse trabalho. Abaixo segue a descricao do ambiente separado por topicos:

49

„h Medida de desempenho: Resolver as duvidas mais frequentes que os usuarios do moodle da IMED possam vir a ter.

„h Ambiente: Esse chatterbot ficara disponivel em um ambiente separado ao moodle, tendo acesso via web.

„h Sensores: O sensor que esse agente possuira sera a interpretacao das sentencas dos usuarios digitadas via teclado, em um campo de texto.

„h Atuadores: A atuacao do agente ao detectar mudancas no ambiente sera pela forma textual, tendo como principal objetivo tentar manter dialogo com o usuario.

Com essa descricao apresentada podemos perceber que o agente proposto nesse trabalho conseguira alcancar seu objetivo, ou seja, sera racional. Agora abordando outras caracteristicas, relatadas por Laureano (2001), como Aprendizado, Memoria, Dominio, Robustez e Autoconhecimento, vamos relatar tais caracteristicas, relacionando-as com o agente proposto:

„h Aprendizagem: O metodo de aprendizagem do chatterbot sera interno, ou seja, ele nao aprende durante a conversa. Para aprendizagem um modulo interno sera criado.

„h Memoria: O chatterbot nao tera a capacidade de guardar informacoes sobre conversas anteriores, ou seja, ele consegue apenas memorizar algo sobre o dialogo que esta em andamento.

„h Robustez: A robustez do agente esta totalmente relacionada na habilidade dele em admitir a incapacidade de responder algumas questoes. Quando isso acontece, o chatterbot pode agir de varias formas, entre elas, dizer que nao entendeu o que foi inserido, pedindo novamente para o usuario entrar com um pergunta.

„h Autoconhecimento: Essa e uma caracteristica na qual faz com que o chatterbot se passe por humano. No caso desse trabalho, o agente a ser desenvolvido, nao precisa simular um humano e nem precisa se passar por um. Esse chatterbot vai precisar apenas responder as duvidas dos usuarios e conter informacoes sobre ele mesmo, como nome, quem o desenvolveu e coisas do genero. De acordo com essa caracteristica podemos perceber que o chatterbot proposto nesse trabalho e do tipo faqbot.

50

5.2 Arquitetura do Chatterbot Bibbs

O chattebot Bibbs seguira a arquitetura proposta pela linguagem AIML, conforme a Figura 7, porem ele ira apresentar modulos adicionais, nos quais, cada um tera funcoes especificas de acordo com o nivel de usuario e permissao de acesso cadastrado em um ambiente a parte daqueles descritos naquele esquema. O desenvolvimento desses modulos adicionais proporciona ao chatterbot construido uma estrutura generica, isto e, caso seja necessaria a construcao de um novo chatterbot a sua estrutura nao e alterada, em termos de programacao. O que mudaria em um cenario desse seria a interface de acesso para conversacao e a base de conhecimento.

A seguir iremos descrever as estrategias utilizadas para o desenvolvimento do chatterbot Bibbs e descrever cada um dos modulos desenvolvidos.

5.2.1 Modulo de consultas

O modulo de consultas foi desenvolvido a partir de uma das funcoes ja prontas do modulo interpretador escolhido. Dentro da pasta src, existe o arquivo ¡§talk.php¡¨. Esse arquivo contem as funcoes de insercao das perguntas e retorno das respostas implementadas ja inseridas na base de dados MySql, como uma interface propria para testes, pois traz dados estatisticos sobre cada uma das entradas realizadas. Logo apos o estudo sobre o funcionamento das funcoes utilizadas nesse arquivo, foi dado inicio ao desenvolvimento da interface em si. Foi levada em consideracao no momento do desenvolvimento, a facilidade no uso e um visual simples, no qual nao se tornasse cansativo para os usuarios. Por isso foi escolhida uma animacao em no formato gif25, para representar o Bibbs. Na Figura 9 e possivel observar como ficou a interface do chatterbot Bibbs:

25 Graphics Interchange Format e um formato de imagem de mapa de bits muito usado na Internet, para imagens fixas ou animacoes.

51

Figura 9. Interface de conversacao com o Bibbs

A Figura 9 mostra que a interface foi dividida em 3 blocos, sendo que o primeiro possui a imagem referente ao personagem, o segundo traz a resposta do chatterbot ao usuario e o terceiro bloco contem o campo para inserir a pergunta ao Bibbs.

5.2.2 Modulo de manutencao de conhecimento

Para a manutencao do Bibbs, foi desenvolvida uma area administrativa na qual se encontram algumas funcoes para manutencao das bases de dados AIML, aplicacao dessas bases, ou seja, insercao no banco de dados MySql e controle de usuarios. O modulo de insercao de conhecimento possui um cadastro de arquivos onde e realizada a transmissao para o servidor em que esta hospedado o Bibbs. As informacoes necessarias sao um arquivo no formato AIML e um nome para ele no qual se deve ser escolhido. Feito isso o arquivo sera transmitido assim que o botao Upload for clicado. Ele submetera o arquivo para a pasta referente aos arquivos AIML, conforme explicacao na secao acima e ira inserir na base de dados MySql o registro referente a tal arquivo em uma tabela especifica para armazenamento de arquivo AIML. Na Figura 10 segue a tela de manutencao de arquivos na area administrativa do Bibbs:

52

Figura 10. Modulo de manutencao de conhecimento

Como podemos perceber a Figura 10, mostra como fica a disposicao das informacoes referentes as bases de dados AIML. Nela podemos ver que existe um arquivo chamado ¡§Bibbs¡¨, possuindo um codigo ¡§11¡¨.

5.2.3 Modulo de Controle de Usuarios.

O modulo de controle de usuario tera como principal funcao, dar permissoes de acesso a um ou mais usuarios, de controlar o modulo de insercao de conhecimento. Para o desenvolvimento desse modulo, foi criada uma tabela adicional contendo somente informacoes relevantes ao usuario, possuindo um cadastro. Abaixo segue a Figura 11 referente ao modulo de controle de usuarios:

Figura 11. Modulo de manutencao de usuarios

53

Conforme a ilustracao acima podemos ver que existe um usuario cadastrado. Podemos ver que e feita uma listagem em um primeiro momento, e que dependendo da funcao escolhida, outra tela e mostrada ao usuario para insercao/edicao de usuarios.

Figura 12. Modulo de manutencao de usuarios em edicao

A Figura 12 traz um usuario em estado de edicao. Quando e inserido um usuario, essa mesma tela e chamada. Quando a funcao de exclusao e executada, somente um aviso e feito para alertar que a exclusao foi realizada.

5.3 Metodo para a formulacao da base

Para o desenvolvimento da base de dados em um primeiro momento foi estudado as principais funcoes da linguagem AIML. Apos esse estudo e levantamento das principais funcoes, foi desenvolvido um padrao para o desenvolvimento da base de dados. Pensando em tornar mais simples o desenvolvimento e tambem sabendo que o Bibbs tera funcoes de FAQ estruturamos a base de dados no seguinte esquema:

54

O Quadro 14 mostra tres categorias, a A, B e C. Na categoria A podemos ver que na tag relevante a pergunta (pattern), e inserida a entrada programada pelo usuario, ou seja, a pergunta a ser feita para o chatterbot. Porem na tag relevante as respostas (template) do chatterbot, criamos um ¡§apelido¡¨ para aquela entrada do usuario, denominada no exemplo como ¡§funcao1¡¨. A mesma ideia se aplica na categoria B. Nela podemos ver que a entrada do usuario e diferente do que a categoria A, mas o que e retornado, ou seja, o direcionamento e feito da mesma maneira e com o mesmo apelido contido na categoria A. Ja a categoria C e onde temos a ¡§entrada¡¨ com o nome do apelido que inserimos tanto na categoria A, quanto na categoria B. Isso possibilita que tudo aquilo que e inserido pelo usuario e que passa pela categoria A e na B e tudo direcionado para a categoria C. Na categoria C podemos ver que usamos outra tag, a <random>. Ela faz um sorteio entre as respostas colocadas dentro dessa tag onde cada resposta fica dentro de uma tag <li>.

<category> // categoria A

<pattern> Pergunta 1 </pattern>

<template><srai>Funcao1</srai></template>

</category>

<category>// categoria B

<pattern> Pergunta 2 </pattern>

<template><srai>Funcao1</srai><template>

</category>

<category>// categoria C

<pattern> Pergunta 3 </pattern>

<template><srai>Funcao1</srai></template>

</category>

<category>

<pattern>Funcao1</pattern>

<template>

<random>

<li>Resposta1</li>

<li>Resposta2</li>

</random>

</template>

</category>

Quadro 14. Metodo de formulacao da base de conhecimento

55

Tudo isso acontece, por uma das funcoes da tag <srai>. E com ela que e possivel transformar a resposta em um ¡§apelido¡¨ e a partir desse apelido dado, conseguimos concentrar as respostas sobre um determinado assunto dentro de uma unica categoria.

Foi planejado tudo isso para o desenvolvimento da base de dados, pois um dos grandes desafios entre os chatterbots e que eles consigam responder com a mesma resposta perguntas com o mesmo sentido, porem com grafias diferentes. Perguntar ¡§como voce se chama¡¨ e ¡§qual e seu nome¡¨, se baseando na resposta e no sentido, podemos dizer que sao iguais, porem em termos de grafia, usamos palavras completamente diferentes. Por isso foi proposto o desenvolvimento da base dessa maneira. Assim consegue-se concentrar varias categorias relacionadas a um determinado assunto, escritas de maneiras diferentes, retornando sempre as mesmas respostas. Assim e possivel contornar de certa forma um dos problemas no desenvolvimento de chatterbots.

5.4 Testes e Resultados

A realizacao dos testes do chatterbot Bibbs aconteceu apos a finalizacao das principais perguntas relacionadas sobre o moodle na base de conhecimento e das funcoes administrativas conforme foi demonstrado na secao anterior. Os testes aconteceram em duas etapas. A primeira delas ocorreu quando foi solicitado a um dos funcionarios do nucleo de EAD da IMED conversar com o Bibbs. Foi pedido a ele, que perguntasse aquilo que ele presencia no seu trabalho como principal encarregado de suporte ao moodle as principais duvidas relacionadas ao ambiente feitas pelos usuarios. Para que a realizacao desse teste fosse registrada, foi criada uma tabela, semelhante a que segue logo abaixo, sendo que a cada pergunta realizada, ela era preenchida com as seguintes informacoes:

„h Pergunta: O que foi perguntado pelo funcionario do nucleo de EAD.

„h Aceitacao: Criada uma escala de niveis de otimo, bom, regular, ruim e nao identificou, de acordo com a reacao do Bibbs.

„h Observacao: Alguma observacao relevante a cada pergunta.

Abaixo, no Quadro 15 segue a tabela com as informacoes coletadas para analise:

Pergunta Aceitacao Observacao

Oi

Ruim

Pediu o nome, robo nao deve ser interativo.

56

Como acessar o sistema?

Nao identificou

Palavra sistema nao foi usada

Como acessar o moodle?

Nao identificou

Conjugacao do verbo acessar

Como entrar?

Nao identificou

Muito generica a pergunta

Como ver as atividades?

Nao identificou

Nao foi prevista essa pergunta

Como mandar tarefas?

Nao identificou

Nao foi prevista a palavra tarefa

Como mandar trabalhos?

Nao identificou

Nao foi prevista a palavra mandar

Como enviar trabalhos?

Otimo

Como responder no forum?

Otimo

Como postar mensagem no forum?

Otimo

Como responder no forum?

Nao identificou

Palavra responder nao foi usado.

Como entrar no Chat?

Nao identificou

Nao foi prevista essa pergunta

Como modificar perfil?

Otimo

Como alterar perfil?

Otimo

Onde vejo o e-mail do professor?

Nao identificou

Nao foi prevista essa pergunta

Como mudar a senha?

Nao identificou

Palavra mudar nao foi usado

Como alterar a minha senha?

Otimo

Como reenvio meu trabalho?

Nao identificou

Problema no verbo reenviar, e na palavra trabalho (plural).

Como reenvio meus trabalhos?

Otimo

Quadro 15. Resultados do primeiro teste

Dentro desse universo de 19 perguntas ao Bibbs, podemos ver que apenas 7 respostas foram consideradas otimas. Ja o numero de respostas consideradas como nao identificadas foram 11 e apenas uma foi tratada como ruim. Apos a realizacao do teste e a captacao dos dados do dialogo entre o funcionario e o Bibbs, foi constatado que existem dois grandes problemas na base de conhecimento que esta em desenvolvimento para o chaterbot. O primeiro problema e remetido ao numero de perguntas relacionadas consideradas como nao identificadas. Isso se deve ao fato de que em um primeiro momento foi realizada uma analise daquilo que se viu como mais importante para os registros de suporte, como por exemplo, questoes referentes a postagem de trabalhos, videos, alteracoes de perfil, cumprimentos e despedidas. Porem apos o teste, a gama de perguntas relacionadas a duvidas sobre o moodle aumentou. Somado ao aumento de perguntas, pode ser acrescentado o segundo problema constatado, a conjugacao verbal. Dentro da lingua portuguesa, existem tempos e conjugacoes verbais muito variadas, por exemplo, ¡§como eu posto um trabalho¡¨ e ¡§como eu faco a

57

postagem de um trabalho¡¨. Em termos de interpretacao, ambas as frases tem o mesmo sentido e possivelmente uma mesma resposta, porem em termos de grafia, a palavra-chave postar, recebe dois tipos de conjugacao, posto e postagem. Para solucionar esse problema, chegamos a conclusao a passar utilizar o arquivo ¡§startup.xml¡¨, para substituir as varias conjugacoes em uma unica palavra, como mostra o exemplo abaixo no Quadro 16:

O Quadro 16 mostra que as tres formas de conjugacao do verbo postar, sao substituidas justamente pelo verbo postar. Essa tecnica facilita no momento do desenvolvimento da base de conhecimento, pois torna o desenvolvimento mais simples, pois as alternativas de perguntas diminuem drasticamente. Usando essa estrategia, tambem nao e necessario prever todos os tipos de conjugacoes e utilizacoes de substantivos no plural dentro da base de conhecimento, isso fica isolado somente no arquivo de substituicao.

Logo apos a realizacao do primeiro teste, foi dado inicio ao processo de adaptacao da base de conhecimento, utilizando as informacoes que foram obtidas durante os testes para torna-la mais eficaz e capaz de satisfazer as principais duvidas relacionadas ao moodle. Para isso utilizou-se o processo de substituicao citado acima e foram criadas novas categorias, alem de separar cada assunto em arquivos AIML diferentes. Depois do desenvolvimento e adaptacao, foi iniciada a segunda fase dos testes. Na segunda fase de testes, novamente foi utilizada a tecnica da captacao dos dados em uma tabela.

Abaixo seguem os resultados captados conforme o dialogo que foi realizado com o Bibbs, no Quadro 17: Pergunta Aceitacao Observacao

Ola

Otimo

Qual e seu nome?

Otimo

O que vc faz?

Bom

Conjugacao do verbo faz, trouxe resposta de outra categoria, mas a resposta foi de acordo.

Como eu faco para entrar no moodle?

Otimo

Como insiro trabalho?

Otimo

<substitute find="Posto" replace="Postar"/>

<substitute find="Postagem" replace="Postar"/>

<substitute find="Postamos" replace="Postar"/>

Quadro 16. Metodo de substituicao verbal

58

Como modifico meu perfil?

Bom

A resposta esta relacionada ao verbo acessar.

Como eu disponibilizo materiais para meus alunos?

Otimo

Como eu entro no chat?

Otimo

Como eu posto um video do you tube no moodle?

Otimo

Como eu respondo no forum?

Otimo

.

Como entrar no Chat?

Otimo

Como modificar perfil

Nao identificou

Faltou uma ligacao entre modificar e perfil.

Como modificar meu perfil?

Otimo

Como alterar perfil?

Nao identificou

Faltou uma ligacao entre alterar e perfil.

Como acesso o sistema?

Otimo

Como reenvio meu trabalho?

Otimo

Como reenvio meus trabalhos?

Otimo

Eu perdi minha senha e agora?

Otimo

O que e ead?

Otimo

O que significa ava?

Otimo

Quais cursos que ead da imed tem?

Otimo

Tchau cara

Otimo

Quadro 17. Resultados do segundo teste

Como foi observado no Quadro 17, pode-se perceber que o segundo teste foi muito mais efetivo que o primeiro. Dentro de uma lista de 22 perguntas realizadas ao Bibbs, 18 delas foram caracterizadas como Otimos, dois como Bons e tambem dois como Nao identificadas. Isso comprova que o arquivo de substituicao, sendo utilizado como meio de transformacao dos verbos e substituicao de girias teve bom resultado. Mostra tambem que a base de conhecimento desenvolvida, utilizando os verbos conjugados de uma maneira unica para identificacao dos padroes, esta conseguindo identificar as principais duvidas relacionadas ao moodle e mostrar as respostas de acordo com o solicitado pelos usuarios. Abaixo segue o log da conversa realizada no segundo teste com o Bibbs:

59

Pergunta 1: Ola

Bibbs: Ola, vou ter o maior prazer em conversar com voce!

Pergunta 2: qual e seu nome?

Bibbs: Meu nome e Bibbs, sou da equipe da Imed Virtual e dou suporte ao moodle.

Pergunta 3: O que vc faz?

Bibbs: Minha funcao e responder as duvidas das pessoas em relacao ao moodle.

Pergunta 4: como eu faco para entrar no moodle?

Bibbs: Voce nunca tinha acessado antes? hehe... se nao acessou, voce deve acessar colocando seu numero de matricula e a senha e <b>imed2010</b>, depois troque a senha e tenha acesso.

Pergunta 5: como eu insiro trabalho?

Bibbs: Humm... mas isso e barbada! <a href="../arquivos/enviar_arquivo_moodle.pdf" target="_blank"> Clique aqui </a> e nesse arquivo tera todas as informacoes necessarias para voce!

Pergunta 6: Como eu modifico meu perfil?

Bibbs: Para acessar seu perfil, depois de logado no moodle, va no lado esquerdo e procure o link <b>Perfil</b>, clique ali e veja suas informacoes!

Pergunta 7: como eu disponibilizo materiais aos alunos?

Bibbs: Para enviar um material para seus alunos, veja esse tutorial <a href="../arquivos/inserindo_arquivos_moodle.pdf" target="_blank">Clicando aqui</a>

Pergunta 8: como eu entro no chat?

Bibbs: Quando voce ja estiver dentro do seu curso, ache uma imagem igual a um balao de dialogo, clique no link referente ao chat e depois clicar em Clique aqui para entrar no chat. Pronto, voce ja esta no chat!

Pergunta 9: como eu posto um video do youtube?

Bibbs: Isso e muito facil, para postar um video, basta seguir esse tutorial que esta disponivel <a href="../arquivos/inserindo_videos.pdf" target="_blank">aqui</a>

Pergunta 10: como eu respondo no forum?

Bibbs: Se voce tem duvidas referentes ao forum, baixe esse tutorial clicando <a href="../arquivos/usando_forum.pdf" target="_blank"> aqui </a>

Pergunta 11: Como entrar no chat?

Bibbs: Ja dentro do curso, localize uma figura igual a um balao de dialogo clique no link referente ao chat e depois clicar em Clique aqui para entrar no chat. Pronto, voce ja esta no chat!

Pergunta 12: como modificar perfil?

Bibbs: Voce poderia me ajudar sendo mais claro na sua pergunta? e que eu estou aprendendo ainda...

Pergunta 13: como modificar meu perfil?

60

Bibbs: Acessar seu perfil e muito facil, basta ir depois de entrar no moodle bem do lado esquerdo e procurar o link <b>Perfil</b>, clique nele que voce vera seus dados.

Pergunta 14: como alterar perfil?

Bibbs: Desse jeito nao vou responder nada, nao entendo o que voce escreveu para eu ler.

Pergunta 15: Como acesso o sistema?

Bibbs: Voce nunca tinha acessado antes? hehe... se nao acessou, voce deve acessar colocando seu numero de matricula e a senha e <b>imed2010</b>, depois troque a senha e tenha acesso.

Pergunta 16: como eu reenvio meu trabalho?

Bibbs: Para reenviar ou excluir o arquivo ja enviado e so enviar novamente o novo arquivo. O moodle considera somente o ultimo arquivo enviado por atividade.

Pergunta 17: como reenvio meus trabalhos?

Bibbs: Para reenviar ou excluir o arquivo ja enviado e so enviar novamente o novo arquivo. O moodle considera somente o ultimo arquivo enviado por atividade.

Pergunta 18: eu perdi minha senha e agora?

Bibbs: Se voce perdeu ou esqueceu a senha, voce pode enviar um e-mail para fernandoead@imed.edu.br ou ir la no nucleo de ead da IMED.

Pergunta 19: o que e ead?

Bibbs: Educacao a distancia e o processo de ensino-aprendizagem, mediado por tecnologias, onde professores e alunos estao separados espacial e/ou temporalmente.

Pergunta 20: o que significa ava?

Bibbs: Ava ou ambientes virtuais de aprendizagem sao softwares que auxiliam o processo de educacao nao presencial, como o moodle que a IMED usa.

Pergunta 21: quais cursos que o ead da imed tem?

Bibbs: No site da <a href="http:\\www.imedvirtual.imed.edu.br" target="_blank">ImedVirtual</a> tem todos os cursos disponiveis

Pergunta 22: tchau cara

Bibbs: Tchau, adorei conversar com voce.

Para a realizacao dos testes foi utilizado o Vertrigo, que como ja vimos consegue simular um ambiente de internet, ja que o Bibbs nao foi hospedado na web. Isso se deve pelo fato de que necessitamos de uma hospedagem que de suporte aos scripts na linguagem PHP e que tenha suporte ao banco de dado MySql. Para o ano de 2011, a IMED esta providenciando um servidor exclusivo para as ferramentas utilizadas pelo nucleo de EAD da IMED. Quando este estiver em funcionamento, migraremos do servidor local, para deixarmos on-line a todos que queiram acessar, colocando acesso direto pelo moodle, atraves de links, que irao fazer um direcionamento para a tela de conversacao do Bibbs.

61

5.5 Implementacoes Futuras

Dentro do panorama de projetos para o futuro podemos inserir algumas funcoes muito importantes para o desenvolvimento desse trabalho. O que apresentado ate aqui pode ser caracterizado como um prototipo. Se fosse analisar todo o contexto que gerou o desenvolvimento do Bibbs, e possivel perceber que ha muita coisa que pode ser implementada e incorporada nele. Uma delas e o desenvolvimento de relatorios a partir das conversas realizadas. Foi realizada uma analise no banco de dados e constatado que tudo fica armazenado em uma tabela na base Mysql do Bibbs, ou seja, esse relatorio seria gerado a partir desses dados contidos nessa tabela e serviria para analise sobre tudo aquilo que foi implementado no Bibbs. Nesses relatorios seria possivel observar o comportamento do Bibbs em relacao ao publico, se ele esta ou nao atendendo as necessidades que foram propostas e se caso nao estiver, trazer dados para informar os locais onde se deve modificar para deixa-lo mais eficaz. Outra melhoria proposta para o futuro seria a implementacao de interatividade na base de conhecimento do Bibbs. Essa interatividade seria inserida na base de dados AIML, a partir de funcoes do tipo <that>, <condition> e entre outras. A interatividade proporcionaria ao Bibbs condicoes para que ele pudesse controlar e orientar de forma mais amigavel o desenrolar dos dialogos. Como foi dito anteriormente, hoje ele somente possui caracteristicas de FAQ, nao possuindo pro-atividade, sendo apenas reativo em relacao aquilo que o usuario lhe pergunta.

Observando ainda algumas funcoes nas quais podem ser desenvolvidas para o chatterbot Bibbs, pode-se definir como prioridade, o desenvolvimento de um modulo que seria responsavel por dar manutencao ao arquivo de substituicao, o ¡§startup.xml¡¨. Essa necessidade e vista com bons olhos, pois a cada tipo de manutencao, o arquivo deve ser acessado pelo ftp, caso esteja hospedado na internet. Um modulo dessa natureza facilitaria com que o processo de manutencao nesse arquivo fosse simplificado.

62

6 CONCLUSOES FINAIS

Tendo em vista a incessante evolucao dos meios de comunicacoes, tudo gracas a internet, somado a isso o desenvolvimento de novas ferramentas ficando disponivel a nos pela web todos os dias, a Inteligencia Artificial tem como novos objetivos, fazer com que os computadores consigam realizar tarefas de forma racional. Tudo isso para dar sequencia nessa evolucao e continuar nos ajudando nas nossas tarefas diarias. Um exemplo de aplicacoes que usam da IA, e o caso do chatterbot que foi demonstrado nesse trabalho.

O trabalho apresentado mostra o desenvolvimento de um sistema denominado Bibbs, um robo de conversacao com caracteristicas remetidas ao um FAQ, que servira para auxilio e suporte dos usuarios da plataforma moodle, utilizada pela Faculdade IMED, em cursos a distancia e aulas nao presenciais.

O desenvolvimento do Bibbs teve inicio no estudo relacionado as principais tecnicas de agentes inteligentes e interatividade, como e visto no segundo capitulo. Dentro desse capitulo, a base para a projecao do Bibbs foi feita a partir de um embasamento teorico, tudo isso para planejar como ele funcionaria e no terceiro foi observado todas as ferramentas utilizadas para o desenvolvimento do projeto. Partindo para o quarto capitulo e possivel perceber que o estudo foi aprofundado nos chatterbots. Nele vimos os principais tipos e funcionalidades, alem de projetar a espinha dorsal dele, conforme mostra a Figura 9, constando uma base de conhecimento, um modulo interpretador e uma interface de comunicacao.

A partir disso, foi dado inicio ao desenvolvimento do chatterbot, comecando pela descricao geral, mostrando suas medidas de desempenho e como ele se comportaria. Seguindo nessa linha, foi descrevido tambem algumas das funcoes implementadas para que fosse possivel adicionar ou remover conhecimento do Bibbs, de uma forma simples. Tambem foi analisado o arquivo de substituicao e configurada uma estrategia para fosse possivel suprir as principais carencias que foram encontradas durante o desenvolvimento.

Apos toda a demonstracao de como o Bibbs funcionaria, foram relatados os testes que houve e toda a evolucao que foi alcancada durante as fases de teste. Ao final do trabalho, e mostrado o desenvolvimento do prototipo em funcionamento, contando com uma base que contem em torno de 1400 categorias, que consegue responder de 30 a 40 perguntas, relacionadas ao moodle, EAD e algumas de conhecimento generico, com comprimentos, despedidas, alguns xingamentos. Ficando apenas algumas constatacoes que foram levantadas

63

nas implementacoes futuras, pode-se perceber que ainda ha um espaco que pode ser aproveitado pela faculdade, criando grupos de estudo ou estimulando aos novos alunos dar continuidade ao trabalho que foi criado.

64

BIBLIOGRAFIA

BITTENCOURT, Guilherme. Breve historia da Inteligencia Artificial. Instituto Tecnologico de Aeronautica. Santa Catarina, 2006.

DIEDRICH, Marlei Maria. Be-a-ba da metodologia cientifica de trabalhos academicos e cientificos: Uma orientacao prarica a alunos de graduacao e de pos-graduacao. 3a edicao. Passo Fundo: Editora IMED, 2007.

FERREIRA, Leandro Padilha; UCHOA, Joaquim Quintero. Desenvolvimento de um chatbot para auxiliar o ensino de Espanhol como Lingua Estrangeira. Rio Grande - Lavras.

GAVIDIA Jorge Juan Zavaleta; ANDRADE Leila Cristina Vasconcelos de. Sistemas Tutores Inteligentes. Rio de Janeiro, 2003.

GRZYBOWSKI, Bruno. Desenvolvimento de um FAQBOT para Portal da Prefeitura Municipal de Erechim. Erechim, 2007.

KOCK, Marcos Antonio Girardi. Chatterbot para esclarecimento de duvidas dos clientes de uma loja de departamentos. Itajai, 2009.

LAUREANO, Eduardo Antonio Galvao Cavalcanti. Um Chatterbot Consultor para ambientes Virtuais de Estudo na Internet. Recife, 1999.

LAVEN, Simon. The Simon Laven Page. Disponivel em: <www.simonlaven.com>. Acesso em: 12 set. 2010.

LEITAO, Daniel Almeida. Um Chatterbot para um ambiente de ensino de gerencia de projetos. Recife: UFPE, 2004.

LUCHETTA, Rafael. Desenvolvimento de um FaqBot de Autoria Utilizando AIML. Erechim, 2005.

NETO, Angelo F. et al. Chatterbot em AIML para o Curso de Ciencia da Computacao. Itajai.

PRIMO, Alex; COELHO, Luciano Roth. Comunicacao e Inteligencia Artificial: interagindo com a robo de conversacao Cybelle. Porto Alegre.

REZENDE, Solange Oliveira. Sistemas Inteligentes: Fundamentos e Aplicacoes. Barueri: Manole, 2005.

RUSELL, Stuart; NORVIG, Peter. Inteligencia Artificial. 2 Edicao. ed. Rio de Janeiro: Campus, 2004.

65

SGANDERLA, Rachele Bianchi; FERRARI, Debora Nice; GEYER, Claudio F. R.. BonoBOT: Um Chatterbot para Interacao com Usuarios em um Sistema Tutor Inteligente. Porto Alegre, 2003.

SILVA, Alex Alves da. et al. ChatterBot baseado em Software Livre para auxiliar na Educacao a Distancia. Rio de Janeiro.

TURING, M. Alan. Computing Machinery and Intelligence. 1950.

WENGER, Etienne. Artificial Intelligence an Tutoring Systems; Computional Cognitive Approaches to the Communications of Knowledge. Los Altos: Morgam Kaufmann Publishers.