• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Kratos

[Python] [PyTeam] Inteligência Artificial - AIML

31 mensagens neste tópico

Bom dia a todos, :P

Inteligência Artificial - Chatbot

Já ouviram falar de A.I (Inteligência Artificial) ? Ok!

Provavelmente já viram algo sobre os famosos chatbots ou chatterbots.

Chatbot ou chatterbot, são programas de computador que usam da Inteligência Artificial, com o propósito de simular a habilidade de conversação de um ser humano.

Chat = sala de bate-papo.

Bot = Robô.

Então pode se dizer que chatbot, é um robô com inteligência de interagir, num ambiente de bate-papo.

Estes chatbots são usados em sala de bate-papo, para prender a atenção do usuário, são usados também, por empresas que querem que haja uma interacção mecânica (porém inteligente) do cliente com seu site, divulgando produtos, informando preços, atraindo a atenção do cliente, de modo que este pense estar teclando com algum humano.

Eles são baseados em uma rotina de 'estímulo - resposta', ou seja, você pergunta, e ele responde com base na sua pergunta. Mas não é tão simples quanto a explicação sugere, há uma rotina muito complexa por trás de tudo.

AIML - Artificial Intelligence Markup Language

Para criar um chatbot, podemos Usar Prolog, ou outra linguagem de programação em lógica, e criar um chatbot a partir do zero, mas isso não é tarefa fácil ou ainda adaptar uma versão existente de algum programa desse tipo. Tudo isso requer muito conhecimento elaborado de programação de computadores e de programação em lógica.

Porém, podemos usar uma linguagem de marcação desenvolvida para esse propósito como a Artificial Intelligence Markup Language (AIML).

A especificação da AIML encontra-se na Internet.

AIML é virtualmente independente de linguagem de programacão.

Existem inúmeros chatterbot's na internet, porém, um deles ganha destaque neste conceito, trata-se da A.L.I.C.E. Este bot ja ganhou muitos prémios por ser o mais realista possível, e é escrito em AIML.

Python e AIML = pyAIML.

Tudo que precisamos para AIML funcionar, é um processador de AIML escrito na linguagem que mais convém, no nosso caso, Python. Essa opcão permite um rápido desenvolvimento sem a necessidade de técnicos especialistas em programação e lógica.

PyAIML, é nosso motor para funcionar o bot em AIML.

Download de PyAIML: http://sourceforge.net/projects/pyaiml

Esse módulo é uma implementação de um interpretador para AIML (Artificial Intelligence Markup Language. Na página de download do módulo PyAIML baixe também as definições padrões da AIML, ou vá directo por aqui:

Download da AIML standard.

Esse arquivo de definições, é que contém a "inteligência" do robô. Apenas descompacte-o para uma pasta qualquer.

Trabalhando com pyAIML

Agora que foi resumido o que é AIML e pyAIML, vou mostrar um bot que escrevi há um tempo atrás.

Primeiro, gostaria de informar que ao fazer o bot, trabalhamos apenas com texto, como em uma sala de bate papo, veja um pequeno exemplo:

# coding: iso-8859-1 -*-
import aiml
import os

os.chdir('C:/Python24/curso/projetoAIML') # diretório que contém os arquivos da AIML standard
ai = aiml.Kernel() # inicialização
ai.learn('std-startup.xml') # lê o arquivo principal da AIML e faz referências aos outros
ai.respond('load aiml b') # faz com que os outros arquivos da AIML sejam carregados

while (1==1):
frase = raw_input('Fale algo ao bot em english:')
print "Resposta do bot: %s" % ai.respond(frase)

Ok, mas para dar mais dinamismo e impolgação ao programa, resolvi que o mesmo, deveria ter um mecanismo da fala, foi então que implantei ao mesmo a função de TSS (Text-To-Speak), da Microsoft.

Com pyTTS,

você converte texto em fala humana.

Download do PyTTS

Veja o exemplo com pyTTS:

# coding: iso-8859-1 -*-
import aiml
import os
import pyTTS
import time

tts = pyTTS.Create() # cria o motor de fala.
tts.Volume = 90 # Ajusta o Volume.

os.chdir('C:/Python24/curso/projetoAIML') # muda para o diretório que contém os arquivos da AIML

standard
ai = aiml.Kernel() # inicialização
ai.learn('std-startup.xml') # abre o arquivo principal da AIML (que faz referências aos outros)
ai.respond('load aiml b') # faz com que os outros arquivos da AIML sejam carregados

while (1==1):
frase = raw_input('Fale algo ao bot em english:')
print "Resposta do bot: %s" % tts.Speak(ai.respond(frase))

Ainda não satisfeito com o programa, percebi que ele não estaria completo sem uma interface gráfica, algo que chamaria a atenção do usuário, ou seja, que deveria ter uma aparencia realista, foi então que tive a brilhante idéia de usar os Agentes da Microsoft (MS Agents).

Veja a famosa foto de um deles:

dev_geral:merlin.gif

saiba mais sobre MS Agent's aqui

Agôra meu bot tem:

Inteligência;

Fala;

Aparência.

Então, voltando a falar de AIML

Com AIML, podemos criar um bot, capaz de aprender com os usuários que interagem com ele, isso mesmo, tem como fazer o bot aprender palavres novas e adicionalas em sua base dados.

Os arquivos AIML, são formados por tag's XML, que tem uma engine simples e facil de entender/programar. Funciona assim:

Saiba mais sobre AIML

As principais tags são:

<aiml> inicia o bloco AIML.

<category> indica uma categoria ou unidade de conhecimento.

<pattern> Indica o padrão da mensagem que será digitada pelo usuário.

<templat> indica a resposta para o que foi digitado

<random> proporciona respostas aleatórias

<li> marca bloco de respostas aleatórias é usado dentro do bloco <random>

<that> registra a ultima sentença, gerando uma seqüência no dialogo.

<srai> Redireciona para outra questão ou categoria.

exemplo de tags AIML:

<aiml>
<category>
<pattern>oi</pattern>
<template>Ola, tudo bem?</template>
</category>


<category>
<pattern>qual o seu nome?</pattern>
<template>
<random>
<li>Sou chamado de chatterbot</li>
<li>Me chamo chatterbot</li>
<li>Chatterbot</li>
<li>pode me chamar de chatterbot</li>
</random>
</template>
</category>


</aiml>

Simples !!!

Com isso, e um pouco mais de estudo sobre a Linguagem, eu pretendo criar uma pequena e expansível inteligência para o meu bot.

Eu adicionei alguns componentes da Microsoft, que fazem meu bot falar em Português, ja que por padão ele fala em inglês. Baixe-os aqui!

Obs: Vou citar aqui, mas creio que isso é óbvio Para Utilizarem os MS Agents, é preciso a manipulação da 'Component Objec Model', que é conhecida apenas por COM, ou seja, é uma plataforma da Microsoft para componentes de software lançada em 1993. Ela é usada para permitir a comunicação entre processos e a criação dinâmica de objectos em qualquer linguagem de programação que suporte a tecnologia.

Como Python te da suporte a está tecnologia (COM), através do pacote pyWin32 você pode controlar muitos objectos do Windows.

E para finalizar, o meu bot (não está totalmente pronto, é preciso arrumar o soteio da lista):

# coding: iso-8859-1 -*-
# Projeto: bot-AIMerLin
# Por: Kratos - 2007

import aiml # Carrega a Inteligência Artificial de conversação do bot
import os, sys # Para entrada e saída de dados e fechar o programa
import random # Para Sortear itens na lista
import win32com.client # Controla API do Win32 (COM)

ag = win32com.client.Dispatch("Agent.Control.2") # Declara o objecto a ser controlado (Agent's)
ag.connected = True # Conecta com o objeto

# lista de Animação do MS Agent, no caso, o Sr. Merlin.
playList =["Acknowledge","Alert","Announce","Blink","Confused","Congratulate","Congratulate_2", "Greet","Decline","DoMagic1","DoMagic2","DontRecognize","GestureDown","GestureLeft",
"GestureRigh","GestureUp","GetAttention","GetAttentionContinued","GetAttentionReturn","Greet",
"Hearing_1","Hearing_2","Hearing_3","Hide","Idle1_1","Idle1_2","Idle1_3","Idle1_4","Idle2_1",
"Idle2_2","Idle3_1","Idle3_2","LookDown","LookDownBlink","LookDownReturn","LookLeft","LookLeftBli
nk", "LookLeftReturn","LookRight","LookRightBlink","LookRightReturn","LookUp","LookUpBlink","LookUpRet
urn", "Pleased","Process","Processing","Read","ReadContinued","Reading","ReadReturn","RestPose",
"Sad","Search","StartListening","StopListening","Suggest","Surprised","Think","Uncertain",
"Uncertain","Wave","Write"]

os.chdir('C:\Python24\Curso\Meus Programas\Projetos\BotPython') # AIML standard.
ai = aiml.Kernel() # Inicialização no bot.
ai.learn('std-startup.xml') # Abre o arquivo principal da AIML (que faz referências aos outros).
ai.respond('load aiml b') # Carrega arquivos da AIML (Inteligência Artificial).

ag.Characters.Load("Merlin") # Carrega o Merlin como agent, existem inúmeros outros.
ag.Characters("Merlin").Show() # Mostra o agent.
ag.Characters("Merlin").TTSModeID = "{8AA08CA1-A1AE-11D3-9BC5-00A0C967A2D1}" # Português BR

ag.Characters("Merlin").Play(playList[7]) # Executa uma animação da lista
ag.Characters("Merlin").Speak(u"Olá, meu criador, Kratos, ainda está me ensinando a falar em português!") # Fala
ag.Characters("Merlin").Play(playList[0]) # Executa a animação da Lista.
ag.Characters("Merlin").Speak(u"Meu nome é Mérlin, qual é o seu nome?") # Fala a frase.
ag.Characters("Merlin").Speak(u"Só lembrando que a partir de agora, falarei em inglês, com sutaque Português")
ag.Characters("Merlin").Speak(u"Pois, precisam carregar meus dados AIML com informações em Português")


about = """ >>> Agente AIML Speak <<<

Digite '-q' ou nada, para sair.
Digite '-h' para minimizar.
Digite '-s' para maximizar.
Total de Animações: %s .\n""" %(len(playList))
print about

# Inicia a conversa com o bot, você pergunta, e ele responde!
while (1==1):	
try:
	youSpeak = raw_input(u"Fale algo ao bot em english: ")
	if youSpeak == "-q":
		sys.exit()
	if youSpeak == "-h":
		ag.Characters("Merlin").Hide()
	if youSpeak == "-s":
		ag.Characters("Merlin").Show()
	botSpeak = ai.respond(youSpeak)
	ag.Characters("Merlin").Speak(botSpeak)
	print
except:
	ag.connected = False
	sys.exit()		
raw_input(">>") # Serve para manter o Agent activo

Proponho aqui, um projecto, para se criar um bot (chatbot). Preciso de ajuda, pois:

1° Decidir sobre o que o Bot irá saber, sobre qual tipo de conhecimento ele terá tendência, se será só bate-papo, ou ele pode responder questões de matemática, moda, programação, dicas, etc..

2° Colectar as informações, sobre o que o bot irá saber, para escrever nas Tag's de AIML.

3° Escrever, em seus arquivos de AIML, os "estímulos" e suas respectivas "respostas"... isso sozinho vai demorar p'ra caramba, preciso de alguém para ajudar, porque sem duvida, esta parte é a mais difícil Por padrão, todas as informações do bot AIML são em inglês, então devemos reescrever tudo para Português.

Bom galera, espero que tenham gostado!

Até a próxima!

Kratos

[Artigo no Wiki]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz um bom tempo que esta off não kratos?jja vi alguns de seus codigos no darkers,o tutorial ficou bem explicativo parabens

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui dá erro.

Traceback (most recent call last):

  File "C:\Documents and Settings\Proprietário\Ambiente de trabalho\bot.py", line 8, in <module>

    import win32com.client # Controla API do Win32 (COM)

ImportError: No module named win32com.client

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui dá erro.

Traceback (most recent call last):

  File "C:\Documents and Settings\Proprietário\Ambiente de trabalho\bot.py", line 8, in <module>

    import win32com.client # Controla API do Win32 (COM)

ImportError: No module named win32com.client

Amigo, :) ...

Neste caso, o erro se dá, pelo fato, de você não ter instalado no seu sistema, o pacote pyWin32.

Download: AQUI

Importante você usar o Windows, para funcionar o MS Agent.

Kratos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu uso Windows e tu não dizes que é preciso o pyWin32... quando se deu o erro pensava que win32com.client era mesmo do Windows e não uma coisa externa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu uso Windows e tu não dizes que é preciso o pyWin32... quando se deu o erro pensava que win32com.client era mesmo do Windows e não uma coisa externa.

Pois é amigo, se trata de uma Lib extra do Python e não do Windows, até pq o Python por si só, não chama funções da API do Windows !

faz um bom tempo que esta off não kratos?jja vi alguns de seus codigos no darkers,o tutorial ficou bem explicativo parabens

Darkers.. pois é ... no coment''s

Off pq eu estava a procura de um exelente forum, como este !

abraço

Kratos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito boa a explicação!!!  :D

Sempre tive curiosidade em assuntos de Inteligencia artificial...  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um reparo que só reparei agora:

os.chdir('C:\Python24\Curso\Meus Programas\Projetos\BotPython') # AIML standard.

Essa linha não está bem. Ou se usa o r antes da plica, ou se faz escape das \ (com o \), ou usa-se / em vez de \. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi amigo,

Estou com uma duvida tentei baixar os arquivos abaixo, só que na hora de instalar, da a seguinte informação: ex: No Python installation found in the registre.

PyAIML-0.8.5.win32

pyTTS-3.0.win32-py2.5

pywin32-213.win32-py2.3

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi amigo,

Estou com uma duvida tentei baixar os arquivos abaixo, só que na hora de instalar, da a seguinte informação: ex: No Python installation found in the registre.

PyAIML-0.8.5.win32

pyTTS-3.0.win32-py2.5

pywin32-213.win32-py2.3

Você deve instalar o Python em seu sistema !!!

recomendo o Python26 (versão 2.6)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais uma pergunta, essas instalações funcionam no Windows Vista?

Python26 (versão 2.6)

PyAIML-0.8.5.win32

pyTTS-3.0.win32-py2.5

pywin32-213.win32-py2.3

Obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Amigo, consegui instalar o python-2.6, PyAIML-0.8.5.win32.

Mas os outros 2 não pywin32-213.win32-py2.3, pyTTS-3.0.win32-py2.5, da a seguinte mensagem: Python version 2.5 required/ which was not found in the registry.

Obrigada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens de ter o 2.5 mas visto que já tens o 2.6 penso que ja nao seja preciso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom...

A versão mais recente do PyTTS que é a 3.0 só tem suporte a VM-Python 2.5

Porem, não é necessário esta lib.

Agôra a lib que você teve usar nesta aplicação é esta: PyWin32-py2.6

Então recomendo que você instale mesmo, a versão 2.6 do Python: AQUI (No item download escolha o O.S)

qualquer coisa: MSN: eu_mesmoSP@hotmail.com

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:eek:Vamos lá tenho que fazer um Chatterbot de entreterimento...

:rant_01:Esse é o meu tcc aiaiaia, não sei por onde começar, preciso muito da sua ajuda, vou te add no msn. :wallbash:

Tudo bem?

Pode me add... estou a disposição !!!

MSN: eu_mesmoSP@hotmail.com

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pra começar se eu instalar o Python 3.0.1

Tenho que instalar:

PyAIML

pyTTS

pywin32

Para o meu Chatterbot funcionar?

Se sim. Quais as versões compatíveis com o Python 3.0.1?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pra começar se eu instalar o Python 3.0.1

Tenho que instalar:

PyAIML

pyTTS

pywin32

Para o meu Chatterbot funcionar?

Se sim. Quais as versões compatíveis com o Python 3.0.1?

Não, não.... Python 3.0.1 não, esta versão não suporta as libs para o chatbot.

Instala a versão Python 2.6, como eu disse acima, e não precisa do PyTTS, somente do Pywin32-py26

Ok ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aqui no serviço, não posso usar msn, mas te add quando chegar em casa...

kakaka não aguenta mais as minhas perguntas né...

mas já instalei os 2 que você falou Python 2.6 e do Pywin32-py26.

Obrigada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queria saber como faço para executar um arquivo aiml que eu criei,pq tentei e ele so carrega os arquivos aiml standart.

Valeus

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora