Chatterbot em AIML para o Curso de Ciência da Computação (PDF

Transcrição

Chatterbot em AIML para o Curso de Ciência da Computação (PDF
Chatterbot em AIML para o Curso de Ciência da
Computação
Ângelo Franco Neto, Anita Maria da Rocha Fernandes, André Luis Alice Raabe,
Luis Carlos Martins, Elisangela Maschio de Miranda
Curso de Ciência da Computação – Centro de Ciências Tecnológicas da Terra e do Mar
Universidade do Vale do Itajaí (UNIVALI)
Itajaí – SC – Brazil
{anita,luca,elis,araabe}@inf.univali.br, [email protected]
Abstract. This paper presents the development of a chatterbot responsible by
presenting information about the Computer Science course of
CCTMar/UNIVALI to the public. The system has its interface in Flash,and in
its knowledge base it was used AIML pattern. To develop the chatterbot it was
necessary: to translate the standard knowledge base from English to
Portuguese, organizing an initial generic; to develop a form to the course
professors and students, in which they gave suggestions about questions and
answers that the chatterbot must; to add new questions and answers to the
knowledge base; to configure the interpreter in web pages server of
CTTMar/UNIVALI; to develop the interface; to test and to validate the system.
Resumo. Este trabalho apresenta a criação de um chatterbot responsável por
apresentar ao público, informações sobre o Curso de Ciência da Computação
do CTTMar/UNIVALI. O sistema tem sua interface em Flash, e em sua base
de conhecimento foi utilizado o padrão AIML. A metodologia utilizada foi:
traduzir a base de conhecimento padrão em inglês para português, formando
uma base inicial genérica; desenvolver um formulário para professores e
alunos do curso, onde os mesmos deram sugestões sobre perguntas e
respostas que o chatterbot deveria responder; adicionar novas perguntas e
respostas à base de conhecimento; configurar o interpretador no servidor de
páginas web da UNIVALI; desenvolver a interface; testar e validar.
1. Introdução
Este trabalho propôs a criação de um chatterbot responsável por apresentar ao público
informações sobre o Curso de Ciência da Computação da UNIVALI. Segundo Simon
Laven (LAVEN, 2002), um chatterbot é um programa que tem por finalidade simular
uma conversação escrita, com o objetivo de, pelo menos temporariamente, enganar um
ser humano induzindo-o a pensar que está falando com outra pessoa. Este sistema
deverá possuir uma interface em Flash, facilitando a comunicação com o usuário e
tornando a conversa mais agradável.
Para tanto, foi utilizada a linguagem AIML (Artificial Intelligence Markup
Language). De acordo com Wallace (2001), a AIML descreve uma classe de objetos de
dados chamados objetos AIML e parcialmente descreve o comportamento dos
programas que os processam. Estes objetos são constituídos de tópicos e categorias. Por
sua natureza, objetos AIML estão de acordo com documentos XML (Extensible Markup
Language). Como o XML é uma forma restrita de SGML, Standard Generalized
Markup Language (ISO 8879), objetos AIML também estão de acordo com documentos
SGML. Segundo Flynn (2003), XML, ou linguagem de marcação extensível, é feito
para aumentar a funcionalidade da Web fornecendo uma identificação mais flexível e
adaptável para informações. É chamado extensível porque não é fixa como HTML
(HyperText Markup Language, uma linguagem de marcação simples e pré-definida).
Pelo contrário, XML é na verdade uma “meta-linguagem” usada para descrever outras
linguagens, que permite desenvolver linguagens de marcação próprias e customizadas
para infinitos tipos diferentes de documentos.
De acordo com Silva (2003), existem diversos tipos e categorias de chatterbots
conforme sua finalidade: Entretenimento: são aqueles que têm por finalidade divertir o
usuário. Para tanto, é preciso que o chatterbot simule melhor a personalidade humana,
com gostos e desejos próprios; Chatterbots FAQs: têm a mesma finalidade que os
FAQS (Frequently Asked Questions, ou perguntas feitas com freqüência), porém usando
linguagem natural para se comunicar com o usuário; Suporte ao consumidor: são
chatterbots que ajudam o cliente a descobrir e fornecer a solução para um determinado
problema; Marketing: são os chatterbots responsáveis por fazer a propaganda de
determinado produto ou serviço; Chatterbots de propósito geral: são aqueles sem um
objetivo definido. Alguns destes chatterbots têm a capacidade de aprender o que os
usuários os ensinam.
Cada chatterbot baseado em AIML possui um módulo chamado interpretador
AIML, que é responsável por identificar a entrada do usuário na base e retornar a
resposta adequada. Estes interpretadores podem ser desenvolvidos em diversas
linguagens e ambientes. Segundo A.L.I.C.E. (2003), entre os interpretadores mais
populares estão:
•Program Z: é implementado em Common Lisp. Esta implementação vem junto com
completa hospedagem grátis e ferramentas de desenvolvimento AIML no site
www.pandorabots.com;
•Program D: é uma implementação em Java. Esta é a versão que usa a tecnologia mais
moderna e com compatibilidade total com o padrão AIML;
•Program M: é implementado em uma linguagem antiga chamada SETL (Set Theory
and Mathematical Logic). É mais uma especificação formal para AIML do que uma
aplicação prática e funcional. Para usar o Program M, é necessário instalar a linguagem
SETL, que roda somente em máquinas com Linux;
•Program E: (mais conhecido como “PHiliP”) é uma implementação em PHP que está
gerando muita expectativa. Ainda está em seus estágios iniciais, porém é compatível
com o padrão AIML e possui uma comunidade que está crescendo rapidamente;
•Program V: é uma implementação em Perl de um interpretador AIML e também é
compatível com AIML 1.0.1.;
•Program P: mais conhecido como PASCALice, tendo sido desenvolvido em Delphi.
Dentre estes interpretadores, o Program D (PROGRAMD, 2003) parece ser mais
adequado às necessidades do projeto, além de ser o mais utilizado e mais compatível
com o padrão AIML 1.0.1.
2. Justificativa
Embora os chatterbots existam desde a década de 60, há um aumento no interesse
nestas tecnologias desde a generalização da Internet. A Internet fez os chatterbots
acessíveis ao público em geral e ao mesmo tempo criou para os Web sites a necessidade
de terem uma interface parecida com a humana para fornecer informações de forma
agradável à milhares de pessoas por dia (AGENTLAND, 2003).
De fato, mais e mais esforços estão sendo direcionados à pesquisa e
desenvolvimento de chatterbots. Embora adquirir inteligência humana ainda seja um
sonho distante, a tecnologia dos chatterbots só tende a crescer. Parece certo que
chatterbots têm um papel significante na Internet do futuro (ibidem).
Atualmente, existem poucos chatterbots em AIML no Brasil. Entre os mais
famosos estão o chatterbot de marketing Se7e Zoom do site da Close-UP
(SET7EZOOM, 2003) e o Pixelbot (PIXELBOT, 2003) da Universidade Federal de
Pernambuco, que além de não possuir um objetivo específico, não possui uma interface
amigável.
3. Discussão
A primeira etapa do projeto foi a configuração do programa interpretador AIML. O
interpretador usado no projeto foi o Program D, pela sua total compatibilidade com o
padrão AIML e sua compatibilidade com os atuais servidores Web da UNIVALI. Seus
pré-requisitos para o funcionamento não são muitos, sendo possível até mesmo instalá-lo
em ambiente Windows com o servidor de páginas Web APACHE. É necessário,
entretanto, que esteja instalado no mesmo servidor uma versão do Java 2 JRE (Java
Runtime Edition).
A segunda etapa foi a criação de uma base de conhecimento AIML. Esta base é
dividida em dois tipos: Base de conhecimento genérica; Base de conhecimentos
específicos.
3.1 Contador de Categorias
A base de conhecimento genérica é baseada no projeto A.L.I.C.E. (ALICE, 2003), sendo
que esta encontra-se disponível gratuitamente. Para a tradução da base de conhecimento
genérica, foi desenvolvido um programa em Delphi para a contagem de categorias já
traduzidas. Entretanto, para que o mesmo funcione, é necessário que a tradução seja
executada da seguinte maneira: do início do arquivo até o fim; quando o processo de
tradução for temporariamente parado, inclui-se a tag <traduzido> imediatamente após a
última categoria traduzida.
Seguindo este padrão, o programa é capaz de contar quantas categorias existem
antes da tag <traduzido>. O programa também mostra a porcentagem total de categorias
traduzidas. A Figura 1 apresenta a interface do programa Conta Categorias.
Figura 1. Programa Conta Categorias
3.2 Base de Conhecimentos Específicos
O chatterbot desenvolvido teve sua base de conhecimento formada a partir do
levantamento feito entre alunos e professores do Curso de Ciência da Computação do
CTTMar/UNIVALI. O curso é composto de 385 alunos e 32 professores. Deste
universo, foram entrevistados 99 alunos e 12 professores, escolhendo-se entre os alunos,
turmas do início do curso (1º período), meio do curso (5º período) e do final do curso
(9º período). As entrevistas foram feitas através de um formulário específico para
alunos e para professores.
Com respeito as informações que os alunos gostariam que o chatterbot
responde-se têm-se: Quantidade de pessoas reprovadas em cada matéria (%); Sobre as
matérias e os professores; Principais mudanças na matriz curricular do curso;
Configurações dos computadores da UNIVALI; Professores do curso; Áreas para atuar,
salários, linguagens que irão aprender; Quanto tempo em média um aluno leva para
completar o curso; A vida após formado, as pessoas que são destaque na área;
Informações mais aprofundadas nas disciplinas; Bolsa de pesquisa; Mercado de
trabalho, perspectivas após formado; Aconselhamento para alunos do ensino médio que
estão escolhendo que curso fazer; Notas das avaliações; Área que poderia atuar;
Esclarecimento sobre pré-requisitos; Informações gerais sobre a UNIVALI; Objetivos
do curso; Regulamentação da profissão; Sobre as avaliações do curso (provão) e
avaliações de professores e alunos; Oportunidades acadêmicas (monitoria, grupos de
pesquisa) Quais as matérias mais difíceis? Quais os melhores alunos que já passaram
pelo curso; Eventos e palestras; Infra-estrutura do curso.
Referente a entrevista com os professores, os tipos de perguntas que eles
gostariam que o chatterbot respondesse foram: Que conhecimentos deve ter para iniciar
o curso? Por quê existem disciplinas obrigatórias? Qual o objetivo da disciplina “X” na
formação profissional? Por quê a computação é uma ciência? E o que isso implica? O
que envolve a disciplina “X”? Do que se trata a disciplina “X”? O que eu estudo em
“X”? Quais os conteúdos trabalhados na disciplina “X”? Qual a formação dos
professores? Qual a área de atuação dos profissionais de Ciência da Computação? O
curso oferece oportunidades de estágio? Em que áreas? Qual a necessidade da disciplina
“X” no curso? Como fazer trabalho voluntariado?
A base de conhecimentos específicos foi desenvolvida a partir das informações
apresentadas pelos professores. Estas informações foram obtidas através de um
questionário com questões que posteriormente foram analisadas serviram de base para
novas categorias. Este questionário foi baseado nas questões propostas pelos alunos e
professores na primeira pesquisa.
Ao desenvolver as novas categorias, todo o cuidado foi tomado para que as mais
diversas frases pudessem ser reconhecidas. Existem diversas maneiras de se perguntar
sobre um assunto, e o chatterbot deve ser capaz de reconhecê-las. A maioria das
respostas redirecionará o usuário para alguma parte específica do site. Entretanto,
algumas perguntas não serão reconhecidas de imediato pelo chatterbot mas com as
ferramentas de aprendizagem será possível melhorá-lo com o tempo.
3.3 Base de Conhecimentos Específicos
O desenvolvimento da base de conhecimento iniciou-se pela tradução da base de
conhecimento padrão do chatterbot A.L.I.C.E. Esta base é de distribuição gratuita e está
disponível em diversas línguas. Entretanto, ainda não existe uma base AIML gratuita
disponível em português. A base original escolhida foi a de língua inglesa. Devido às
diferenças entre o inglês e o português, algumas categorias não foram traduzidas e, por
consequência, retiradas da base de conhecimento. Isto deve-se ao fato de que algumas
expressões só existem em inglês, e não em português, além do fato de que existem
palavras que são sinônimos em inglês mas que não existem correspondentes na língua
portuguesa.
Outro inconveniente é a questão do gênero. Por exemplo, considerando as
seguintes frases em inglês: That house is ugly. That car is ugly.
Para estas frases, o seguinte padrão seria indicado: <pattern>THAT * IS
UGLY</pattern>
Entretanto, somente uma categoria não seria o suficiente para identificar estas
duas frases: Aquela casa é feia. Aquele carro é feio.
São necessárias, na verdade, duas categorias diferentes: <pattern>AQUELA * É
FEIA</pattern>; <pattern>AQUELE * É FEIO</pattern>
Então, durante o processo de tradução, o devido cuidado foi tomado para que os
adjetivos e substantivos sejam separados em categorias diferentes de acordo com o
gênero. Uma questão importante durante a tradução foi a utilização do ponto de
interrogação. Na língua portuguesa, o que difere uma afirmação de uma pergunta muitas
vezes é somente o sinal '?' no final da frase. Entretanto, na língua inglesa, a diferença é
muito mais evidente do que um simples sinal. O verbo, por exemplo, passa a ficar antes
do sujeito. Devido a este fato, o sinal '?' não é identificado pelo Program D, pois é
praticamente inútil.
Por exemplo, o seguinte padrão em inglês é nitidamente uma pergunta:
<pattern>DO YOU COOK</pattern>. Mas, no caso da tradução para português, não há
como definir se a entrada é uma pergunta ou não: <pattern>VOCÊ COZINHA</pattern>
Este problema é menos sério do que aparenta, pois a resposta pode ser formulada
para que sirva tanto para afirmações como para perguntas. <template>Eu tenho cara de
microondas?</template>
Em ambos os casos (afirmação e pergunta) esta resposta será acionada. Desta
forma, a conversa ainda parece manter uma certa coerência, ainda que não seja a solução
ideal. Visto que isto é aplicável à maioria dos casos, preferiu-se adotar este método de
tradução, ou seja, desconsiderando o ponto de interrogação. O mesmo vale para o
reconhecimento de padrões na tag <that>, já que o ProgramD também ignora o sinal '?'
nesta tag. Outro tratamento importante se refete aos acentos. O arquivo
substitutions.xml contém uma série de substituições do tipo: <substitute find="ã"
replace="a"/> ; <substitute find="õ" replace="e"/>
Estas substituições filtram a entrada para que a acentuação seja ignorada. Este
processo previne que o chatterbot deixe de reconhecer uma determinada palavra por
falta ou excesso de acentos. Sendo assim, nos arquivos aiml, a tag <pattern> não possui
acentos, exceto em um caso especial. As palavras "é" e "e" possuem significados e
utilidades muito diferentes para que a acentuação seja ignorada. Todo o sentido de uma
frase pode se modificar caso estas duas palavras sejam trocadas. Devido a este fato, esta
acentuação não é modificada. Nos casos onde a letra “e” acentuada faz parte de uma
palavra (por exemplo, “também” , “alguém”, “patético”) é necessário criar duas
categorias diferentes que reconheçam respectivamente a palavra com e sem acento.
O arquivo substitutions.xml é constituído de quatro partes:
• Input: são várias regras que definem quais caracteres ou palavras serão substituídos
nas entradas dos usuários. Desta forma, a entrada é normalizada e mais facilmente
reconhecida pelo interpretador. Como mencionado anteriormente, é nesta parte que
todos os acentos são retirados. Existem regras que substituem contrações e abreviações,
economizando categorias desnecessárias. Exemplo:
<substitute find=" pq " replace=" porque "/>
<substitute find=" qq " replace=" qualquer "/>
• Gender: estas substituições são usadas quando a tag AIML <gender> é utilizada.
São instruções para troca de gênero em uma determinada frase. Exemplo:
<substitute find=" ele " replace=" ela "/>
<substitute find=" dela " replace=" dele "/>
• Person: substituições de primeira para terceira pessoa e vice-versa. Estas
substituições são usadas quando a tag AIML <person> é utilizada. Exemplo:
<substitute find=" ele " replace=" eu "/>
• Person2: substituições de primeira para segunda pessoa e vice-versa. Estas
substituições são usadas quando a tag AIML <person2> é utilizada. Exemplo:
<substitute find=" comigo " replace=" com você "/>
<substitute find=" você é " replace=" eu sou "/>
O texto contido em “find” faz distinção entre letras acentuadas, porém trata
igualmente caracteres em minúsculo e maiúsculos.
3.4 Aprendizado
A base de conhecimentos genéricos possui uma ampla variedade de categorias que
abrangem diversos assuntos e, mesmo assim, estes assuntos foram baseados no
chatterbot A.L.I.C.E, que possui um contexto cultural completamente diferente do
chatterbot proposto para este trabalho.
Sendo assim, a base de conhecimentos genéricos ainda que útil, não consegue
identificar todas as particularidades da língua portuguesa ou até mesmo da cultura
brasileira. Os usuários que tiveram a oportunidade de conversar com o chatterbot nos
seus estágios iniciais puderam observar que muitas perguntas não obtiveram a resposta
apropriada ou coerente. Deste modo, faz-se necessário um processo de aprendizado e
adaptação a esse novo ambiente.
O Program D oferece uma ferramenta muito útil para esta tarefa, o Targeting.
Trata-se de um aplicativo em Java que mostra as entradas dos usuários e as respectivas
respostas do chatterbot. O botmaster pode navegar entre os registros do log gerado e
decidir qual resposta foi adequada ou não. Nos casos onde a resposta não foi satisfatória,
o botmaster pode cadastrar uma nova baseada na pergunta que não foi respondida
corretamente.
Entretanto, este aplicativo só funciona em ambientes gráficos e isto nem sempre
é possível obter nos servidores onde o ProgramD é instalado. O mais adequado neste
caso seria uma aplicação de aprendizado escrita em alguma linguagem para a web, visto
que o próprio chatterbot é uma aplicação para a web. Assim, o botmaster poderia
facilmente ensinar o chatterbot, até mesmo à distância. Além disso, o programa
Targeting parece se perder na navegação de algumas categorias e também é uma
aplicação pesada. Nos testes feitos, foi notado um uso considerável de recursos do
sistema para esta aplicação.
Para este trabalho foi desenvolvida uma ferramenta de aprendizagem alternativa
voltada para a web. Esta ferramenta foi desenvolvida em PHP, por se tratar de uma
linguagem relativamente fácil para o desenvolvimento desta aplicação. Foi utilizada a
classe SimpleXmlParser, desenvolvida por Marcos Pont (PONT, 2003). Esta classe é a
responsável por ler o arquivo de log que está no formato XML, e montar uma árvore em
memória com os dados deste arquivo. Trata-se de uma classe simples, que não oferece
outras funcionalidades além desta. Um parser XML é o programa ou rotina responsável
por validar a sintaxe de um arquivo XML, além de oferecer funções para a navegação
pela árvore do arquivo.
O arquivo “targets.xml” contém uma tag “raíz” chamada <targets>. Dentro desta
tag existem diversas tags <target> que contém informações referentes à cada troca de
informações com os clientes, além do tópico da conversa e a categoria que foi acionada.
A tag <input> é referente à entrada do usuário. A tag <match> corresponde à
categoria que foi acionada por esta entrada. A tag <reply> corresponde à resposta
mostrada ao usuário.
Lendo estas informações, o programa pode montar um formulário para que o
usuário visualize estas informações e as modifique se quiser. Em seguida, o usuário
pode gravar esta categoria modificada.
Cada nova resposta é gravada em um arquivo aiml próprio, que depois é
adicionado à base de conhecimento. A Figura 2 mostra a interface da aplicação
desenvolvida.
Figura 2: Ferramenta de aprendizado.
Para isto, o padrão AIML possui a tag <learn>, que é responsável por recarregar
todos os arquivos da base de conhecimento. Para acioná-la, é preciso criar uma tag
específica para este propósito.
O Program D oferece uma funcionalidade ainda mais útil. É possível programálo para que, em intervalos de tempo pré-determinados, os arquivos AIML sejam
verificados e, caso haja alguma modificação, o programa recarrega estes arquivos
automaticamente.
3.5 Interface em Flash
A Interface em Flash para o chatterbot foi desenvolvida utilizando-se o modelo
AlicebotFlash, disponível para download no site do projeto A.L.I.C.E. (2003). Trata-se
de um movie clip que encapsula todas as funções necessárias para que qualquer
aplicativo feito em Flash possa se comunicar com o ProgramD remotamente. Com a
fonte deste movie clip, é possível modificar ou adicionar novas funcionalidades. O
cliente AlicebotFlash é mais eficiente e rápido que o cliente HTML, visto que não é
necessário recarregar a página para cada resposta do chatterbot. A comunicação entre a
interface Flash e o Program D dá-se da seguinte maneira:
O usuário digita a mensagem em um campo texto da interface Flash. Ao apertar
“enter”, o texto é enviado para o Program D através do endereço
http://localhost:2001/CHAT?flash=true.
Existe um arquivo de configuração usado pelo Program D chamado chat.flash. O
conteúdo deste arquivo determinará a maneira como o programa enviará as informações
de volta para a interface Flash.
As tags <bot_name>, <userinput>, <reply> e <response> serão preenchidas pelo
Program D quando uma resposta for solicitada. Em seguida, o texto é enviado para o
cliente Flash. Os textos que possuem o sinal “&” serão identificadas pelo Flash como
variáveis que poderão ser mostradas para o usuário.
O AlicebotFlash foi feito em Flash 5, e a interface cliente requer o plugin Flash
Player 5 ou superior, sendo que o mesmo não funciona na versão standalone (arquivo
Flash executável), somente em browsers.
É interessante notar que o arquivo Flash (swf) deve ficar no mesmo servidor que
o Program D, senão não funcionará. Esta é uma restrição de segurança do próprio Flash.
Não é possível acessar arquivos ou dados de outro servidor. Não é necessário que os
arquivos html e swf estejam no mesmo diretório que o Program D.
Nesta fase do projeto, foi desenvolvido o mascote Luka. A Figura 3 mostra a
interface em Flash final do chatterbot Luka.
Figura 3. Interface Flash
3.6 Configurando o Servidor
Primeiramente é preciso obter os arquivos do Program D em www.alicebot.org. É
preciso colocar todos os arquivos do Program D para o servidor que irá rodar a
aplicação. Recomenda-se colocá-lo em um diretório chamado ProgramD dentro do
diretório onde estão os arquivos da página web do chatterbot.
Estes são os principais diretórios do Program D:
• aiml : É onde os arquivos da base de conhecimento são guardados. Somente os
arquivos com a extensão "aiml" serão considerados. Este é o diretório criado para este
projeto, entretanto este diretório pode ser definido nas configurações do Program D;
• logs : Contém os registros das conversas, dos erros e as mensagens geradas pelo
servidor. Este diretório não existe até que o servidor seja rodado pela primeira vez;
• targets: É o local onde ficam os dados gerados para a ferramenta Targeting;
• templates: Contém os modelos para as interfaces em html e flash;
• conf: Contém os arquivos de configuração do chatterbot;
• database: Contém os scripts para a geração das tabelas usadas pelo ProgramD. Estas
tabelas somente se for necessário gravar os logs em algum banco de dados;
• resources: Contém as DTDs e StyleSheets usados nos arquivos de log XML.
Estes são os principais arquivos utilizados pelo Program D: server.sh: É o script
shell para rodar o servidor no Linux (Unix) e MacOS X; run.bat : Arquivo de lote para
rodar o servidor em ambiente Windows (o arquivo server.bat não deve ser usado);
server.properties: Este arquivo contém a configuração geral do servidor; version.txt:
Arquivo que contém informações sobra a versão do servidor.
É preciso que o JRE (Java Runtime Enviroment) esteja instalado na máquina.
Para verificar isso, basta digitar o comando "java" no prompt de comando. Se o
comando não for encontrado, é preciso instalar o JRE, ou então o servidor não
funcionará. Após a instalação é necessário reiniciar o computador. Antes de rodar o
servidor é necessário configurar o chatterbot. Os arquivos aiml devem estar separados
em uma determinada pasta, que no caso deste trabalho chama-se "ProgramD\AIML".
Dentro do diretório conf, existe o arquivo startup.xml onde é possível determinar
diversas características do chatterbot, inclusive o caminho onde se encontram os
arquivos aiml (relativos ao diretório onde o Program D se encontra)
Com todas as configurações feitas, pode-se rodar o programa do servidor. No
Linux/Unix, basta digitar "server.sh". Talvez seja necessário modificar os atributos para
tornar este arquivo executável (via chmod). No Windows, deve-se executar o arquivo
"run.bat". Para testar, basta digitar alguma frase no próprio console ou usar a interface
web no endereço http://localhost:2001. É interessante notar que no Internet Explorer
deve-se sempre incluir "http://" no endereço quando se especifica o número da porta.
Para finalizar o servidor, basta digitar "/exit" no prompt de comando. Este comando não
funciona via browser.
3.7 Evolução do Projeto
Nos testes iniciais, a base de conhecimento possuía cerca de sete mil categorias
sobre os mais diversos assuntos. Isto corresponde a aproximadamente um terço da
quantidade esperada de categorias para o fim do projeto. Verificou-se que a maioria das
perguntas não era identificada corretamente. Muitas vezes a categoria mais geral era
acionada e o chatterbot respondia que não sabia a resposta. Algumas vezes o chatterbot
possuía uma categoria que correspondia à entrada do usuário, mas a resposta não se
adequava ao contexto da conversa. O programa muitas vezes se perde ou confunde as
perguntas do usuário. Mas, com o processo de aprendizagem, o botmaster revisa cada
pergunta e é capaz de dar uma resposta apropriada para cada uma delas. Esta é uma
conversa retirada dos logs após um período em que o chatterbot aprendeu algumas
categorias novas através da ferramenta de aprendizagem.
3.8 Testes e Validação
A fim de validar o desempenho do programa “Luka Virtual” no mundo real, foi aplicado
um questionário on-line. De acordo com as pessoas que utilizaram o programa. Algumas
conclusões puderam ser tiradas. A seguir tem-se a descrição dos usuários, bem como as
suas respostas. A primeira pergunta feita ao usuário foi quanto a sua categoria: aluno,
professor ou outros (esta categoria refere-se a pessoas externas ao curso). A maioria dos
usuários que testaram o sistema foram de fora do curso.
Ao serem solicitados a darem uma nota para a conversa com o sistema, os
usuários forneceram uma nota no intervalo de 0 a 10 e a nota média alcançada foi 5,68.
Quanto a nota para interface, também em uma escala de 0 a 10, a nota média foi de
8,63. Quanto a pergunta relativa a presença do “Luka” no site, todos os usuários foram
favoráveis (100% de aprovação). Dos 47 usuários, 13 fizeram perguntas sobre o curso
de Ciência da Computação e o chatterbot infelizmente não conseguiu responder
satisfatoriamente, o que faz com que a base de conhecimento seja reavaliada.
As sugestões dadas pelos usuários, de maneira geral foram: a letra usada para
mostrar as respostas estava muito pequena; em geral, acharam que poderia responder
melhor às perguntas; o chatterbot poderia ser um pouco mais animado.
4. Conclusões
O trabalho realizado reuniu conhecimentos sobre inteligência artificial, processamento
de linguagem natural, e agentes de software. O objetivo foi tentar criar um programa de
computador que pensasse como um ser humano ou, pelo menos, levasse as pessoas a
pensar que se trata de uma pessoa de verdade. A área específica do trabalho é voltada
para o marketing via web, apresentando uma nova ferramenta que capta a atenção dos
usuários.
Para a implementação do sistema, foi usada a linguagem de marcação AIML, que
além de poderosa é fácil de ser usada. É importante ressaltar a dificuldade encontrada
em se conseguir desenvolver uma base deconhecimentos padrão, pelo excesso de
perguntas que foi preciso traduzir. Mesmo assim, tentar criar algo tão complexo como
uma conversa entre seres humanos é uma tarefa difícil e que leva muito tempo.
Ao analisar o esforço dedicado ao processo de tradução, percebeu-se que o
desempenho do chatterbot poderia ser melhor se a base de conhecimentos específicos
tivesse sido desenvolvida primeiro. O tempo e esforço necessários para traduzir a base
do chatterbot Alice foram demasiados e o desenvolvimento das categorias sobre o Curso
de Ciência da Computação foi prejudicado. Por estes motivos, a base de conhecimentos
específicos ficou relativamente pequena, contendo basicamente informações sobre os
professores e disciplinas.
Outro ponto interessante do trabalho foi notar que, por sua própria natureza e
funcionamento, o Program D não permite que o chatterbot seja pró-ativo, ou seja, que
faça suas próprias perguntas. É possível, entretanto, que a maneira como as perguntas
são respondidas provoquem mais questionamentos. As conversas onde o chatterbot
simplesmente responde às perguntas tendem a se tornar curtas e pouco interessantes. A
própria base de conhecimento herdada do chatterbot Alice pode ser considerada um
pouco pró-ativa, pois suas respostas geralmente se tornam perguntas para os usuários.
Como recomendações para trabalhos futuros, a melhoria mais óbvia seria na base
de conhecimentos. Atualmente a base AIML possui relativamente poucas categorias,
sendo que uma base bem formada e com uma performance boa possui aproximadamente
quarenta mil categorias. Existem outras linguagens XML para o desenvolvimento de
chatterbots mais complexas que não foram abordadas neste trabalho e que levam em
conta alguns pontos negativos da linguagem AIML como, por exemplo, a dificuldade de
se determinar o contexto da conversa. Também seria interessante o desenvolvimento de
um programa interpretador AIML próprio em alguma outra linguagem de programação.
Referências
Agentland (2003). Inteligent agents and bots. Disponível em <www.agentland.com>.
Acesso em 4 de março de 2003.
Alice. Alicebot Org (2003). Disponível em <www.alicebot.org>. Acesso em 7 de
março de 2003.
Flynn, Peter (2003). The XML FAQ. Disponível em: <http://www.ucc.ie/xml/>.
Acesso em: 20 de maio de 2003.
Laven,
Simon
(2003).
The
Simon
Laven
page.
<www.simonlaven.com>. Acesso em 4 de março de 2003.
Disponível
em
Pixelbot (2003). Pixelbot. Chatterbot acadêmico da Universidade Federal de
Pernambuco. Disponível em <150.161.189.220/pixel>. Acesso em 7 de março de
2003.
Pont,
Marcos.
(2003)
Disponível
em
SimpleXMLParser.
http://phpbrasil.com/scripts/script.php/id/822>. Acesso em 6 de novembro de 2003.
ProgramD (2003). Getting Started With Program D. Disponível em:
<www.alicebot.org/resources/programd/readme.html>. Acesso em 7 de março de
2003.
SE7TEZOOM (2003). Se7e zoom. Disponível em <www.setezoom.com.br>. Acesso
em 7 de março de 2003.
Silva, Adriana Barbosa (2003). Um chatterbot em AIML plus que conversa sobre
horóscopo. Disponível <www.cin.ufpe.br/~tg/2002-1/abs2.doc>. Acesso em 2 de
março de 2003.
Wallace, Richard (2003). Artificial Intelligence Markup Language (AIML) Version
1.0.1. Disponível em <www.alicebot.org/TR/2001/WD-aiml>. Acesso em 3 de
março de 2003.

Documentos relacionados

ELEKTRA: Um Chatterbot para Uso em Ambiente Educacional

ELEKTRA: Um Chatterbot para Uso em Ambiente Educacional palavras. É programada para dar muitas informações a seu respeito e pode sugerir até que o usuário a veja cantar. Muitos outros chatterbots foram construídos usando o software do chatterbot ALICE. ...

Leia mais