# ELIZA

ELIZA foi o primeiro software para simulação de diálogos, os chamados "chatbots, os "robôs de conversação". O nome vem da personagem principal da peça de teatro 'Pigmalião', Eliza Doolittle, escrita por George Bernard Shaw, em 1913.
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.
O comentário acima é sobre uma área da Inteligência Artificial que é a de 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.
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. 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.

## Exemplo

Veja abaixo um trecho de uma conversa:
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.
Eliza utiliza as palavras-chave que o usuário escreve/fala e faz uma pergunta as utilizando.

## 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.

## Implementações

Existem várias implementações da Eliza em diversas linguagens de programação, como Snobol 4, Java, Python, Prolog, JavaScript, Lisp, dentre várias outras. Abaixo, 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.