Home » » Desafios da programação AIML

Desafios da programação AIML

Criar um roteiro em aiml é muito fácil, são poucos comandos e uma grande quantidade de combinações permitindo uma robusta simulação. No entanto, a linguagem aiml exige um planejamento detalhado e uma organização metódica.

Embora seja fácil desenvolver roteiros em aiml é igualmente fácil se perder nesses roteiros.

A necessidade de muitas categorias gera um numero grande de diálogos simulados. Alguns chatterbots possuem mais de 50000 categorias distintas.

Em geral o iniciante cria os roteiros sem muita organização e conforme o numero de diálogos vai crescendo e se tornando complexo mais difícil fica de organizar e programar tais roteiros.

É um problema comum o iniciante chegar nas 5000 categorias e não conseguir dar continuidade por ficar perdido entre tantos diálogos. Por isso não é exagero afirmar que um roteiro sem organização irá necessariamente paralisar em algum momento, inviabilizando a criação do chatterbot.

Para obter sucesso na criação dos roteiros é aconselhável observar alguns procedimentos, são eles:

1 – Organize os roteiros em partes distintas e de fácil identificação através de arquivos devidamente nomeados. Evite criar arquivos numerados ou com códigos sem sentido.

Se o roteiro incluir, por exemplo, momentos de risos. Crie um arquivo risos.aiml e adicione ali todos os roteiros relacionados com risos.

Faça o mesmo para cada evento distinto. Se o roteiro inclui um assunto específico como manutenção de computadores, separe os temas por tipo de hardware. Exemplo: memoria.aiml, placamae.aiml, hd.aiml e dentro de cada arquivo crie os roteiros.

Não adicione ao nome dos arquivos caracteres especiais ou acentos, saudação deve ser escrito como saudacao.aiml.  Muitos interpretadores não aceitam arquivos como caracteres especiais ou acentos.

2 - Dentro de cada arquivo ao escrever os roteiros use uma hierarquia de desenvolvimento para evitar conflitos e roteiros duplicados, marque cada etapa com comentários.

Usando a tag abaixo é possível inserir comentários sem afetar o interpretador.

<!--  abre o comentário sinalizando para o interpretador que não se trata de um comando
 --> fecha o comentário.  
Exemplo:  <!-- Este é um comentário  -->

3 – Organize cada etapa com marcação de função através dos comentários, veja exemplo abaixo:


<!-- ##############  -->
<!-- ### Saldação ### -->
<!-- ##############  -->

<category>
<pattern>oi</pattern>
<template><srai>saudacao</srai></template>
</category>

<category>
<pattern>e ai</pattern>
<template> <srai>saudacao</srai></template>
</category>

<category>
<pattern>tem alguém ai</pattern>
<template><srai>saudacao</srai></template>
</category>

<category>
      <pattern>saudacao</pattern>
      <template>
        <random>
        <li>como vai</li>
        <li>que bom, alguém para conversar</li>
        <li>já estava me sentindo sozinho</li>
        <li>sobre o que vamos teclar</li>
        </random>
      </template>
</category>


<!-- ####################  -->
<!-- ### tópico celulares #### -->
<!-- ####################  -->

<topic name=”celulares”>
<category>
  <pattern>eu gosto das telas por toque</pattern>
  <template>Não consigo usar, me faltam os desdos, hehehe.</template>
</category>

<category>
  <pattern>prefiro os de teclado</pattern>
  <template>Também não consigo usar, hehehe.</template>
</category>
</topic>

O uso de identificadores ajuda na localização visual além de organizar melhor a hierarquia dos eventos evitando confusões na criação dos roteiros.

4 – Use os identificadores para adicionar autoria e informação adicionais e de contato no inicio de cada arquivo aiml. Exemplo:

<!-- Autor: Jéferson Luis da Silva  -->
<!-- e-mail: email@dominio.com.br -->
<!-- sobre termos GNU General Public License -->

5 – Observe a limitação de conteúdo e roteiro, os chatterbots são sistemas com certa limitação. É possível adicionar até 100.000 simulações e acima disso dependendo do interpretador o sistema pode ficar lento e problemático.

É aconselhável pensar um chatterbot da mesma forma que percebemos os profissionais, ou seja, cada indivíduo atua em uma profissão específica. Neste sentido cada chatterbot deve possuir um tema especifico.

A estratégia consiste em criar roteiros focados em um tema específico e projetar respostas generalizadas para os assuntos não contemplados, promovendo interação direcionada.

Este procedimento reduz a complexidade do roteiro ao restringir o conteúdo em um tema específico, facilitando a simulação.

6 – Mantenha uma proposta clara sobre a função e perfil que o chatterbot deverá exercer. Muitos dos problemas ocorrem devido uma falta de clareza e objetivo. Não é possível manter foco e qualidade de diálogo sem determinar com clareza o modelo de atendimento que se deseja conseguir com a simulação.

7 –  Existem várias maneiras para se criar um roteiro, o iniciante pode em um primeiro momento não perceber algumas facilidades, como é o caso das respostas seqüenciais.

<category>
  <pattern>até breve</pattern>
  <template><srai>TCHAU</srai></template>
</category>

</category>  
  <pattern>TCHAU</pattern>
  <template>OK. Até outro dia, neste mesmo horário <srai>HORAS</srai></template>
</category>

</category>  
  <pattern>HORAS</pattern>
  <template><!-- cálculo da hora --></template>
</category>

No roteiro acima ao ser digitado a expressão “até breve” o interpretador direciona para a resposta “OK. Até outro dia, neste mesmo horário” e ocorre um novo direcionamento para o cálculo das horas.

Observe que é possível efetuar uma série de direcionamentos sucessivos adicionando o comando <srai> após uma expressão.


Outra questão é lembrar de vincular uma pergunta efetuada pelo robô criando um sistema de coerência. Isso pode ser feito através do comando <THAT>

<category>
  <pattern>faça uma pergunta</pattern>
  <template>você gosta de filmes?</template>
</category>

<category>
  <pattern>Sim</pattern>
  <that> você gosta de filmes?</that>
  <template>Que bom, eu também gosto de um filminho.</template>
</category>

<category>
  <pattern>Nao</pattern>
  <that> você gosta de filmes?</that>
  <template>Entendo, eu acho alguns filmes ótimos.</template>
</category>

No roteiro acima, quando o robô faz uma pergunta é usado o comando THAT para manter a coerência do diálogo.
O comando <srai> pode ser usado em conjunto o comando <random>, basta  adicionar o <srai> dentro do comando <li>.


<category>
      <pattern>qual o seu nome</pattern>
      <template>
        <random>
        <li>me chamo Tecnobot. <srai> bancodados </srai> </li>
        <li>Fui batizado com o nome  Tecnobot <srai> teste2 </srai> </li>
        <li> Geralmente me chamam de Tecnobot  <srai> tema5 </srai> </li>
        </random>
      </template>
</category>

No exemplo acima além de sortear uma resposta também irá ocorrer o direcionamento para uma categoria distinta. Na primeira resposta o direcionamento ocorre para a categoria “bancodados” já na segunda resposta vai direcionar para categoria “teste2” e assim por diante.

Outra questão é o tratamento de expressões informais como gírias e abreviações. É comum em um chat escreverem “vc” em vez de você ou ainda “ksa” em vez de casa, etc.

Estas abreviações devem ser levadas em consideração na hora de preparar o chatterbot para o diálogo.

Em um chatterbot mais conservador é possível responder com uma correção sobre o que foi digitado, exemplo:

</category>  
  <pattern>onde fica sua ksa</pattern>
  <template>Parece que você tentou dizer casa <srai>casa</srai></template>
</category>

</category>
  <pattern>casa</pattern>
  <template>Minha residência é num servidor de internet</template>
</category>

No exemplo acima, o robô faz uma observação sobre a escrita correta e depois responde ao usuário.

Depois de adquirir alguma experiência é aconselhável testar novas possibilidades na disposição dos comandos e do roteiro no intuito de conhecer melhor o interpretador.

9 – Tratamento de expressões informais em alguns casos é uma das questões que deve ser trabalhada nos chatterbots, segue abaixo uma breve lista de expressões informais normalmente usadas em  Chats.

Português
Internet
Aceita
acc
Acho
axo
Adiciona
add
Ah tá
ata
Aqui
aki
Até Mais
t+, té+
Beleza
blz
Beijo
bj, bjo
Beijos
bjs, bjos
Cabeça
kbça
Comigo
cmg
Com certeza
Ctza
De
d
Demais
d+
Então   
et
É   
eh
Falou   
flw
Faz Favor
ff
Firmeza
fms, fmz
Hoje
hj, og
Mais
+
Não é, né
neh, neah
Não
ñ, n, naum
Novidade
9dade, nvd, 9da10
Oi tudo bem
8do bm
Por favor
pf; pls; plis; plz
Por quê
pq
Qualquer
qlqr, qq, qquer
Quando
qndo, qdo
Riso
rs
Sim
s, y
Também
tb, tmbm, tbm, tmb
Tchau
xau
Teclar
tc
Tudo bem
td bm, tdb
Valeu
vlw
Verdade
vdd
Você
vc, vsê, c
Vocês
v6, vcs, 6

O quadro acima apresenta algumas das expressões informais que dependendo da proposta do chatterbot devem ser inseridas, sendo aconselhável uma pesquisa pela internet o intuito de adicionar um maior numero de expressões.

Leia a sequencia deste conteúdo conforme abaixo:
01 - 02 - 03 - 04 - 05 - 06 - 07 - 08 - 09 - 10 - 11 - 12 - 13 - 14 - 15 - 16
BlogdoJSilva. Tecnologia do Blogger.