Como fazer um chat com inteligência artificial

Notícias, idéias, tutoriais, dicas, etc...
Avatar do usuário
Xevious
Administrador
Administrador
Mensagens: 9578
Registrado em: 28 Abr 2009, 01:12
Fale sobre voce: Sou feito de atomos
Gender:
Brazil

Como fazer um chat com inteligência artificial

Mensagempor Xevious » 20 Jul 2012, 02:12

Simuladores de diálogos são softwares que utilizam linguagem natural na forma escrita, geralmente através de um Chat para dialogar com os usuários.

A proposta do simulador é criar a sensação de conversa em um ou mais humanos através de um software devidamente programado para tal tarefa. Neste sentido, o chatterbot imita diversos aspectos de uma pessoa conversando em um chat.

O termo Chatterbot é uma união das palavras chatter (pessoa que conversa) e bot (abreviatura de robô). Neste sentido o termo Chatterbot pode ser entendido como sendo um software que conversa com as pessoas, também é usado com o mesmo sentido, o termo chatbot.

Chatterbots como Adele e Steve foram empregados em sistemas de ensino à distância, respondendo dúvidas dos estudantes e efetuando demonstrações sobre o uso do próprio ambiente virtual.

Outro exemplo é o Chatterbot Einstein desenvolvido pela empresa Artificial Life3 para ensinar física ou ainda o Chatterbot brasileiro Elektra desenvolvido pelos pesquisadores da UFRGS.

No comércio, lojas usam de chatterbots para atender os clientes on-line ou divulgar seus produtos em diálogos simulados.

Este é o caso do Chatterbot Anna que atende os clientes da empresa portuguesa Ikea ou ainda, o Chatterbot Susan que responde às perguntas dos utilizadores do site Whommunity. Outro Chatterbot bem humorado que dá dicas de saúde e alimentação é o Eaton.

No Brasil o mais popular entre os simuladores de diálogo é o ED desenvolvido com recursos da Petrobras e focado em diálogos sobre energia e meio ambiente.

Aqui tem um tópico sobre o Robo ED

Existem duas modalidades de estudo sobre chatterbots com roteiros em AIML, uma é destinada ao atendimento e suporte para usuários, estes são chamados de atendentes virtuais, a outra categoria é focada na pesquisa e desenvolvimento de Chatterbots capazes de imitar a emoção e comportamento humano.

No entanto, ainda não se conseguiu chegar ao nível de desenvolvimento que permita um chatterbot simular com precisão emoções humanas em diálogos consistentes.

Os simuladores que funcionam de forma eficiente são os atendentes virtuais, ferramentas que simulam diálogos curtos e consistentes o suficiente para transmitir uma determinada orientação de forma agradável.

O acesso ao mundo virtual é cada vez maior e muitas empresas oferecem suporte para seus produtos através da internet, cursos on-line também é realidade crescente e a necessidade de inovação com foco educacional cresce proporcionalmente.

Em alguns paises existe uma gama de empresas especializadas na construção de chatterbots, no Brasil existem algumas espresas especializadas no assunto, como é o caso da empresa Insite, que desenvolveu entre outros, os chatterbots ED para Petrobras e Sete Zoom para Close-up.

A origem dos chatterbots

Eliza, desenvolvido por Joseph Weizenbaum em 1966 e apelidado por alguns de “terapeuta” foi o primeiro chatterbot bem sucedido, tornando-se o marco inicial no desenvolvimento dos simuladores de diálogos.

Na ocasião o chatterbot Eliza impressionou devido ao fato das pessoas que conversaram com o robô saírem do diálogo convencidas que este era capaz de compreender. Este efeito que o software Eliza produziu nas pessoas surpreendeu os pesquisadores da época, motivando uma série de estudos.

O software Eliza foi desenvolvido tendo como pano de fundo a psicanálise com base nas teorias do psicólogo Carl Rogers, onde o terapeuta deve acolher o mundo particular do cliente assumindo como se fosse o seu próprio mundo. Esta conexão ou acolhimento estimula no paciente um caminho para reorganização da compreensão. Consiste basicamente em um ato de escuta e estimulo ao diálogo por parte do terapeuta, sem que este assuma um juízo ou tente explicar as ações do paciente.

Através de um conjunto reduzido de expressões em aproximadamente 204 linhas, Eliza conseguia estimular uma investigação sobre o assunto abordado, veja um exemplo abaixo:

Usuário: Os homens são todos iguais.
Eliza: De que maneira?

Usuário: Eles estão sempre incomodando-nos sobre uma coisa ou outra.
Eliza: Você consegue pensar em um exemplo específico?

Usuário: Bem, meu namorado me fez vir aqui.
Eliza: Fico pesaroso pelo fato de você estar triste.

Usuário: É verdade. Eu sou infeliz.
Eliza: Isso tem algo a ver com o fato de seu namorado te fazer vir aqui?


Na construção do diálogo acima o chatterbot Eliza devolve ao interlocutor as questões colocadas dando a sensação de compreensão, embora a ferramenta seja incapaz de contextualizar sentenças.

Para cada expressão do usuário Eliza efetuava uma busca seqüencial por grupos de palavras estratégicas em uma tabela. A saída então era montada tendo como resposta um roteiro previamente inserido em cada grupo das palavras-chave.

O método de funcionamento do Eliza foi inspiração para surgimento dos sistemas populares de chatterbots baseados em AIML e também para organização e lançamento da fundação A.L.I.C.E.

Depois do sucesso do chatterbot Eliza, muitos desenvolvedores se inspiraram e surgiram várias experiências com confecção de chatterbots tendo como principal objetivo consolidar uma linguagem específica para os simuladores.

Em 1995 Richard S. Wallace na Lehigh University projetou o A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) cuja base de conhecimento foi em linguagem AIML.

A.L.I.C.E. É atualmente reconhecida como a principal organização não governamental de divulgação e estudo sobre chatterbots.

O padrão AIML é uma linguagem projetada para a criação de estímulo-resposta onde o usuário insere uma expressão e o simulador reage respondendo ao que foi digitado. O que torna fácil a criação dos roteiros para o diálogo simulado e o uso deste sistema sem a necessidade de avançados conhecimentos computacionais.

Para que um chaterbot funcione é necessário um interpretador da linguagem AIML. O interpretador lê o roteiro escrito em AIML e executa as funções conforme programado. O termo AIML é uma sigla para Artificial Intelligence Markup Language.

Basicamente um chatterbot se divide em interpretador e roteiro. Para criar um interpretador é necessário sólido conhecimento em programação, já o roteiro em AIML permite a personalização do robô sem a necessidade de conhecimentos avançados.

Existem diversos interpretadores gratuitos disponíveis na internet e a linguagem AIML é muito fácil de trabalhar, permitindo que pessoas interessadas no assunto possam personalizar um robô sem a necessidade de conhecimentos em computação.

Os roteiros em aiml precisam ser interpretados por um aplicativo específico que consegue ler uma determinada instrução e executar a orientação ali descrita.

Para se enviar um comando ao interpretador é necessário sinalizar as instruções em um determinado padrão que o interpretador reconheça.

O Browser de internet, por exemplo, é um interpretador de comandos que lê o padrão de linguagem da internet. Para visualizar uma página de internet é necessário um interpretador como o internet explorer, firefox, crhome, etc.

O primeiro passo para personalizar um simulador de diálogo é baixar um interpretador para simuladores de diálogo, também denominado de chatterbot.

Para um primeiro contato é aconselhável o interpretador que pode ser baixado em: http://jeferson.silva.nom.br/interpretadorAIML.zip

Após baixar este interpretador e descompactar, acesse a pasta interpretadorAIML e clique no arquivo chatterbot.exe

Imagem

Irá abrir um Chat semelhante á imagem abaixo:

Imagem

Digite oi e o robô irá responder, “oi, tudo bem?”

Digite “vai chover hoje” e a resposta será “Ainda não recebi a previsão do tempo”.
Se o robô responder as duas questões acima, parabéns!

Manuseando o interpretador

Abra em um editor de texto de sua preferência o arquivo teste.aiml que está no diretório example ao lado do arquivo chatterbot.exe e escreva a seguinte instrução:

<aiml>
<category>
<pattern>bom dia</pattern>
<template>Melhor agora que estou teclando com você</template>
</category>

Uma vez adicionado o roteiro acima, salve o arquivo teste.aiml. Feche o interpretador e abra-o em seguida. Este procedimento é necessário para atualizar o robô com as novas instruções.

Quando abre na tela o chatterbot.exe o interpretado vasculha a pasta exemple e carrega na memória as orientações ali inseridas. Se o chat estiver sendo usado e um novo arquivo for inserido na pasta example, o interpretador só vai ler o arquivo e suas respectivas instruções na próxima vez que o chatterbot.exe for acionado.

Principais comandos e estruturas I

Para programar a personalidade do chatterbot é preciso conhecer como inserir o roteiro de forma que o interpretador possa reconhecer as instruções.


A tradução para o significado da sigla AIML é “Linguagem de Marcação de Inteligência Artificial”. Cada evento é marcado com uma indicação de inicio e fim através dos símbolos <> e </> que são denominados de Tags ou marcadores.

Inicio da Tag ou marcação: <comando>
Fim da Tag ou marcação: </comando>

Por isso que é chamado de linguagem por marcação.

A instrução de diálogo inicia dentro de uma categoria. O marcador categoria <category> é o comando que sinaliza um diálogo através de uma entrada e uma saída de texto. A entrada do texto ocorre através do interlocutor humano e a saída consiste na resposta do robô.

Basicamente um diálogo é formado por uma série de categorias compostas de entrada e saída, conforme exemplo abaixo:

<category>
<pattern>Texto digitado</pattern>
<template>Resposta do robô</template>
</category>

Código de instruções em AIML

<category>
<pattern>oi</pattern>
<template>olá, tudo bem?</template>
</category>

Seqüência do diálogo

Usuário: oi

Robô: olá, tudo bem?

possível criar complexos diálogos usando apenas os comandos descritos acima, no entanto, seria muito trabalhoso simular um comportamento mais humano apenas com estes comandos.

Uma das características humanas consiste em conversarmos usando diversas formas de expressões para uma mesma afirmação ou pergunta. Hoje respondemos de uma forma e amanhã de outra, sem mudar o significado das respostas. Um chatterbot que responde sempre da mesma forma é monótono e pouco atrativo.

Código de instruções em AIML

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

Seqüência do diálogo




Usuário: qual o seu nome

Robô: Fui batizado com o nome Tecnobot

Cada expressão dentro de uma marcação <li> </li> é entendida como disponível para sorteio. O interpretador escolhe aleatóriamente uma resposta entre as opções disponíveis dentro do bloco<random> seguido da marcação <li>.

Além de conseguir responder com diversas expressões o simulador precisa manter a conexão com o assunto e guardar temporariamente alguns detalhes da conversa. Essas duas características trazem maior eficiência ao simulador aproximando ele do comportamento humano.

Uma destas características relacionadas com a memória temporária é o comando <set name=”X”> Onde “X” é uma palavra qualquer que represente uma dada informação.

O simbolo * denominado de estrela é um comando que captura qualquer coisa digitada em uma expressão conforme sua posição. Também é chamado de coringa.

No exemplo acima, qualquer coisa digitada depois da expressão “meu nome é” vai ser capturada pela estrela e guardada através do comando set.

Observe que dentro do comando <set></set> está o nome star que significa estrela em inglês e se refere á estrela * que está logo após a expressão “meu nome é”.

O comando <set name=”nome”><star/></set> pode ser traduzido como a seguinte instrução:“pegar o que está na estrela e guardar na variável nome”.

Em programação aiml a estrela * pode ser inserida em qualquer posição de um texto de entrada, capturando uma palavra ou expressão digitada pelo usuário.

Quando capturado em uma estrala * o que é digitado, é possível decidir o que fazer com o conteúdo, podendo ser guardado como no exemplo acima ou ignorado.

É possível falar de algo cujo resultado seja genérico, por exemplo, um diálogo sobre o ódio pode iniciar com uma afirmação do tipo “odeio carros” ou “odeio bicicletas” ou ainda “odeio praias”, etc.

Independente do que é odiado, o robô poderia responder algo do tipo, “o ódio é ruim para a qualidade de vida”. Neste tipo de resposta o que se odeia pode ser ignorado.

Um script possível para um diálogo generalizado é adquirido com o uso de estrela * nas palavras ou expressões que podem ser descartadas, funcionando como um filtro no diálogo.

Código de instruções em AIML

<category>
<pattern>odeio *</pattern>
<template>o ódio é ruim para a qualidade de vida</template>
</category>

Seqüência do diálogo

Usuário: odeio chuva

Robô: o ódio é ruim para a qualidade de vida

No exemplo acima, não importa o que é digitado após a expressão odeio. O robô só identifica o termo odeio e ignora o resto, respondendo de forma genérica.





Uma vez capturado em uma estrela * o que é digitado podemos decidir ignorar ou através do comando set, guardar. E para mostrar na tela o que foi guardado, se usa o comando get.

SET = Guarda/Captura GET = Mostra/Imprime na tela


É possível ocorrer em meio ao diálogo perguntas do tipo, “você lembra meu nome” ou “você sabe o que mais me irrita” ou ainda “sobre o que estamos falando mesmo” e o simulador poderia se previamente programado, mostrar que lembra de algumas das questões apresentadas.

Este tipo de estratégia também auxilia na sensação de interação entre homem e máquina além de deixar o diálogo mais consistente e agradável.

É neste tipo de ocorrência que o comando get se destaca.

Código de instruções em AIML

<category>
<pattern>Meu nome é *</pattern>
<template>Muito prazer, <set name=”nome”><star/></set></template>
</category>

Seqüência do diálogo

Usuário: Meu nome é jeferson

Robô: Muito prazer, jeferson

No exemplo acima o comando get mostra na tela o que estava guardado na memória da variável nome, capturada em diálogo anterior.

Observe que o comando get difere de outros comandos, ele não apresenta a tag de inicio e fim. É um comando que abre e fecha dentro da mesma tag através da barra no final. <get name=”nome”/>


O comando <get name=”nome”/> pode ser traduzido como a seguinte instrução: “imprima a variável nome na tela”.

É possível usar os comandos SET e GET para coletar e mostrar qualquer informação. Veja abaixo outro exemplo:

<category>
<pattern>eu tenho * anos</pattern>
<template>Um dia eu também farei<set name=”idade”><star/></set> anos</template>
</category>

Usuário: eu tenho 18 anos

Robô: Um dia eu também farei 18 anos

Existem diálogos onde é preferível não mostrar a informação capturada pelo comando SET. O comando SET no momento em que guarda uma informação apresenta ela na tela.

Para evitar que uma informação seja mostrada na tela no momento em que é armazenada, se usa o comando THINK.

Código de instruções em AIML

<category>
<pattern>Eu nasci em *</pattern>
<template>Obrigado pela informação.
<think><set name=”naturalde”><star/></set></think>
</template>
</category>

Seqüência do diálogo


Usuário: Eu nasci em Porto Alegre

Robô: Obrigado pela informação.

No exemplo acima, a informação é guardada na variável “naturalde” sem apresentar na tela o que foi digitado. Se não fosse aplicado o comando THINK para ocultar a expressão “Porto Alegre” ela apareceria na seqüência da frase ficando assim: “Obrigado pela informação. Porto Alegre”.

Além da memória temporária um chatterbot eficiente precisa manter uma conexão coerente com o assunto central do diálogo. Sem esta conexão a conversa pode ficar confusa, sem sentido.

Alguns comandos de conexão possuem como objetivo facilitar ao programador a criação do roteiro que o simulador irá simular, em outros casos, o principal objetivo consiste em criar certos mecanismos de tomada de decisão com base em critérios previamente configurados.

É comum nos diálogos entre humanos uma mudança de postura conforme certos critérios sobre o que se está debatendo. Um interlocutor pode ter uma opinião desfavorável sobre um determinado comportamento generalizado e assumir uma postura favorável sobre o mesmo tema em uma situação contextualizada.

Por exemplo, alguém contra a violência pode assumir uma postura favorável em caso de legitima defesa. Dependendo da contextualização e de certos critérios é comum pessoas possuírem opiniões diferentes para um mesmo tema.

Manter ou mudar de postura conforme a diálogo vai sendo contextualizado é uma tarefa desempenhada pelos comandos de conexão.

Código de instruções em AIML

<category>
<pattern>faça uma pergunta</pattern>
<template>você é favorável ao desarmamento</template>
</category>

Seqüência do diálogo

Usuário: faça uma pergunta

Robô: você é favorável ao desarmamento

Cada possível entrada dos usuários precisa ser inserida no simulador e o ideal é garantir uma seqüência de respostas aleatórias para dar mais interatividade ao robô.

Uma forma de programar o simulador é criar para cada possível entrada uma categoria, exemplo:
<category>
<pattern>olá</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>

Para facilitar é possível criar as diversas categorias e apontar elas para uma única fonte de resposta.

Código de instruções em AIML

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

Seqüência do diálogo



Usuário: oi

Robô: que bom, alguém para conversar

No exemplo acima o comando srai direciona para uma categoria específica onde ocorrerá a resposta do robô. Desta forma, se for necessário mudar alguma coisa ou adicionar mais respostas para escolha aleatória, basta mudar em um único lugar.

O comando <srai></srai> pode ser traduzido como a seguinte instrução: “Vá para categoria X”.

Com o uso do srai o programador economiza em tempo de inserção uma vez que reduz a quantidade de roteiros repetidos.




No caso de simuladores com muitos roteiros pode ocorrer uma diminuição do tempo de resposta do robô devido ao grande número de categorias que precisam ser consultadas.

Imagine um simulador com 20.000 simulações de entrada e saída de textos, ou seja, 20.000 categorias. Cada vez que um usuário digita um texto o interpretador precisará percorrer um grande número de categorias até encontrar o diálogo referente.

Isso pode fazer com que o interpretador fique lento e pouco funcional.

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>

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: contato@jeferson.silva.nom.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 – Para trocar idéias e experiências com outros desenvolvedores em AIML, participe do grupo de discussão sobre o assunto enviando e-mail para: simuladoraiml+subscribe@googlegroups.com

8 – 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>

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.

Aceita => acc
Adiciona => add
Até Mais => t+, té+

Publicando seu chatterbot

Postado por: Jeferson Silva
A maioria dos portais para hospedagem de roteiros aiml não oferecem instruções em língua portuguesa e isso pode dificultar para o iniciante.


O pandorabots.com oferece um painel de administração que é fácil de manusear e com algumas orientações em português.

O primeiro passo consiste em acessar o site http://www.pandorabots.com e clicar no menu de cadastro para criar sua conta de hospedagem do chatterbot. Clique em Account Sign-up para abrir o formulário de cadastro.

Imagem

Depois de se cadastrar efetue login no site do pandorabots e clique no menu “Criar” para adicionar seu chatterbot. No formulário adicione o nome do seu robô e marque o campo “Nenhum conteúdo inicial” e clique em “Criar um pandorabot”.

Imagem

Ao marcar outras opções será inserido um roteiro em inglês ou alemão podendo dificultar o desempenho do seu ChatBot.

Depois de criado o chatterbot é hora de enviar os roteiros em aiml para o servidor. Clique no meno AIML e depois no botão “enviar arquivo”. Escolha os arquivos aiml que deseja enviar e clique no botão “Upload”

Imagem

Não marque a opção “converter textos para aiml”. Esta é uma opção disponível para língua inglesa quando se pretende enviar um texto e o sistema tentar converter em aiml.

Um vez enviado os arquivos aparecerá uma tela semelhante a imagem abaixo, permitindo deletar, editar ou efetuar download do arquivo aiml.

Imagem

Para editar o roteiro clique sobre o nome do arquivo, modifique os comandos e roteiros de sua preferência e clique no botão “Salvar” sem modificar o nome do arquivo.

Depois de enviar os arquivos aiml para o servidor é aconselhável verificar se o reteiro está funcionado sem problemas. Para esta tarefa o pandorabots disponibiliza uma ferramenta de análise de roteiro.

Clique no menu “Explorar” e irá aparecer uma tela mostrando no caso de erros, onde estes estão.

Imagem

Onde encontrar Mais informações

http://homepage.univie.ac.at/stefan.stieger/dip/
http://products.instantmessagingplanet. ... cent1.html
http://www.chatbots.org/developer/msn/
http://www.deanlee.cn/technology/i-have ... alice35cn/
http://www.messengerfreak.com/chat_bots.php
http://www.nukesoft.org/javabot2.shtml
http://www.codeproject.com/KB/vbscript/ ... izard.aspx

CHATTERBOT BRASILEIRO:
Lista dos principais chatterbots brasileiros.

http://botmaster.no.comunidades.net/index.php
http://demo.vhost.pandorabots.com/pando ... 0fae360118
http://penta3.ufrgs.br:2002/
http://www.adsdigital.com.br/ad/ads/index.php
http://www.ed.conpet.gov.br/br/converse.php
http://www.inbot.com.br/sete/
http://www.nitrix.byhost.com.br/index2.php

CÓDIGO ABERTO PARA PROGRAMADORES
Principais locais que oferecem acesso ao código fonte do aplicativo:

http://www.alicebot.org/downloads/
http://members.fortunecity.com/ikarydis/
http://softblue.tripod.com/chompy_home_page.htm
http://www.uib.no/People/hhiso/eliza.html
http://sourceforge.net/projects/nicole/
http://www.semaine-project.eu/
http://www.verbots.com/

HOSPEDAGEM DE AIML:
Locais que permitem hospedar o chatterbot

http://www.pandorabots.com
http://www.chatbots.org
http://www.ai-buddy.com
http://www.a-i.com
http://www.runabot.com
http://www.aipioneer.com
http://www.personalityforge.com
http://www.sitechatters.com
http://www.zabaware.com
http://www.jabberwacky.com
http://www.ysalaya.org

DOWNLOADS E PROJETOS:
Onde baixar aplicativos e ferramentas para desenvolver chatterbots

http://www.nitrix.byhost.com.br/
http://www.agentland.com/
http://www.a-i.com/show_tree.asp?id=140 ... 2&root=115
http://faizulwahid.tripod.com/alimbot/
http://desktopmates.com/AI/answerpad.html
http://my.att.net/p/s/community.dll?ep= ... d=64066&ck
http://users.auth.gr/~dkaras/
http://babelproject.com/
http://www.brainhat.com/
http://deepti.rohitkumar.net/
http://sourceforge.net/projects/ebba/
http://ector.sourceforge.net/
http://innerpeace.org/
http://www.jeeney.com/default.aspx?page=home
http://sourceforge.net/projects/megahal/files/
http://www.abhisoft.net/mass/
http://registry.dfki.de/
http://www.tacticalneuronics.com/
http://virtualwoman.net/
http://www.paoloentertainment.com/software/main.htm

Fonte e mais informações: http://www.tecnociencia.inf.br
Conheça o site Tele-Tudo e compre o que precisar, por tele-entrega


Avatar do usuário
Xevious
Administrador
Administrador
Mensagens: 9578
Registrado em: 28 Abr 2009, 01:12
Fale sobre voce: Sou feito de atomos
Gender:
Brazil

Re: Como fazer um chat com inteligência artificial

Mensagempor Xevious » 24 Out 2017, 21:19

Nesta atualização vou mostrar como fazer um chatbot para o Telegram.

O material foi criado pelo usuário @aprendizador do telegram


Criar bot no Telegram usando PHP

Imagem

Primeiro crie seu bot através do BotFather, para isso use o Comando /newbot e logo em seguida mande o nome e depois o nome de usuários do bot que de terminar com a palavra bot, se tudo acontecer como esperado você receberá seu Token API que é neste formato 12345:abcdefghijklmnoprstuvwxyz, agora que o bot está criado você pode colocar a imagem, o sobre, a descrição e muito mais. Agora vamos para a configuração.

Vamos criar um bot de exemplo simples que quando é iniciado dá uma mensagem de boas vindas com o primeiro e último nome do usuário e com o Username e nas demais mensagens apenas às repete, para isso vamos criar uma pasta com um nome secreto em seu site (seu site deve ser HTTPS), não tem um site ou seu site não é HTTPS crie um site com hospedagem e domínio gratuitos na 000webhost e crie uma pasta secreta dentro do public_html e crie um arquivo chamado index.php e cole o seguinte código nele. Aproveite e use nosso bot para receber novos artigos nossos diretamente em seu Telegram @aprendizador_bot

Código: Selecionar todos

<?php
define('BOT_TOKEN', '<!--TOKEN API-->');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
function apiRequestJson($method, $parameters) {
  $parameters["method"] = $method;
  $handle = curl_init(API_URL);
  curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($parameters));
  curl_setopt($handle, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  curl_exec($handle);
  curl_close($handle);
  return true;
}
function processMessage($message) {
  $message_id = $message['message_id'];
  $chat_id = $message['chat']['id'];
  if (isset($message['text'])) {
    if ($message['from']['username']!=='') {
      $name['user'] = ' (@'.$message['from']['username'].') ';
    }
    else{
      $name['user'] = '';
    }
    $name['first'] = $message['from']['first_name'];
    $name['last'] = $message['from']['last_name'];
    $text = $message['text'];
    if (strpos($text, "/start") === 0) {
      apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Seja bem vindo (a) '.$name['first'].' '.$name['last'].$name['user'].' mande qualquer mensagem para que possemos repetir'));
    }
    else{
      apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => $text));
    }
  }
  else {
    apiRequest("sendMessage", array('chat_id' => $chat_id, "text" => 'Mande apenas mensagens de texto.'));
  }
}
$content = file_get_contents("php://input");
$update = json_decode($content, true);
if (isset($update["message"])) {
  processMessage($update["message"]);
}
?>

Código sob licença CC BY 4.0


E substitua <!--TOKEN API--> no código acima pelo seu TOKEN API que você recebeu quando criou o bot e para finalizar acesse esta url https://api.telegram.org/bot<!--TOKEN API-->/setWebhook?url=<!--URL DO ARQUIVO index.php --> substituindo <!--TOKEN API--> pelo seu TOKEN API que você recebeu quando criou o bot e <!--URL DO ARQUIVO index.php --> pela url do arquivo index.php em seu site HTTPS. Se você fez tudo ok, basta acessar o seu bot e clicar em Iniciar ou enviar o comando /start caso o bot já tenha sido inciado, ei e não se esqueça de usar nosso bot para receber novos artigos nossos diretamente em seu Telegram @aprendizador_bot.

fonte: aprendizador.blogspot.com.br
Conheça o site Tele-Tudo e compre o que precisar, por tele-entrega

  • Tópicos Semelhantes
    Respostas
    Exibições
    Última mensagem

Voltar para “Programação”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante