• Nenhum resultado encontrado

ALICE (2007) é um chatterbot com interface em linguagem natural baseado na experiência  especificada por Alan M. Turing, composto por módulos de conversação categorizando os usuários  por idade, gênero, localização geográfica e profissão, com um grande poder de comunicação, além  de uma interface gráfica que estimula o diálogo (Figura 10). Leonhardt (2005) afirma que: 

Sua  inovação  está na  forma  como  é  apresentada:  além  de muita documentação,  apresenta  uma  saudação  sonora ao  visitante.  Criada  por  Richard  S. Wallace  na  Lehigh  University  e  ativada  em  1995,  ALICE  tem  um  grande  poder  de  comunicação,  além  de  uma  interface  gráfica que estimula o diálogo. É programada para dar muitas informações a seu respeito e  pode sugerir até que o usuário a veja cantar, além de atuar como uma secretária que lembra  as pessoas de seus compromissos. Sua irreverência vai ainda mais longe já que ela é capaz  de espalhar fofocas e contar piadas. 

ALICE tem se destacando em relação aos chatterbots de primeira e segunda geração, sendo  bastante  utilizado  por  projetos  para  o  desenvolvimento  de  outros  chatterbots  com  finalidades  específicas. Este destaque pode ser constatado através do concurso anual “Loebner Prize” onde foi  premiado nos anos de 2000, 2001 e 2004. 

O software ALICE é disponibilizado através da licença pública geral GNU (General Public  License),  mesma  usada  pelo  sistema  operacional  Linux  e  toda  a  Fundação  de  Software  Livre.  A  fundação ALICE possui os direitos autorais do projeto e o disponibiliza livremente através de três  produtos:

·  Especificação técnica da linguagem AIML.

·  Um conjunto de interpretadores AIML.

·  Base  de  conhecimento  do  ALICE,  e  de  outras  personalidades  já  criadas,  escritas  na  linguagem AIML. 

Wallace (2007) descreve que  ALICE é composto  por um  módulo de software chamado de  interpretador  AIML,  que  é  usado  para  ler  os  objetos  AIML  e  fornecer  ao  nível  de  aplicação  as  funcionalidades  baseadas  em  sua  estrutura.  Um  interpretador  AIML  pode  usar  os  serviços  de  um  processador XML, ou pode fazer o lugar de um, mas não deve violar os princípios definidos para os  processadores de XML. 

ALICE  implementa  o  modelo  de  aprendizagem  supervisionado,  no  qual  o  papel  do  botmaster (administrador da base de conhecimentos do bot) é fundamental. O botmaster analisa os

históricos  dos  diálogos,  identificando  as  melhorias  necessárias  e  criando  novas  informações  para  serem anexadas a base de conhecimento na forma de arquivos AIML, de tal forma que, as próximas  respostas sejam mais apropriadas. 

Para  o  desenvolvimento  de  chatterbots  baseados  no  projeto  ALICE  é  necessário  o  desenvolvimento  da  base  de  conhecimento  através  da  linguagem  AIML  e  também  definir  o  interpretador  que  será  utilizado.  Na  Seção  2.3.1  é  apresentada  a  linguagem  AIML,  onde  são  armazenadas  o  conhecimento  do  chatterbot.  Na  Seção  2.3.2  são  apresentados  os  interpretadores  AIML, disponibilizados pelo projeto ALICE. 

2.3.1  AIML 

Segundo Wallace (2007) AIML (Artificial Intelligence Markup Language) é uma linguagem  de  marcação  que  descreve  uma  classe  de  objetos  de  dados  e  também  descreve  parcialmente  o  comportamento dos programas que processam estes dados.  AIML é derivada da linguagem XML  (eXtensible  Markup  Language,­  linguagem  de  marcação  extensível)  e  atualmente  encontra­se  na  versão 1.0.1. 

XML  é  um  formato  de  texto  simples  e  muito  flexível,  derivado  de  SGML  (Standard  Generalized  Markup  Language  ­  Linguagem  Padronizada  de  Marcação  Genérica),  projetado  originalmente  com  o  desafio  de  publicar  documentos  eletrônicos  em  grande  escala  na  Internet  (W3C, 2007). Diferentemente da  maioria das  linguagens de  marcação,  inclusive  a própria HTML  (HyperText  Markup  Language  ­  linguagem  de  marcação  de  hipertexto),  XML  não  apresenta  um  conjunto  limitado  de  tags  a  serem  utilizadas.  Sua  característica  flexível  permite  aos  usuários  a  definição de suas próprias tags e a criação de suas próprias linguagens de marcação. 

A  linguagem  AIML  define  um  padrão,  baseado  em  XML,  para  representação  do  conhecimento que será utilizado pelo chatterbot, sendo baseada em categorias. 

Segundo ALICE (2007) uma categoria é a unidade básica do conhecimento em AIML, que  consiste em uma pergunta de entrada e uma resposta da saída, podendo ter um contexto opcional. A  pergunta, ou estímulo, é chamado de pattern e a resposta é chamada de template. Os dois tipos de  contexto opcional são chamados de that e o topic. 

letras e números, porém sem caracteres especiais. Os espaços devem ser únicos entre as palavras e  os  caracteres  “_”  e  “*”  funcionam  como  palavras.  Estes  caracteres  especiais  que  podem  ser  substituídos por qualquer expressão, de acordo com a entrada informada pelo usuário. 

Geralmente  as  tags  AIML  transformam  as  respostas  em  um  pequeno  programa  de  computador  que  pode  salvar  dados,  ativar  outros  programas,  dar  respostas  condicionais  e  chamar  recursivamente perguntas similares para inserir respostas de outras categorias. 

A linguagem AIML disponibiliza um conjunto completo de tags que podem compor a base  de  conhecimento,  cada  uma  com  funcionalidades  definidas.  Segundo  ALICE  (2007)  as  principais  tags AIML são:

·  <aiml>: delimitador de bloco, indicando o início e o fim do arquivo AIML.

·  <topic name=“X”>: permite que seja definido o assunto (tópico) que está sendo tratado  no momento, para selecionar respostas que tratam deste tópico, permitindo que para uma  mesma entrada existam respostas diferenciadas.

·  <category>:  unidade  básica  de  conhecimento,  contendo  exatamente  uma  pergunta  de  entrada (<pattern>) e uma resposta de saída (<template>).

·  <pattern>: é o estímulo ou entrada que compõe uma categoria. É permitido somente um 

<pattern> por categoria, sendo incluído logo após a tag <category>.

·  <that>:  referente  a  resposta  anterior  a  entrada  do  usuário,  utilizado  para  realizar  a  combinação  da  reposta  com  o  contexto.  Deve  ser  incluído  após  a  tag  <pattern>  e  anteceder a tag <template>.

·  <template>:  é  a  fórmula  para  construir  as  respostas  ou  saídas  de  uma  entrada.  Para  constituir  esta  resposta  podem  ser  utilizadas  funções  disponibilizadas  pela  linguagem  AIML.

·  <srai>:  informa  ao  interpretador  que  avalie  novamente  a  resposta  recebida,  como  se  fosse uma  nova entrada  fornecida pelo usuário, criando um  modelo recursivo para que  várias entradas sejam direcionadas a uma única  saída. Caso esta tag esteja  incluída em  uma  entrada,  ele  não  retorna  a  resposta  imediatamente,  mas  procura  a  resposta  mais  apropriada em outras respostas de maneira recursiva.

·  <condition  name=“XX”  value=“YY”>:  tem  a  função  de  definir,  entre  diferentes  respostas, qual a melhor a ser retornada em função do valor de uma variável, baseada em  informações que são registradas ao longo da conversa entre o usuário e o chatterbot.

·  <system>: é possível incluir um comando ou código para que o interpretador execute na  máquina local em tempo de execução. O comando é executado como uma chamada do  sistema operacional.

·  <star>:  substitui  o  valor  capturado  na  entrada  que  é  representado  pelos  caracteres  especiais “*” e “_”. 

Alem das tags citadas anteriormente existem outras tags com funções para:

·  Substituir informações de entrada e/ou saída.

·  Retornar informações como nome do usuário, data, versão.

·  Redução simbólica das expressões.

·  Formatação de textos.

·  Funções randômicas para seleção de respostas.

·  Inclusão  de  instruções  para  serem  executadas  pelo  interpretador  em  formato  de  linguagem de programação. 

Na Figura 11 é representada a estrutura básica de uma categoria AIML. 

<category> 

<pattern> Texto de entrada </pattern> 

<template> Resposta </template> 

</category> 

Figura 11. Estrutura básica da linguagem AIML 

Cada categoria contém um padrão de entrada, onde a entrada informada pelo usuário através  de  uma  frase  será  comparada  a  este  padrão,  através  de  um  sistema  de  seleção,  que  será  o  responsável pela construção das respostas que irão ser retornadas.

Para o desenvolvimento de chatterbots utilizando a linguagem AIML, a parte que necessita  maior análise  e  modelagem é  justamente a  logística de disposição das questões e a  forma  como é  informado o conhecimento cadastrado. 

2.3.2  Inter pr etador es 

Também  chamados  de  Programs,  os  interpretadores  são  responsáveis  por  manipular  os  dados da base de conhecimento. No projeto ALICE estes interpretadores estão disponibilizados em  diferentes  linguagens  de  programação,  como  Java,  PHP  (Hypertext  Preprocessor),  C/C++,  Lisp  entre outras, o que torna o chatterbot disponível para diferentes plataformas, sem a necessidade de  recursos extras para seu funcionamento. 

A  primeira  edição  do  ALICE  foi  implementada  em  1995  usando  SETL  (Set  Theory  and  Mathematical Logic), que é uma linguagem pouco conhecida baseada na teoria dos conjuntos e em  lógica matemática (ALICE, 2007). Esta implementação ficou conhecida como “Program M”, porém  é  mais  uma  especificação  formal  para  AIML  do  que  uma  aplicação  prática  e  funcional,  pois  a  linguagem SETL é limitada a execução em sistema operacional Linux. 

Embora  originalmente  o  ALICE  estivesse  disponível  como  o  software  livre,  atraiu  poucos  colaboradores  até  migrar  para  a  linguagem  Java,  que  é  independente  de  plataforma,  em  1998.  A  primeira implementação de ALICE e de AIML em Java foi denominada de “Program A” (ALICE,  2007). 

Lançado em 1999, o “Program B” transformou o ALICE em desenvolvimento de software  livre.  Mais  de  300  desenvolvedores  contribuíram  para  o  Program  B  e  também  para  a  completa  transição do AIML em uma gramática compatível com XML (ALICE, 2007). 

Jacco  Bikker,  no  ano  2000,  criou  o  primeiro  interpretador  AIML  na  linguagem  C/C++,  sendo conhecida como “Program C” (ALICE, 2007). 

O  “Program  B”  foi  baseado  na  tecnologia  anterior  ao  Java  2.  Embora  o  programa  funcionasse bem em muitas plataformas, teve incompatibilidades com a interface gráfica. Foi então  que  Jon  Baer  reescreveu  o  “Program  B”  utilizando  a  tecnologia  Java  2,  e  adicionou  muitas  características  novas. Com esta nova tecnologia, Jon nomeou seu primeiro  bot de DANY,  criando  assim o novo program, chamado de “Program D”. Iniciado em novembro de 2000, o “Program D” 

transformou­se na implementação referência utilizada pela fundação de ALICE (ALICE, 2007).

Com  o  crescimento  da  comunidade  AIML,  outros  programs  foram  desenvolvidos  em  diferentes  linguagens,  sendo  facilitados  pela  adaptação  de  um  padrão  AIML  1.0.1  no  fim  do  ano  2000.  O  interpretador  desenvolvido  na  linguagem  PHP  denominou­se  de  “Program  E”,  já  o  desenvolvido em linguagem Lisp foi nomeado de “Program Z” (ALICE, 2007). 

Wallace  (2007)  liberou  uma  versão  híbrida  dos  programs  B  e  D  em  2001,  nomeando  de 

“Program  dB”,  a  qual  foi  o  vencedor  do  prêmio  Loebner  em  outubro  2001.  A  maioria  destas  características hoje encontram­se agregadas no “Program D” 

Segundo  Wallace  (2007)  os  interpretadores  manipulam  a  base  de  conhecimento  na  linguagem  AIML,  gravando  os  <patterns>  em  uma  estrutura  de  árvore  gerenciada  por  um  objeto  chamado Graphmaster. Este objeto fica residente em memória de maneira compacta, possibilitando  uma rápida e eficiente busca dos <patterns> para garantir um bom desempenho. 

Com a utilização deste sistema de árvore de entradas com prefixos semelhantes sobrepostos  e  um  algoritmo  de  busca  nessa  árvore,  permitem  que  a  base  de  conhecimento  do  chatterbot  seja  diferenciada de um simples banco de dados. O Graphmaster procura a categoria com um <pattern> 

que  se  encaixa  no  contexto  e  responderá  com  o  <template>  associado.  A  recursividade  também  contribui para que a  base de  conhecimentos tenha  inúmeras  vantagens em relação a um  banco de  dados, devido ao fato de a saída não depender apenas da categoria correspondente, mas também de  todas as recursões realizadas por outras categorias. 

No documento universidade do vale do itajaí - Univali (páginas 38-43)

Documentos relacionados