O Uso Do Processamento de Linguagem Natural Na Construcao de Chatterbots - Eustaquio Ceezar Pereira Filho
O Uso Do Processamento de Linguagem Natural Na Construcao de Chatterbots - Eustaquio Ceezar Pereira Filho
Catalão - 2009
Eustáquio Cézar Pereira Filho
Catalão - 2009
C.Pereira , Eustáquio
Número de páginas: 46
• ao meu orientador professor mestre Márcio Souza Dias, pela orientação, incentivo e
companheirismo;
i
Sumário
1 Introdução 1
3 Fundamentação Teórica 15
3.1 Processamento de Linguagem Natural (PLN) . . . . . . . . . . . . . . . . . 15
3.1.1 Fonologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.2 Morfologia e Sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.1.3 Semântica e pragmática . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.1 Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Interpretador AIML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 O algoritmo Graphmaster . . . . . . . . . . . . . . . . . . . . . . . 22
ii
4.6 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7 Base de Conhecimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8 Modelo funcional Equus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Conclusão 34
Referências 36
Apêndices 37
A Código Fonte 38
A.1 Interface Equus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
A.2 Interface FGCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.3 Processamento FGCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
iii
Lista de Figuras
iv
Lista de Tabelas
v
Capı́tulo 1
Introdução
1
e máquina, que é um ponto importante para impulsionar a contı́nua evolução computa-
cional.
A estrutura do trabalho apresenta a seguinte sequência:
2
Capı́tulo 2
Chatterbots:Evolução Histórica,
Caracterı́sticas e Usos
Inicialmente, os computadores eram tidos como objetos que efetuavam somente opera-
ções aritméticas e surpreendiam se realizassem qualquer atividade remotamente inteligente.
Assim, quando em 1950, Alan Turing publicou um artigo “Computing Machinery and In-
telligence” que destacava uma forma de assegurar se os computadores poderiam ou não
pensar, foi o começo da evolução e a possibilidade de sonhar com modelos computacionais
complexos capazes de surpreender a todos. O sistema baseava-se na impossibilidade de
distinção entre ser humano e máquina por meio de um teste no qual o computador será
aprovado caso um interrogador humano, após propor algumas perguntas por escrito, não
descobrir se as respostas vêm de uma pessoa ou não. As pesquisas de IA têm dedicado
pouco à aprovação no teste de Turing, acreditando que estudar os princı́pios básicos da
inteligência seja mais importante do que produzir um exemplar que possa ter sucesso no
teste [Russel e Norvig, 2002].
Em 1994, Michael L. Mauldin criou um termo para nomear um robô jogador cuja
função principal é conversar: Chatterbot [Mauldin, 1994]. Chatterbot é um programa de
computador que tenta simular o diálogo entre humanos, no qual o objetivo é responder as
perguntas de maneira que se tenha a impressão de estar conversando com outra pessoa e
não com um programa de computador [Teixeira, 2005]. Os Chatterbots constituem uma
das diversas formas de humanização da máquina fornecidas pela IA .
Os Chatterbots podem possuir diversas nomenclaturas, sendo possı́vel encontrar men-
ções a Chatter-bot, Chatbots, Bots entre outras. No entanto, a origem do termo vem da
palavra Chat (Conversational Hypertext Access Technology - Hipertexto de Conversação
de Acesso à Tecnologia), e a palavra Bot que tem sua origem na abreviação da palavra
checa Robota, que significa trabalho. A palavra robô teve origem na peça “R.U.R.”
de Karel Capek, escrita em 1921 [Leonhardt, 2005]. A sigla é uma abreviatura para
“Rossum’s Universal Robots” [Leonhardt, 2005]. Peça esta, que relata a história de um
3
cientista brilhante, Rossum, que cria uma substância quı́mica semelhante ao protoplasma,
utilizada na construção de humanóides (robôs) com o objetivo que sejam inteligentes e
façam todo o trabalho fı́sico.
Por tudo explanado e para entender a criação de Equus é interessante destacar a
evolução histórica dos primeiros Chatterbots criados que são: ELIZA, JULIA e ALICE.
2.1 ELIZA
Chaterbot criado em 1966, pelo professor Joseph Weizenbaum, no Massachussets Insti-
tute of Technology [Weizenbaum, 1966], sua implementação original foi em SLIP (Serial
Line Internet Protocol) uma linguagem também criada por Weizenbaum e rodou em uma
plataforma da IBM, conhecida como IBM 7094, um mainframe produzido pela IBM.
Foi desenvolvido utilizando a idéia proposta na primeira geração de Chatterbots, o casa-
mento de padrões. Tinha como objetivo simular a conversa de um psicanalista rogeriano
[Rogers, 1951] com seu paciente. ELIZA então, esperava que o usuário (paciente) con-
tasse e refletisse sobre os problemas que o incomodava e era estimulado a falar por meio
de perguntas.
ELIZA possuı́a como arquitetura uma base de regras em que existiam as sentenças
a serem analisadas, e um programa que captava a mensagem digitada pelo usuário. O
procedimento do programa é bastante simples, a entrada fornecida pelo usuário é lida
e se inspeciona a presença de uma palavra-chave, quando for encontrada, a sentença
é transformada de acordo com uma regra associada a determinada palavra chave. Os
problemas técnicos que ELIZA se preocupa podem ser resumidos em:
A base de regras está estruturada por palavras-chave obtidas a partir do texto digi-
tado pelo usuário, isto é feito em duas fases: a primeira são às regras de decomposição,
responsável por separar a sentença de entrada em termos; a segunda é a de reconstrução,
que retornava a saı́da para o usuário.
4
Inicialmente, ELIZA identifica as palavras mais importantes na frase e então aplica
uma regra de modificação que é capaz de contextualizar as palavras, por exemplo: “você”
seguido de “é” são classificados como uma afirmação. Para casos em que não se encontra
nenhuma regra o programa retorna uma resposta já utilizada ou a uma livre de contexto.
Na tabela 2.1 é mostrado um trecho do diálogo com ELIZA.
Considerando as duas fases para formulação da resposta, decomposição e reconstrução,
pense na seguinte sentença sendo digitada pelo usuário: “It seems that you hate me”, tem-
se a decomposição mostrada na tabela 2.2.
O número N indica que a sentença vai ser composta por N palavras, assim o número
zero (0) representa um termo composto por uma seqüência infinita de palavras. Palavras-
chave como “you” e “me” determinam em qual termo da sentença elas devem aparecer.
Na fase de reconstrução, um número N representa o ı́-esimo termo da decomposição,
portanto tem-se a seguinte resposta: “What makes you think I hate you”.
A idéia básica do método seria imaginar a sentença dita a um estrangeiro que não
conhece muito bem a lı́ngua inglesa, mas possui uma ótima audição. Imagine a frase “I
am very unhappy these days” , supondo que dita a ele e que apenas entenda “I am”, uma
possı́vel resposta seria “How long have been very unhappy these days”. O que ele fez foi
aplicar uma espécie de modelo para a frase original, que especı́fica que qualquer sentença
da “I am” pode ser transformada em “How long have you been...”.
Uma frase de entrada é varrida da esquerda para a direita, cada palavra é procurada em
um dicionário de palavras-chave, se uma palavra é identificada como uma palavra-chave,
então, aplica-se a regra da decomposição explicada anteriormente.
O programa se comporta melhor quando o correspondente humano é inicialmente ins-
truı́do a falar, como se estivesse numa conversa com o psicoterapeuta (Teoria Rogeriana)
[Rogers, 1951] . Esse modo de comunicação foi escolhido para a construção da ELIZA,
porque a entrevista psiquiátrica é um dos poucos exemplos de linguagem categorizada
5
como didática natural em que um dos participantes da conversa não necessita de muito
conhecimento do mundo real, já que a idéia é fazer o outro interlocutor falar.
Considerando o ambiente e o contexto da época em que ELIZA foi criada, pode-se
ressaltar que apesar de simples era muito eficiente e retratava o ambiente de conversa em
que foi proposta a sua construção, a psicologia Rogeriana.
As principais limitações de ELIZA são quanto a sua capacidade de memorização,
não relacionando o que tinha sido falado antes. Outra limitação seria a construção de
algumas respostas, pois ELIZA na tentativa de imprimir ao diálogo uma certa natura-
lidade, respondia ao interlocutor usando partes da própria entrada (Princı́pio da Teoria
Rogeriana)[Rogers, 1951] , gerando às vezes diálogos um tanto confusos.
2.2 JULIA
O Chatterbot que marcou a segunda geração foi intitulado JULIA [Mauldin, 1994].
Criado por Michael Mauldin na Carnegie Mellon University, atuando como um perso-
nagem com a função de auxiliar outros usuários em um ambiente virtual, conhecido como
TinyMUD (Multi-User Dungeons). Neste ambiente há vários usuários que controlam
personagens que são jogados em uma rede com terminais que emulam ambientes através
de interface de texto. JULIA vive nesta ambiente ajudando os usuários no mundo virtual,
mapeando cavernas e enviando mensagens.
Uma caracterı́stica interessante implementada em JULIA é a capacidade de lembrar
informações sobre ações feitas anteriormente, para auxiliar na tomada de decisão do jogo.
Sua versão original utilizava um algoritmo simples de interações do tipo “if-then-else”.
Posteriormente, foi introduzido um algoritmo baseado em redes neurais, que tinha
por objetivo melhorar o desempenho das respostas. Dentro da rede, cada nó consiste em
um conjunto de padrões, uma resposta simples, uma lista de nós ativos e outra de nós
inibidos. Quando a entrada do usuário aciona algum padrão, os nós que contêm o modelo
têm sua ativação estimulada e o de maior nı́vel é selecionado, enviando sua resposta ao
usuário. O código fonte de JULIA é proprietário, mas uma parte dele foi utilizada no
desenvolvimento de outro Chatterbot de código aberto chamado COLIN [Foner, 1997].
JULIA possui uma personalidade curiosa, podendo apresentar sinais levemente al-
terados de humor e objetivos a serem alcançados, tais como, prestar informações aos
jogadores, repassar mensagens de outros jogadores e explorar o ambiente virtual. Além
disso, ela tem um mecanismo capaz de avaliar se está sendo útil em um ambiente. A
partir do pressuposto de que ninguém interage com ela, por um longo perı́odo, decide
explorar outros ambientes e procurar outros usuários.
6
2.3 ALICE
Um dos Chatterbots mais poulares ALICE (Artificial Linguistic Internet Computer
Entity) [Wallace, 1995a], marca a terceira geração dos Chatterbots com a criação da AIML
(Artificial Inteligence Markup Language), que é um padrão baseado no XML e apesar de
ser simples, tem alcançado resultados melhores do que os Chatterbots anteriores. Para
escrever em AIML é fundamental ser breve, conciso, interativo, gramaticalmente correto e
estimular o humor para tornar mais natural a conversa e não apenas um jogo de perguntas
e respostas [Wallace, 1995b].
O surgimento da World Wide Web, em 1994, gerou uma oportunidade de aumentar a
divulgação e agregar maiores conhecimentos. Então, foram adotadas uma série de expe-
rimentos voltados para Web, como nı́vel de interação com o usuário, e principalmente, a
oportunidade de coletar amostras de uma linguagem natural em uma escala sem prece-
dentes. Outra grande vantagem, com a utilização da plataforma Web, é a descentralização
do conhecimento que agrega ajuda de vários outros desenvolvedores para a criação de in-
terpretadores AIML em outras linguagens e de uma maneira geral, contribuindo para sua
evolução [Wallace, 1995a].
A personalidade de ALICE está associada ao conjunto de padrões, pergunta-resposta,
existentes nos arquivos AIML, denominados categorias. Cada categoria possui um estı́mulo
¡ pattern ¿ e uma resposta ¡ template ¿. A cada entrada do usuário, o Bot faz uma pesquisa
na base AIML em busca de uma categoria e então, gera uma resposta correspondente ao
determinado estı́mulo de entrada [Wallace, 1995b]. O modelo de aprendizagem utilizado
é conhecido como aprendizado supervisionado, pelo fato de existir um responsável, de-
nominado Botmaster, que pode inserir novos padrões uma vez que, não há um padrão
especı́fico permitindo um contı́nuo aperfeiçoamento dos conhecimentos do Bot. Com sua
abordagem, ALICE também é capaz de colher informações das conversas adotando uma
caracterı́stica passiva-agressiva, na qual combina elementos de forma passiva com alguns
de forma agressiva. Esse tipo de coleta permite verificar, por exemplo, um perfil dos
usuários e quantificar algumas informações como porcentagem de faixas etárias.
Diferentemente de todos os outros Chatterbots citados anteriormente, a ênfase desse
modelo está no AIML, e assim existem várias implementações do seu Kernel, que é o
responsável pelo processamento da base de conhecimento, e como caracterı́stica funda-
mental está o impulso no desenvolvimento de Bots com AIML. O Kernel foi desenvolvido
em várias linguagens como: php, Java, C++, Perl, dentre outras, e sendo todas de código
aberto. O AIML é capaz de armazenar informações sobre percepções e ações passadas,
podendo utilizá-las para conduzir e melhorar a resposta final.
Os avanços para a construção de Chatterbots não param e muitos pesquisadores
dedicam um aprimoramento ao método desenvolvido por Dr. Wallace (ALICE). Um
7
exemplo é a criação do iAIML [Neves e Barros, 2005], que consiste num mecanismo de-
senvolvido para tratamento de intenções em Chatterbots baseado na Teoria de Análises
da Conversação, que propõe uma análise da conversação, tanto no nı́vel local quanto no
global. Nos experimentos realizados, 87 usuários mantiveram diálogos com dois Chatter-
bots: um em AIML e o outro em iAIML. O uso do iAIML comprovou ter 95% de grau de
confiança, foram avaliados a qualidade do diálogo, o andamento da conversa e a coerência
das réplicas [Neves e Barros, 2005].
A evolução histórica dos Bots seguiu de forma em que novas tecnologias foram sendo
descobertas e implementadas. Hoje os esforços se concentram em aprimorar e viabilizar
a construção de Chatterbots baseados no AIML e suas derivações. Trabalhos como cons-
trução de ferramentas e estratégias de geração de conhecimento automático somam as
principais fontes de pesquisa.
O Prêmio Loebner Prize é um concurso anual que avalia Chatterbots segundo o Teste
de Turing. A tabela acima (2.3) mostra um trecho da conversa de ALICE com um dos
juı́zes no Prêmio de 2001, em que o juı́z chega a se confundir com sua naturalidade e
capacidade de retornar respostas muito semelhantes a de um ser humano, além de não
caracterizar em nenhum momento fuga de contexto [Loebner, 2009].
Existem alguns exemplares de Bots brasileiros, que em sua maioria são baseados na
terceira geração, e utilizam como base para o desenvolvimento o AIML. Sendo assim a
evolução histórica dos Bots segue de forma em que novas tecnologias foram sendo des-
cobertas e implementadas. Hoje os esforços se concentram em aprimorar e viabilizar a
construção de Chatterbots baseados no AIML e suas derivações, como no caso do objetivo
8
deste trabalho que é criar o Equus.
2.4 Caracterı́sticas
Atualmente, a interação homem-máquina é baseada na passagem de informações por
padrões de entrada que são processados e retornados. Contudo, estudos em IA, mais
especificamente o Processamento de Linguagem Natural, busca uma interface de comu-
nicação baseada na linguagem natural.
Uma primeira caracterı́stica de um Chatterbot seria a capacidade de manter diálogo
com seus usuários através de uma linguagem natural, para isto é necessário uma base de
conhecimento e um interpretador capaz de analisar o padrão de entrada e consultar na
base qual a melhor resposta. Na figura 2.1 é apresentado um modelo funcional básico de
um Chatterbot.
De uma maneira geral o conhecimento deve ser armazenado de alguma forma, assim
como acontece quando aprendemos algo, precisamos armazenar este conhecimento para
então utilizá-lo posteriormente. O diálogo entre humanos em sua lı́ngua natural realiza
constantes consultas à base de conhecimento, aquela que criamos com os padrões passados
durante a vida comunicativa. Para Chatterbots a idéia para a construção é a mesma, afinal
precisamos ter um conhecimento prévio sobre os padrões e o conteúdo abordado durante
a conversa. Então, para um diálogo entre homem e máquina, precisamos inicialmente de
uma interface para transmitir os resultados, fluindo visualmente a comunicação. Contudo
é necessário um interpretador capaz de avaliar a entrada fornecida pelo usuário e buscar
9
a melhor saı́da para aquela entrada na base de conhecimento já adquirida.
De acordo com Russel e Norvig [Russel e Norvig, 2002] o agente é uma entidade que
percebe seu ambiente através de sensores e atua sobre ele através de efetuadores. Outra
definição é que o agente seja um sistema de computador baseado em hardware ou software
que desfruta as propriedades de autonomia, capacidade social, reatividade e pró-atividade
[Wooldridge, 1995]. Não existe uma definição consensual para agentes, pois cada autor
define o termo de modo que melhor se relacione com seu trabalho. Enfim, a maioria
dos autores enumeram caracterı́sticas que devem estar presentes nos agentes, que são
[Leonhardt, 2005]:
• Autonomia: um agente autônomo deve ter controle sobre suas ações. Um agente
pode ser autônomo em relação a outros agentes ou a um ambiente;
O agente não precisa ter todas essas caracterı́sticas, basta que tenha uma ou mais,
afinal a presença de todos estes atributos, depende do tipo de aplicação que o agente está
envolvido. Existe um certo conflito em se tratando da relação conceitual entre Chatter-
bots e agentes. Chatterbots são classificados muitas vezes como agentes conversacionais,
pois exibem um comportamento não verbal apropriado, simulando todo o poder de comu-
nicação de um humano. Para análise de Chatterbots na perspectiva de agentes utilizamos
o modelo proposto por Russel e Norvig [Russel e Norvig, 2002], o qual apresenta uma
arquitetura genérica para um agente racional que utiliza um componente de raciocı́nio
10
para mapear cada possı́vel seqüência de percepções na melhor ação a ser tomada. Uma
arquitetura genérica é apresentada na figura 2.2.
Segundo Russel e Norvig é preciso se ter uma idéia bem definida sobre um conjunto de
ações, percepções, objetivos e ambiente em que o agente atuará[Russel e Norvig, 2002].
Este conjunto é conhecido como PAGE (Perceptions, Actions, Goals, Environment). Os
Chatterbots também podem ser caracterizados conforme esse conjunto. Galvão caracteriza
as aplicações dos Chatterbots de acordo com a PAGE [Galvão, 2003], mostrada na figura
2.3.
Figura 2.3: Classificação dos Chatterbots segundo conjunto PAGE [Galvão, 2003]
Atualmente existe uma variedade de Chatterbots, que podem ser classificados em algu-
mas categorias de acordo com sua finalidade, podendo existir Bots que pertencem a mais
de uma categoria ao mesmo tempo. A seguir é apresentado exemplos de caracterização
dos Bots de acordo com suas caracterı́sticas [Leonhardt, 2005].
11
• academic bots: relacionados aos assuntos acadêmicos como sites de professores ou
laboratórios de pesquisa.
• chatter bots: são programas que simulam uma conversa com um ser humano.
Como visto há diversos campos que podem se beneficiar com a construção de Chat-
terbots, por isso a forma de conversação dos humanos vem sendo estudada e levada em
consideração para a construção dos mesmos. Os Chatterbots fazem uso de diversas es-
tratégias para manter e direcionar o diálogo analogamente ao ser humano, dando ilusão
de inteligência, que são [Mauldin, 1994]:
• Fazer bom uso do humor para comentar algum assunto que esteja em foco;
12
2.5 Usos
Dentre os principais usos podemos destacar a utilização de Chatterbots para entreten-
imento, ensino à distância, atendimento ao consumidor e comércio eletrônico.
2.5.1 Entretenimento
O Entretenimento é uma das aplicações mais comuns para os Chatterbots. Para um
bom desempenho deve-se ter um comportamento dinâmico e capaz de dar sensação da
existência de uma personalidade. Como exemplos temos: ED[CONPET, 2008], ELIZA
[Weizenbaum, 1966]. O ED é um projeto mantido pela Petrobrás que traz informações so-
bre o meio ambiente, conversando sobre uso eficiente de energia e combustı́veis. É possı́vel
esclarecer dúvidas sobre esses assuntos, simulando um diálogo, e consequentemente, agre-
gar conhecimento de uma maneira mais rápida. Como no caso de ELIZA que já foi citada
anteriormente.
13
por não poder examinar o produto [Anderson, 1997]. Neste cenário o uso do Chatterbots
pode humanizar o processo de e-commerce de modo que o consumidor não precise navegar
entre páginas para chegar ao produto desejado, uma vez que ele poderá ser levado pelo
Chatterbot diretamente até esse produto, com base no diálogo com o cliente, analogamente
ao que acontece em uma loja fı́sica.
14
Capı́tulo 3
Fundamentação Teórica
• som: fonologia;
15
3.1.1 Fonologia
A fonologia é uma área da lingüı́stica preocupada em avaliar e estudar os sons da
lı́ngua, investigando o conhecimento fonológico dos falantes[Oliveira, 2007].
As aplicações hoje estão em uma vasta escala de aparelhos que saõ utilizados até no
nosso dia a dia, um exemplo seria o reconhecimento de voz que é utilizado nos aparelhos
celulares, para realizar uma chamada.
Outras aplicações deste estudo, que merecem destaque, são os conhecidos sistemas de
sı́ntese da fala, que por sua vez são capazes de criar um áudio baseado em um texto.
Os sistemas de diálogos em uma lı́ngua falada trazem um maior nı́vel de interação e
agrega outros valores do processamento de linguagem natural, pois envolvem a interação
humano x máquina por meio de diálogos orais em linguagem natural.
16
fórmula lógica-semântica. Como não existe uma correspondência imediata entre sintaxe
e semântica, uma mesma estrutura sintática pode dar origem a diferentes representações
semânticas [ Oliveira, 2007].
A pragmática estuda a linguagem no contexto de sua utilização, é importante fazer
uma interpretação do todo e não mais analisar o significado de suas partes, do ponto de
vista léxico e gramatical. Um grande problema enfrentado no processamento de linguagem
natural é a ambiguidade em estruturas complexas como anáforas e elipses [Oliveira, 2007].
17
ser hospedados e processados pela Web, aumentando sua portabilidade. Sua idéia inicial
era um sistema capaz de facilitar a implementação de um Bot baseado no ALICE, dentre
os seus principais objetivos tem-se[Bush, 2001]:
• Fácil aprendizado;
O AIML descreve uma classe de objetos de dados chamados de objetos AIML, que
são constituı́dos de unidades denominadas categorias, e também é possı́vel descrever par-
cialmente o comportamento que o Bot deverá assumir. O desenvolvimento do padrão foi
iniciado por Dr. Richard Wallace e a comunidade ALICEBOT (software livre) durante
1995 e 2000 [Bush, 2001].
3.2.1 Estrutura
No AIML sua estrutura é basicamente igual ao XML, e segue todos os padrões de
caracteres, formação, comentários e etc. O objeto AIML é formado por uma estrutura
lógica e uma estrutura fı́sica. Sendo a estrutura fı́sica composta por unidades chamadas
de categorias, e a estrutura lógica é formada por elementos e referências de caracteres,
que são indicados em marcação explı́cita. Pode-se inserir comentários e instruções de
processamento, assim como descrito na especificação XML, que não são tratados pelo
interpretador AIML.
Para a criação de um documento em AIML deve-se respeitar as instruções e padrões
adotados pelo XML, contribuindo para a construção de um arquivo AIML dentro dos
padrões.
18
• Cada uma das entidades analisadas, que está relacionada no documento é bem
formada;
Elementos AIML
Um objeto AIML deve ter um atributo de versão, indicando a versão do AIML que
o objeto requer. Para esta versão do AIML, a versão deve ser 1.0. Um elemento AIML
ocorre como uma tag filha da tag < aiml >, que é chamado de um elemento de nı́vel
superior, a tag filha é chamada de categoria, <category>.
Outro elemento AIML é o ”topic” representado por <topic>, nele há informações
sobre a categoria. Sendo considerado um elemento opcional de alto nı́vel, podendo existir
um ou mais elementos na categoria.
As tags AIML são responsáveis pela estruturação da informação na base de conheci-
mento do Bot, através delas é possı́vel retornar estı́mulos a determinadas entradas forneci-
das pelo usuário. Uma entrada fornecida por um usuário é comparada aos padrões des-
critos na linguagem e, com base neste processo, são selecionadas ou construı́das as res-
postas e todas as informações são estruturadas com base no AIML. A estrutura básica
para a construção de um arquivo AIML utiliza as seguintes tags[Bush, 2001]:
• <topic> < /topic>: é um elemento opcional de alto nı́vel que contém tags categoria,
e por sua vez tem um atributo de nome necessário que deve conter uma expressão
de padrão simples, e permite conter um ou mais elementos na categoria.
• <category> < /category>: é um nı́vel superior (ou de segundo nı́vel, se contido den-
tro de um tópico), que contém exatamente um padrão. A tag não possui atributos
e corresponde a uma unidade de conhecimento.
19
• <pattern> < /pattern>: conteúdo entre as tags é uma expressão de padrão misto,
em cada categoria existe exatamente um padrão e que deve ser sempre o primeiro
elemento filho. Esta tag não possui atributos.
Caracteres Especiais
Um padrão de entrada delimitado pelas tags < pattern >< /pattern > pode usar o
caractere especial estrela (*) para casar com sentenças variadas fornecidas pelo usuário.
Para recuperar o conteúdo que casou com o caractere especial se faz uso do elemento
< star > de AIML, representado na figura 3.2:
Na figura 3.2, o elemento < star > seria substituı́do pelo que vier depois da frase ”O
que é”. Assim, se o usuário digitasse ”O que é um carro”, o Bot responderia ”Eu não sei
o que é um carro”.
Intenções
20
Figura 3.3: Categoria com tag < srai >
A figura 3.3 utiliza o elemento AIML <srai>, que faz uma chamada recursiva a
outra padrão existente, dispensando a criação de novos templates para o mesmo sentido
pragmático.
Tratamento de repetições
Utilizando-se da tag < that >, o AIML prevê o tratamento de repetição de sentenças,
comparando sua forma. Deste modo as sentenças podem ser mais significativa.
Por exemplo:
Em AIML utilizando a tag < that > pode-se escrever um padrão para o diálogo acima,
representado na figura 3.4.
21
para a sua primeira versão em JAVA, conhecida como Program A. Depois de algum
tempo foi implementado interpretadores em outras linguagens, o que popularizou o AIML
disponibilizando outros interpretadores [Alice, 2009].
O interpretador AIML é um módulo responsável por identificar a entrada do usuário na
base de conhecimento AIML e retornar a resposta adequada. Os interpretadores utilizados
atualmente são [Alice, 2009]:
22
a “ ”. Tente todas as palavras restantes para a sentença após a palavra “CAVALO” para
ver se alguma casa. Do contrário, volte ao Nodemapper. Agora tenta-se procurar pela
palavra “CAVALO”, voltando ao nó raiz e procura-se novamente o subgrafo que inicia-se
com o termo, caso não encontre, volta-se ao nó raiz e busca pelo caractere especial “” e
tenta-se todas as palavras e caracteres restantes da sentença de entrada após a palavra
“CAVALO”, para ver se há algum casamento.
A idéia do algoritmo é buscar uma resposta na base, analisando a entrada do usuário
e o uso de caracteres coringas disponı́veis na linguagem AIML.
Uma metáfora conveniente para os padrões de AIML, e talvez também uma alternativa
para o armazenamento de dados de padrões e modelos, é o sistema de arquivos. Se você
usa Windows, Unix ou Mac o mesmo princı́pio é válido. O sistema de arquivo tem uma
raı́z, como ’c:\’ ou ’/’. A raı́z tem algumas ramificações que são arquivos, e algumas que
são pastas. As pastas, por sua vez, têm filhos que podem ser ambos, pastas e arquivos. Se
visualizarmos a estruturação do sistema de arquivos como uma árvore, tem-se que os nós
folha da árvore são os arquivos. Cada arquivo tem um nome de caminho, que explicita a
sua posição exata dentro da árvore [Wallace, 2001]. Utilizando o caminho
‘‘C:\meusdocumentos\minhasimagens\01.txt’’
tem-se que o arquivo 01.txt está localizado abaixo de um determinado conjunto de ramos
da raiz.
O Graphmaster está organizado exatamente da mesma maneira. Pode-se escrever um
padrão como “I LIKE TO *” como “G: / I / LIKE / TO / star”. Todos os outros
padrões que começam com “I” também vão para o “G: / I / pasta”. Todos os padrões
que começam com “I Like” vão para o “G: / I / LIKE / subpasta”. Pode-se verificar que
a pasta “G: / I / LIKE / TO / star” tem um único arquivo chamado “template.txt” que
contém a resposta para essa entrada [Wallace, 2001].
O algoritmo de correspondência especifica um procedimento eficaz para a consulta dos
arquivos para um determinado arquivo chamado “template.txt”, cujo o nome do caminho
distingue todos os template.txt existentes, retornado apenas o template que se encaixa
com o caminho associado no texto de entrada.
Além do mais, pode-se visualizar a “compreensão” do Graphmaster na hierarquia do
sistema de arquivos, em que todos os padrões de prefixo comum tornam-se ramos da raiz.
É evidente que esta hierarquia é o melhor método de armazenamento de uma matriz linear
simples, ou o armazenamento de dados de padrões [Wallace, 2001].
De maneira geral é possı́vel resumir o funcionamento do Graphmaster Pattern Match-
ing, como o funcionamento de um dicionário ou enciclopédia. Se você quiser procurar
uma palavra ou frase, não comece no inı́cio ou no final, a busca é através de cada entrada
até encontrar uma correspondência, primeiro vá para a seção que corresponda a primeira
23
letra ou palavra. Então, pula-se para outra seção que contém um inı́cio de um conjunto
com uma próxima letra ou palavra, e então continua-se neste processo até localizar a
palavra ou frase.
Toda essa explicação da parte estrutural de um Chatterbots é de extrema relevância
para que o protótipo Equus seja construı́do, no qual, utilizamos o algoritmo graphmaster
para implementar o interpretador que busca informações na base de conhecimento que é
em AIML.
24
Capı́tulo 4
4.1 Motivação
A idéia de construção de um Chatterbot é uma forma de gerar um conhecimento
que pode ser acessı́vel por várias pessoas em tempo real com uma grande interatividade,
estimulando a propagação do conhecimento.
Bots em sua forma mais simples podem atender uma infinidade de situações que vão
desde atendimento a um cliente, como a uma importante fonte de pesquisa. A construção
de mecanismos para maximizar a eficiência dos Bots tem conquistado grandes pesquisas.
A motivação principal deste trabalho é propor uma solução de um Bot que seja de fácil
implementação, que utilize apenas ferramentas livres, hospedagem grátis e mão-de-obra
vasta nas ferramentas e soluções, para que seja possı́vel sua expansão e aprimoramento.
Sendo assim, é disponibilizado um interpretador de AIML, uma base de conhecimento
genérica, responsável por armazenar informações de conhecimento geral e uma base de
conhecimento especı́fica gerada com o auxı́lio de uma ferramenta para a criação de co-
nhecimento especı́fico sobre a equinocultura.
25
quando aborda apenas uma pequena área do conhecimento, agregando maior valor e faci-
lidade quanto a construção de um Bot com conhecimentos completos sobre determinados
assuntos.
Como constatei a inexistência de um modelo de Chatterbot operante na equinocultura,
que representa atualmente uma importante faixa do agronegócio brasileiro, decidi criar o
Equus.
A equinocultura, resultado da junção dos termos equino + cultura, no qual equino é
um mamı́fero quadrúpede (cavalo) e cultura sendo o ato, o efeito ou o modo de cultivar a
criação de certos animais [Buarque, 1989]. E, sendo assim, considero que o maior benefı́cio
desta abordagem é o uso de técnicas de IA na aplicação de um Chatterbot em um contexto
ainda pouco explorado.
4.3 Equus
O Chatterbot foi denominado Equus, que significa cavalo em latim. Seu uso está associ-
ado a nomes cientı́ficos (Equus caballus, Equus quagga). E ainda, existe uma definição cri-
ada por Monty Roberts, conhecido mundialmente de“O Encantador de Cavalos” [Roberts,
1996], como uma linguagem de comunicação corporal, baseada no conceito de “Avançar-
Recuar” adotadas pelos indı́genas norte-americanos.
O objetivo é utilizar conceitos de IA na construção de um mecanismo que provê
conhecimento aos apaixonados por essa cultura, que fascina muitas pessoas. O nome
do Bot (Equus) denota um nı́vel de interação para os amantes da equinocultura e uma
importante forma de difundir o conhecimento.
Utilizando as técnicas de construção de um Bot apresentadas anteriormente e auxiliado
pela ferramenta de geração de conteúdo AIML, o intuito é desenvolver um produto que
difunda conhecimento a população e seja de fácil construção viabilizando o seu uso em
outras áreas.
4.4 O interpretador
O interpretador utilizado foi o program E, conhecido como ”P HiliP ”, uma imple-
mentação em PHP disponı́vel pela comunidade alicebot.org [A.L.I.C.E, 2009]. A uti-
lização da plataforma em PHP tem suas vantagens quanto a portabilidade, facilidade de
hospedagem do serviço e crescimento da comunidade e utilizadores. Um dos principais
objetivos do projeto é ter de posse um sistema facilmente escalável e portátil, que garanta
maior visibilidade, sendo voltado para Web.
Equus utiliza o interpretador para prover a comunicação entre o usuário e a base de
26
conhecimento em AIML. O interpretador é construı́do embasado no algoritmo Graphmas-
ter que busca a melhor resposta para informar ao usuário.
27
• A cada termo encontrado no texto o programa gera uma estrutura AIML, ressaltando
as frases identificadas no texto que tratam do mesmo contexto de conhecimento do
Bot, delimitado pelo dicionário de dados.
• Se o programa não encontra esses termos então não cria nenhuma estrutura em
AIML, apenas finaliza a execução do processo.
28
que se fornece o texto de entrada, isto viabiliza a existência de vários arquivos separados
com contextos de atuação diferentes, se assim for desejado.
"A equitaç~
ao é um esporte muito difundido. Ocupa entretanto,
uma posiç~
ao muito especial entre os esportes devido ao fato
de seu instrumento ser uma criatura viva e animada.
O cavaleiro deve possuir n~
ao apenas qualidades fı́sicas, tais
como força, destreza, resist^
encia, e intelectuais, tais como
capacidade de decis~
ao, paci^
encia, presença de espı́rito e
audácia, como também conhecimentos sobre fen^
omenos fı́sicos,
fisiológicos e psicológicos.
Montar a cavalo é aplicar com precis~
ao as leis da mec^
anica
estática e din^
amica, bem como noç~
oes de anatomia, fisiologia
do próprio corpo e do cavalo".
29
Suponhamos um dicionário composto por: cavalo, cavaleiro, equitação, instrutor, mon-
tar. Ao fornecer ambas entradas no texto, o dicionário será gerado em AIML demons-
trando os seguintes padrões:
<aiml version=1.0>
<category>
<pattern> EQUITAÇ^
AO * </pattern>
<template> A equitaç~
ao é um esporte muito difundido </ template>
</category>
<category>
<pattern> CAVALEIRO * </pattern>
<template> O cavaleiro deve possuir n~
ao apenas qualidades
fı́sicas, tais como força, destreza, resist^
encia,
mas também intelectuais, tais como capacidade de decis~
ao,
paci^
encia, presença de espı́rito e audácia, e mais
ainda, conhecimentos sobre fen^
omenos fı́sicos,
fisiológicos e psicológicos.
</ template>
</category>
<category>
<pattern> MONTAR CAVALO * </pattern>
<template> Montar a cavalo é aplicar com precis~
ao as leis
da mec^
anica estática e din^
amica, bem como noç~
oes
de anatomia, fisiologia do próprio corpo e do
cavalo.
</ template>
</category>
</aiml>
30
a sua finalidade. No entanto, ela consegue extrair o conhecimento especı́fico do texto
acelerando o processo de desenvolvimento do Bot.
4.6 Interface
A interface é a forma mais importante de interação entre homem-máquina, é o ponto
de partida para uma comunicação eficiente, se tem falha neste ponto compromete-se todo
o processo. A figura 4.3 e 4.4 representa a interface do Equus.
31
Figura 4.4: Interface Equus
32
4.8 Modelo funcional Equus
Equus é divido em 4 funções principais que juntas traduzem o funcionamento do
Chatterbot, a figura 4.5 representa o modelo funcional do Equus
33
Capı́tulo 5
Conclusão
34
• Sistemas de busca e recuperação de documentos ou informações a partir de padrões
textuais.
A criação de uma ferramenta, como a FGCE, usada no Equus para auxiliar na mon-
tagem da sua base de conhecimento foi um dos principais objetivos deste trabalho, pois
desse modo obteve-se uma solução eficiente para a criação do conhecimento, de um sistema
capaz de aprender e de gerar conhecimento automático. O objeto de análise auxilia na
construção dessa base, mas não exclui o auxı́lio do Botmaster para manipulá-la. Seu uso
potencializa a construção do Bot, mas ainda não consegue gerar automaticamente conhe-
cimento. No caso da construção do Equus, ela auxiliou na informação sobre um contexto
que não é de conhecimento comum, e então, associei dados e informações escritas por
outras pessoas e inseri na sua base de conhecimento.
A construção da base de conhecimento, referente a equinocultura, só foi possı́vel devido
ao uso da ferramenta em que apenas foi gerada as informações iniciais para alimentar o
dicionário de termos técnicos. É importante que seja feito aprimoramentos na ferramenta
e que ela consiga gerar conhecimento sem a interação com o Botmaster, consolidando um
modelo perfeito de aprendizagem.
Dentre trabalhos futuros que posso considerar, avalio a criação de uma ferramenta que
forneça uma forma de geração automática do AIML, que ao fornecer um texto de entrada
a ferramenta consiga não só criar uma estrutura AIML correspondente, mas também ana-
lisar semanticamente o contexto e as informações apresentadas. Como a implementação
de mecanismos de TTS(Text To Speech), para tradução do texto de saı́da do Bot em
voz, aumentando o nı́vel de interação sensorial de uma conversação. A criação de um
sistema gerador de Bots, que contribua para popularizar a sua utilização e a fabricação
de conhecimento espontâneo, em que os próprios utilizadores ajudariam a montar uma
base de conhecimento maior e mais funcional.
O Equus é uma importante ferramenta para disseminar o conhecimento sobre equinocul-
tura, apesar de possuir poucos padrões, com o tempo pode-se chegar a um nı́vel maior de
conhecimento agregado ao Bot. Há alguns termos relacionados a equinocultura que ele
ainda não conhece, mas que serão adicionados com o passar do tempo, pois a preocupação
não era exatamente o quanto ele sabe, mas em como ele irá adquirir esse conhecimento.
Para um melhor funcionamento é importante que se trabalhe na sua base de conhecimento,
adicionando ao Equus mais informações.
Assim, o Chatterbot Equus se tornará um programa importante para aqueles que
procuram conhecimento especı́fico sobre a equinocultura de maneira prática e ao mesmo
tempo interessante.
35
Referências
A.L.I.C.E (2009). Aiml implementations. Disponı́vel em
http://www.alicebot.org/downloads/programs.html. Aceso em 01 de novembro
de 2009.
Bray, T., Paoli, J., Sperberg-McQueena, C. M., e Maler, E. (2000). Extensible markup lan-
guage (xml) 1.0 (second edition). Disponı́vel em http://www.w3.org/TR/2000/REC-
xml-20001006. Aceso em 01 de novembro de 2009.
Mauldin, M. L. (1994). Chatterbots, tinymuds, and the turing test: Entering the loeb-
ner prize competition. Disponı́vel em http://www.lazytoad.com/lti/pub/aaai94.html.
Acesso em 15 de maio de 2008.
36
Oliveira, F. A. D. (2007). Processamento de linguagem natural: princı́pios básicos e a im-
plementação de um analisador sintático de sentenças da lı́ngua portuguesa. Disponı́vel
em http://www.inf.ufrgs.br/gppd/disc/cmp135/trabs/992/Parser/parser.html. Aceso
em 29 de outubro de 2009.
Rogers, C. (1951). Client-centered therapy: Its current pratice, implications and theory.
Boston: Houghton Mifflin.
Wallace, R. (1995a). Alice. artificial linguistic internet computer entity - the a.l.i.c.e a.i.
foundation. Disponı́vel em http://www.alicebot.org. Acesso em 18 de setembro de 2009.
Wooldridge, M. (1995). Intelligent agents: theory and practice. page 115 152. The
knowledge engineering review.
37
Apêndice A
Código Fonte
<?
//require_once "admin/botloader.php";
$HTTP_POST_VARS[’botname’] = ’Equus’;
/**
* Include the guts of the program.
*/
include "respond.php";
$numselects=0;
session_start();
$myuniqueid=session_id();
38
$botresponse=replybotname($HTTP_POST_VARS[’input’],
$myuniqueid,$HTTP_POST_VARS[’botname’]);
?>
<script type="text/javascript">
window.onload=function WindowLoad(event)
{
var objControl=document.forms["FrmTestScroll"].elements["conteudo"];
objControl.scrollTop = objControl.scrollHeight;
}
</script>
</head>
<body bgcolor="#ffffff">
39
<form name="form1" method="post" action="index.php" id="FrmTestScroll">
<tr>
<td><img src="spacer.gif" width="21" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="176" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="16" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="413" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="11" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="80" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="1" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="27" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="11" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="44" height="1" border="0" alt="" /></td>
<td><img src="spacer.gif" width="1" height="1" border="0" alt="" /></td>
</tr>
<tr>
<td colspan="10" align="center" valign="middle">
<img src="titulo.jpg" border="0" alt="EQUUS" align="middle"/>
</td>
<td> </td>
</tr>
<tr>
<td colspan="8"> </td>
<td rowspan="7" colspan="2"> </td>
<td> </td>
</tr>
<tr>
<td rowspan="2"> </td>
<td rowspan="2"><img name="equus" src="equus.jpg" width="176"
height="217" border="0" id="equus" alt="" />
</td>
<td colspan="6"><img name="index_r3_c3" src="index_r3_c3.jpg"
width="548" height="47" border="0" id="index_r3_c3"
alt="" />
</td>
40
<td><img src="spacer.gif" width="1" height="47" border="0" alt="" /></td>
</tr>
<tr>
<td rowspan="5"><img name="index_r4_c3" src="index_r4_c3.jpg" width="16"
height="373" border="0" id="index_r4_c3" alt="" />
</td>
<td rowspan="2" colspan="4" bgcolor="e3e3e3">
<!-- TEXTAREA -->
<textarea name="conteudo" rows="15" cols="60" style="border: none;" >
<? print "\n".$HTTP_POST_VARS[’str_conversa’]; ?>
</textarea>
</td>
<td rowspan="5"><img name="index_r4_c8" src="index_r4_c8.jpg" width="27"
height="373" border="0" id="index_r4_c8" alt="" />
</td>
<td><img src="spacer.gif" width="1" height="170" border="0" alt="" /></td>
</tr>
<tr>
<td rowspan="5" colspan="2"> </td>
<td><img src="spacer.gif" width="1" height="104" border="0" alt="" /></td>
</tr>
<tr>
<td colspan="4"><img name="index_r6_c4" src="index_r6_c4.jpg" width="505"
height="27" border="0" id="index_r6_c4" alt="" />
</td>
<td><img src="spacer.gif" width="1" height="27" border="0" alt="" /></td>
</tr>
<tr>
<td bgcolor="e3e3e3">
<!--caixa de texto inserir mensagem -->
<input type="hidden" name="<?=session_name()?>" value="<?=$uid?>">
<input type="hidden" name="botname" value="<?=
$HTTP_POST_VARS[’botname’]?>">
<input type="hidden" name="str_conversa" value="<?=
$HTTP_POST_VARS[’str_conversa’]?>">
<input type="text" name="input" size="60" border="0"
style="border: none;">
</td>
41
<td rowspan="2"><img name="index_r7_c5" src="index_r7_c5.jpg"
width="11" height="72"
border="0" id="index_r7_c5" alt="" />
</td>
<td bgcolor="#E3E3E3">
<!-- Bot~
ao input -->
<input type="submit" name="Enviar" value="Enviar">
</td>
<td rowspan="2"><img name="index_r7_c7" src="index_r7_c7.jpg" width="1"
height="72" border="0" id="index_r7_c7" alt="" />
</td>
<td><img src="spacer.gif" width="1" height="26" border="0" alt="" /></td>
</tr>
<tr>
<td><img name="index_r8_c4" src="index_r8_c4.jpg" width="413" height="46"
border="0" id="index_r8_c4" alt="" />
</td>
<td><img name="index_r8_c6" src="index_r8_c6.jpg" width="80" height="46"
border="0" id="index_r8_c6" alt="" />
</td>
<td><img src="spacer.gif" width="1" height="46" border="0" alt="" /></td>
</tr>
<tr>
<td colspan="7"> </td>
<td> </td>
<td><img src="spacer.gif" width="1" height="90" border="0" alt="" /></td>
</tr>
</table>
</form>
</body>
</html>
42
A.2 Interface FGCE
43
A.3 Processamento FGCE
<?
/***
* Autor: Eustáquio Cezar Pereira Filho
*
* ===Ferramente de geraç~
ao de conhecimento automático==
* === Universidade Federal de Goias ===
*/
function str2($a , $b){
return stristr($a, $b);
}
//importanto os termos para o dicionário
$lines_dic = file("dic.txt");
//importando
$texto = $_POST["texto"];
if($texto == ’’){
echo"<center><br><bR><br><b>É necessário fornecer um texto
de entrada.</b><br><br><a href=’index.php’>voltar</a></center>";
}else{
/*
* Imprimir os dois arrays de entrada
*/
44
echo"<bR><br><br><br><br>";
/*
* Efetua a busca dos termos técnicos na string de entrada
*/
$n_strings=’’;
$n_dic=’’;
$cont=0;
for($i=0; $i < count($texto_fragmentado); $i++) {
$temp1= $texto_fragmentado[$i];
$temp2= $lines_dic[$j];
$temp="";
$temp = str2($temp1, $temp2);
} // fim for
} // fim for
/*
* Gera estrutura AIML corresponde aos casamentos encontrados
*/
45
if($cont <> 0){
$str = "<?xml version=’1.0’ encoding=’ISO-8859-1’?>
<aiml version=’1.0’>";
$hora = date(’i’)."_FGCE.aiml";
$str.="\n </aiml>";
// Abre ou cria o arquivo 01.aiml
// "a" representa que o arquivo é aberto para ser escrito
$fp = fopen("$hora", "a");
// Fecha o arquivo
fclose($fp);
}else{
echo"<br><br><br><center><b>N~
ao foi encontrado nenhum padr~
ao
possı́vel!</b></center>";
}
}//fim else
?>
46