Mudanças entre as edições de "Chatbots"

De Aulas
 
Linha 6: Linha 6:
 
* [https://{{SERVERNAME}}/aulas/ia/chatbot/Chatbots_Apresentacao.pdf Aula de Chatbots - Slides]
 
* [https://{{SERVERNAME}}/aulas/ia/chatbot/Chatbots_Apresentacao.pdf Aula de Chatbots - Slides]
 
* [https://{{SERVERNAME}}/aulas/ia/chatbot/aiml.zip Arquivos de exemplos básicos em AIML]
 
* [https://{{SERVERNAME}}/aulas/ia/chatbot/aiml.zip Arquivos de exemplos básicos em AIML]
* [https://{{SERVERNAME}}/aulas/ia/chatbot/pyAIML.zip PyAIML.zip]
+
* [https://github.com/weddige/pyaiml3 PyAIML3]
 
* [https://{{SERVERNAME}}/aulas/ia/chatbot/chatbot.py chatbot.py]
 
* [https://{{SERVERNAME}}/aulas/ia/chatbot/chatbot.py chatbot.py]
 
* [https://github.com/saulopz/Acaro Ácaro]: um exemplo simples de chatbot.
 
* [https://github.com/saulopz/Acaro Ácaro]: um exemplo simples de chatbot.
 +
 +
; Código do chatbot
 +
 +
<syntaxhighlight lang=python line>
 +
import sys
 +
import aiml
 +
 +
kb = sys.argv[1]
 +
 +
k = aiml.Kernel()
 +
k.learn(kb)
 +
#k.respond("load aiml b")
 +
while True: print(k.respond(input("> ")))
 +
</syntaxhighlight>
  
 
= Instalando o Plugin do RebeccaAIML no Eclipse =
 
= Instalando o Plugin do RebeccaAIML no Eclipse =

Edição das 17h03min de 16 de março de 2022

Assuntos relacionados: Inteligência Artificial

Material Didático

Código do chatbot
1import sys
2import aiml
3
4kb = sys.argv[1]
5
6k = aiml.Kernel()
7k.learn(kb)
8#k.respond("load aiml b")
9while True: print(k.respond(input("> ")))

Instalando o Plugin do RebeccaAIML no Eclipse

  1. Fazer o download do Plugin do RebeccaAIML para o eclipse;
  2. Descompactar o arquivo zipado;
  3. Copiar os arquivos JAR para a pasta plugin do eclipse;

AIML

O AIML (GNU GPL) é uma linguagem baseada em XML para chatbots desenvolvida em 1995 para o A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) por Richard Wallace.

As regras das pequenas entidades são compostas de duas partes: condição e ação. Caso as condições forem satisfeitas, a ação é executada. No caso de mais de uma regra terem suas condições satisfeitas, temos um conflito. Neste caso, o interpretador precisa ter uma estratégia para resolver esses conflitos.

As tags mais importantes de um documento AIML são:

  • <aiml>: inicia e termina um documento AIML;
  • <category>: marca uma unidade de conhecimento;
  • <pattern>: contem um padrão simples que pode fechar com o que o usuário fala ou digita;
  • <template>: contem a resposta para uma entrada do usuário.

Documento Simples - Hello World

1<aiml>
2	<category>
3		<pattern>OLA</pattern>
4		<template>Olá, como vai você?</template>
5	</category>
6</aiml>

Tag star ou Curinga

Uma condição pode conter um curinga, ou carácter * em seu padrão

1<category>
2	<pattern>MEU NOME E *</pattern>
3	<template>É um prazer conhecer você, <star/>.</template>
4</category>

Há também o curinga "_". Uma diferença é que este é tratado preferencialmente pelo motor, ou seja, serão tratados primeiro. Outra coisa, por enquanto, basta saber que usa-se "_" quando é importante o que o usuário diz e "*" quando não é.

O curinga também pode ser utilizado para pegar todas as entradas de usuário que não fecharam com nenhuma regra:

1<category>
2	<pattern> * </pattern>
3	<template>Eu não entendo.</template>
4</category>

Tag srai

Muitas vezes, a mesma pergunta do usuário pode ser feita de formas diferentes, mas devem ser tratadas da mesma maneira. Nesses casos, a tag srai pode ser utilizada para se referir a outra regra.

 1<category>
 2	<pattern>COMO EU CHEGO AO SUPERMERCADO?</pattern>
 3	<template>Siga pela avenida principal e vire a primeira rua a direita.</template>
 4</category>
 5
 6<category>
 7	<pattern>COMO EU CHEGO A UNIVERSIDADE?</pattern>
 8	<template>Siga pela rua principal por aproximadamente 2km.</template>
 9</category>
10
11<category>
12	<pattern>QUAL O CAMINHO ATE *</pattern>
13	<template><srai>COMO EU CHEGO <star/></srai></template>
14</category>

Ações Randômicas

Uma regra também pode ter respostas randômicas:

 1<category>
 2	<pattern>COMO VAI VOCE?</pattern>
 3	<template>
 4		<random>
 5			<li>Vou bem, obrigado.</li>
 6			<li>Tudo bem..</li>
 7			<li>Tudo em ordem. Agradeço muito por perguntar.</li>
 8			<li>Muito bem, e você?</li>
 9		</random>
10	</template>
11</category>

Variáveis Globais

A linguagem AIML permite a utilização de variáveis globais que podem ser utilizadas nas regras.

1<category>
2	<pattern>MEU NOME E *</pattern>
3	<template>É um prazer te conhecer, 
4		<set name="userName"><star/></set>.
5	</template>
6</category>

A utilização da tag <think> funciona como no exemplo anterior, mas previne que as informações sejam exibidas juntamente com a resposta.

1<category>
2	<pattern>MEU NOME E *</pattern>
3	<template>É um prazer te conhecer.
4		<think><set name="userName"><star/></set></think>
5	</template>
6</category>

Usando variáveis globais em condições

O valor de uma variável global pode ser utilizado para testes.

1<category>
2	<pattern>VOCE GOSTARIA DE DANCAR COMIGO?</pattern>
3	<template>
4		Claro, será um prazer.
5		<condition name="userName" value="">
6			Você poderia me dizer seu nome?
7		</condition>
8	</template>
9</category>

Utilizando Contextos

A linguagem AIML permite a utilização de contextos, ou tema, por meio da tag <topic>. As regras podem ser agrupadas conforme um contexto específico.

 1<category>
 2	<pattern>POSSO COMPRAR UMA PASSAGEM DE AVIAO?</pattern>
 3	<template>Sim.</template>
 4</category>
 5
 6<category>
 7	<pattern>POSSO COMPRAR UMA PASSAGEM PARA * ?</pattern>
 8	<template>Sim, você pode.
 9		<think>
10			<set name="userDestination"><star/></set>
11			<set name="topic">PAGAMENTO</set>
12		</think>
13		<srai>COMO POSSO PAGAR?</srai>
14	</template>
15</category>
1<topic name="PAGAMENTO">
2
3	<category>
4		<pattern>COMO POSSO PAGAR?</pattern>
5		<template>Você pode pagar em dinheiro ou cartão de crédito.</template>
6	</category>
7
8</topic>

Tag that

Interpretadores

Python AIML

sudo apt-get install python-aiml

Links

  • Riverscript Uma plataforma em python para testar um chatbot AIML.