Conversação com ELIZA!

O software Eliza foi o primeiro programa para processamento de linguagem natural da história e foi criado por Joseph Weizenbaum no laboratório de Inteligência Artificial do MIT, entre os anos de 1964 e 1966. A ideia básica é simular a conversação entre homem e máquina, inclusive o próprio autor ficou surpreso com a quantidade de pessoas que atribuíram à Eliza características muito semelhantes aos sentimentos humanos. A principal implementação do programa mostra a simulação da conversa entre um paciente e seu psicólogo, na qual o usuário é o paciente e o software o psicólogo! Na época, até mesmo alguns acadêmicos acreditaram que o sistema poderia influenciar positivamente a vida de pessoas que sofrem com problemas psicológicos, sendo capaz de complementar o tratamento dos pacientes. Será??

Acima comentei sobre uma área da Inteligência Artificial que é processamento de linguagem natural. Esse campo de estudo é responsável pela criação de softwares capazes de entender e interpretar a linguagem humana, bem como fornecer respostas também em linguagem natural. Para saber um pouco mais sobre esse assunto, acesse este link https://iaexpert.academy/2016/08/23/ferramentas-para-ia-processamento-de-linguagem-natural-com-nltk-e-python/ e leia um artigo e assista um vídeo que eu abordo sobre a biblioteca NLTK (Natural Language Tookit) para a linguagem Python.

A criação da Eliza foi um passo muito marcante na história da Inteligência Artificial, pois esse software é considerado o primeiro chatbot (robô de conversa). Os robôs de conversa hoje em dia são muito utilizados comercialmente, e talvez você já tenha conversado com um algum dia! Eles são muito comuns em comércios eletrônicos e têm a função de tirar as dúvidas dos usuários, e somente se eles não souberem responder uma determinada questão é que passam o controle para um atendente humano. Eu também escrevi um artigo sobre o Teste de Turing, e nele eu cito alguns exemplos de robôs de conversa, inclusive você pode fazer um teste e conversar com um robô on-line e em português. Acesse este link para ler o artigo completo: https://iaexpert.academy/2016/07/19/historico-da-ia-teste-de-turing/.

Voltando à Eliza, veja abaixo um trecho de uma conversa (traduzido para o português)

Eliza: Por favor, diga o seu problema
Usuário: Eu estou com receio de que eu não sou um bom artista
Eliza: Você veio até mim porque você está com medo de não ser um bom artista?
Usuário: Sim, eu estou com medo que eu sou um artista ruim sem realmente saber que eu sou um artista ruim.
Eliza: Você parece positivo.
Usuário: Eu me sinto muito negativo.
Eliza: Você disse que se sente muito negativo?
Usuário: Como se eu não fosse um bom artista e os outros riem de mim por eu ser um artista ruim.

A conversa acima é somente um pequeno trecho de um diálogo e talvez você tenha notado que a Eliza utiliza as palavras chave que o usuário escreve/fala e faz uma pergunta utilizando elas. Veja abaixo um vídeo completo que mostra o restante dessa conversa (em inglês).

[video_player type=”youtube” width=”560″ height=”315″ align=”center” margin_top=”0″ margin_bottom=”20″]aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1DSldPT1RNdDRrbw==[/video_player]

E se você tem facilidade com o inglês, acesse este link http://www.masswerk.at/elizabot/ e converse diretamente com a Eliza, em uma implementação desenvolvida em JavaScript! 🙂

Agora que vimos um pouco sobre o funcionamento da Eliza, vamos agora abordar brevemente um pouco mais sobre a parte técnica que proporcionou o seu desenvolvimento. O software utilizou mecanismos como correspondências de padrões (patter matching) e técnicas de substituição de caracteres. Desta forma, após receber uma sequência de caracteres do usuário como parâmetro de entrada, o software primeiramente faz uma busca por palavras-chave, que são termos previamente definidos no código fonte pelo programador e são considerados como sendo importantes para o contexto da conversa. Se essas palavras forem encontradas no texto de entrada, elas são colocadas em uma pilha com a palavra com o maior ranking no topo desta estrutura de dados, para posterior processamento. Depois, a sentença de entrada é manipulada com o objetivo de encontrar uma regra de transformação apropriada que esteja relacionada com a palavra que possui o maior ranking. Um exemplo simples que é mostrado no artigo original de Weizenbaum é a frase “You are very helpful” dada como entrada pelo usuário, que será transformada para a pergunta “What makes you think I am very helpful?”. Apesar de ter sido desenvolvido há várias décadas, o processamento para a conversação não é tão trivial e envolve várias etapas, e como o objetivo do presente artigo é somente mostrar uma visão geral sobre a ferramenta, você pode baixar o artigo original de 1966 no link abaixo e conferir todos os detalhes (em inglês)!

[file_download style=”1″][download title=”ELIZA%20-%20A%20Computer%20Program%20For%20the%20Study%20of%20Natural%20Language%20Communication%20Between%20Man%20and%20Machine” icon=”style1-Pdf-64×64.png” file=”https://iaexpert.academy/wp-content/uploads/2016/10/p36-weizenabaum.pdf” package=”” level=”” new_window=”Y”][/download][/file_download]

Existem várias implementações da Eliza em diversas linguagens de programação, como Java, Python, Prolog, JavaScript, Lisp, dentre várias outras. É muito fácil conseguir o código fonte deste software, bastando uma rápida pesquisa em alguma ferramenta de busca. Abaixo eu mostro um pequeno trecho de código de uma implementação na linguagem Lisp.

‘((((?* ?x) hello (?* ?y))      
    (How do you do.  Please state your problem.))
   (((?* ?x) computer (?* ?y))
    (Do computers worry you?) (What do you think about machines?)
    (Why do you mention computers?)
    (What do you think machines have to do with your problem?))

Uma característica importante do Lisp é que são utilizadas listas para o processamento dos dados, portanto, os parênteses sucessivos indicam a abertura de “listas dentro de listas”. Note neste código que as questões já estão pré-definidas e o sistema busca pelas palavras chave para “escolher” a melhor alternativa. Por exemplo, na terceira linha está a palavra-chave “computer” e logo abaixo, opções de resposta que a Eliza poderá responder!

E para complementar o assunto, veja abaixo o vídeo que gravei mostrando uma implementação da Eliza na linguagem Lisp!

[video_player type=”youtube” width=”560″ height=”315″ align=”center” margin_top=”0″ margin_bottom=”20″]aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YMk8ybW42UHF5TQ==[/video_player]

Ah, e uma coisa importante por curiosidade: o nome Eliza vem da personagem principal (Eliza Doolittle) de uma peça de teatro chamada Pigmalião, escrita em 1913!

Com isso, finalizamos esse artigo que teve como intuito mostrar um pouco mais sobre o histórico da Inteligência Artificial! Até o próximo!

Sobre o autor

17 comentários em “Conversação com ELIZA!”

  1. Ola Jones Granatyr Até que enfim lhe encontrei hehe, preciso muito do ELIZA em MUMPS, podes me ajudar pretendo estudar para desenvolver algumas ideias, lhe serei muiiiito grato.

  2. Pingback: ChatBots: Entenda o que é, como funciona e como implementar

  3. Boa tarde!
    Gostaria de fazer um software semelhante a Eliza utilizando também PLN mas com um princípio de redes neurais pra aumentar a fluidez do diálogo.
    Você tem alguma recomendação sobre como aplicar as redes neurais em um chatbot feito com PLN?

  4. Pingback: Chatbots: Entenda o que são, como funciona e como implementar - Anúncios Gratuitos SP

  5. Olá. Pode me indicar quem faça um trabalho pra mim em prolog tipo: eu digito: ‘O que é redes de computadores? aí o Chatbot me dá a resposta. Claro são respostas previamente elaboradas.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.