Código-fonte: miniEliza.pro;
io.pro (opcional, vide considerações).
Eliza foi declaradamente concebido para não ser inteligente, mas convencer o usuário do contrário. Dessa forma, pode ser considerado uma crítica ao Teste de Turing, que atribui "inteligência" a um sistema computacional se um humano não for capaz de distinguir entre o comportamento humano e o comportamento do sistema em questão.
Não muito interessante do ponto de vista de engenhosidade em se criar uma ilusão de inteligência, miniEliza vale pelos exemplos de metaprogramação (incluindo geração automática de código), casamento eficiente de padrões em listas e uso da técnica de listas-diferença.
A presente página apresenta o framework
básico do projeto, seus pontos fortes
e, por fim, informações técnicas para execução.
Simples que possa parecer, esse tipo de "eco" impressiona, compondo
inclusive com a proposta "terapêutica" de Eliza. Um cuidado que se
deve tomar, entretanto, é assegurar a inversão
de sentido do discurso, como exemplificado a seguir:
A inversão de sentido do discurso, por sua vez, pode ser
obtida com alto grau de acerto por meio de simples regras de substituição,
tais como:
Ou seja, mais uma vez, dispensa-se qualquer aparato sofisticado,
como análise sintática ou semântica, que caracterizaria
um artefato "inteligente".
No projeto de miniEliza, os padrões
estímulo-resposta e as regras de substituição-padrão
são definidos, respectivamente, pelos predicados patdef/3
e exchange/2.
O projeto não é compatível mesmo com versões
mais antigas do pacote Amzi!, que ainda não dispunham do predicado
predefinido string_tokens/2, utilizado para converter uma string
de entrada em uma lista de átomos. Uma forma de contornar o problema
é alterar a definição do predicado listenTo/1
em miniEliza para:
e incluir o código constante de io.pro.
Vale notar que haverá uma leve diferença de comportamento
na nova versão, que ignorará quaisquer caracteres constantes
da string $ ,;:$, utilizados como separadores de tokens;
Termina-se uma sessão ao se dizer bye ou outras
fórmulas de despedida a miniEliza.