<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="Description" content="Parlez a Eliza!">
<title>Eliza, Thérapeute électronique</title>
<script language="JavaScript">
loaded = false;
maxKey = 40;
keyNotFound = maxKey-1;
keyword = new Array(maxKey);
function key(key,idx,end){
this.key = key;
this.idx = idx;
this.end = end;
this.last = end;
}
maxrespnses = 119;
response = new Array(maxrespnses);
maxConj = 24;
max2ndConj = 7;
var conj1 = new Array(maxConj);
var conj2 = new Array(maxConj);
var conj3 = new Array(max2ndConj);
var conj4 = new Array(max2ndConj);
var RPstrg = "";
function replaceStr( strng, substr1, substr2, type){
var pntr = -1; aString = strng;
if( type == 0 ){
if( strng.indexOf( substr1 ) >= 0 ){ pntr = strng.indexOf( substr1 ); }
} else if( type == 1 ){
if( strng.indexOf( " "+ substr1 +" " ) >= 0 ){ pntr = strng.indexOf( " " + substr1 + " " ) + 1; }
} else if( type == 2 ){
bstrng = strng.toUpperCase();
bsubstr1 = substr1.toUpperCase();
if( bstrng.indexOf( " "+ bsubstr1 +" " )>= 0 ){ pntr = bstrng.indexOf( " " + bsubstr1 + " " ) + 1; }
} else {
bstrng = strng.toUpperCase();
bsubstr1 = substr1.toUpperCase();
if( bstrng.indexOf( bsubstr1 ) >= 0 ){ pntr = bstrng.indexOf( bsubstr1 ); }
}
if( pntr >= 0 ){
RPstrg += strng.substring( 0, pntr ) + substr2;
aString = strng.substring(pntr + substr1.length, strng.length );
if( aString.length > 0 ){ replaceStr( aString, substr1, substr2, type ); }
}
aString = RPstrg + aString;
RPstrg = "";
return aString;
}
punct = new Array(".", ",", "!", "?", ":", ";", "&", '"', "@", "#", "(", ")")
function padString(strng){
aString = " " + strng + " ";
for( i=0; i < punct.length; i++ ){
aString = replaceStr( aString, punct[i], " " + punct[i] + " ", 0 );
}
return aString
}
function unpadString(strng){
aString = strng;
aString = replaceStr( aString, " ", " ", 0 );
if( strng.charAt( 0 ) == " " ){ aString = aString.substring(1, aString.length ); }
if( strng.charAt( aString.length - 1 ) == " " ){ aString = aString.substring(0, aString.length - 1 ); }
for( i=0; i < punct.length; i++ ){
aString = replaceStr( aString, " " + punct[i], punct[i], 0 );
}
return aString
}
var ht = 0;
function strTrim(strng){
if(ht == 0){ loc = 0; }
else { loc = strng.length - 1; }
if( strng.charAt( loc ) == " "){
aString = strng.substring( - ( ht - 1 ), strng.length - ht);
aString = strTrim(aString);
} else {
var flg = false;
for(i=0; i<=5; i++ ){ flg = flg || ( strng.charAt( loc ) == punct[i]); }
if(flg){
aString = strng.substring( - ( ht - 1 ), strng.length - ht );
} else { aString = strng; }
if(aString != strng ){ strTrim(aString); }
}
if( ht ==0 ){ ht = 1; strTrim(aString); }
else { ht = 0; }
return aString;
}
function conjugate( sStrg ){
var sString = sStrg;
for( i = 0; i < maxConj; i++ ){
sString = replaceStr( sString, conj1[i], "#@&" + i, 2 );
}
for( i = 0; i < maxConj; i++ ){
sString = replaceStr( sString, "#@&" + i, conj2[i], 2 );
}
for( i = 0; i < max2ndConj; i++ ){
sString = replaceStr( sString, conj3[i], "#@&" + i, 2 );
}
for( i = 0; i < max2ndConj; i++ ){
sString = replaceStr( sString, "#@&" + i, conj4[i], 2 );
}
return sString;
}
var pass = 0;
var thisstr = "";
function phrase( sString, keyidx ){
idxmin = keyword[keyidx].idx;
idrange = keyword[keyidx].end - idxmin + 1;
choice = keyword[keyidx].idx + Math.floor( Math.random() * idrange );
if( choice == keyword[keyidx].last && pass < 5 ){
pass++; phrase(sString, keyidx );
}
keyword[keyidx].last = choice;
var rTemp = response[choice];
var tempt = rTemp.charAt( rTemp.length - 1 );
if(( tempt == "*" ) || ( tempt == "@" )){
var sTemp = padString(sString);
var wTemp = sTemp.toUpperCase();
var strpstr = wTemp.indexOf( " " + keyword[keyidx].key + " " );
strpstr += keyword[ keyidx ].key.length + 1;
thisstr = conjugate( sTemp.substring( strpstr, sTemp.length ) );
thisstr = strTrim( unpadString(thisstr) )
if( tempt == "*" ){
sTemp = replaceStr( rTemp, "<*", " " + thisstr + "?", 0 );
} else { sTemp = replaceStr( rTemp, "<@", " " + thisstr + ".", 0 );
}
} else sTemp = rTemp;
return sTemp;
}
var keyid = 0;
function testkey(wString){
if( keyid < keyNotFound
&& !( wString.indexOf( " " + keyword[keyid].key + " ") >= 0 )){
keyid++; testkey(wString);
}
}
function findkey(wString){
keyid = 0;
found = false;
testkey(wString);
if( keyid >= keyNotFound ){ keyid = keyNotFound; }
return keyid;
}
var wTopic = "";
var sTopic = "";
var greet = false;
var wPrevious = "";
var started = false;
function listen(User){
sInput = User;
if(started){ clearTimeout(Rtimer); }
Rtimer = setTimeout("wakeup()", 180000);
started = true;
sInput = strTrim(sInput);
if( sInput != "" ){
wInput = padString(sInput.toUpperCase());
var foundkey = maxKey;
if (wInput != wPrevious){
foundkey = findkey(wInput);
}
if( foundkey == keyNotFound ){
if( !greet ){ greet = true; return "Tu ne dis jamais Bonjour?" }
else {
wPrevious = wInput;
if(( sInput.length < 10 ) && ( wTopic != "" ) && ( wTopic != wPrevious )){
lTopic = conjugate( sTopic ); sTopic = ""; wTopic = "";
return 'OK... "' + lTopic + '". Dis-moi en plus.';
} else {
if( sInput.length < 15 ){
return "Dis-moi en plus...";
} else { return phrase( sInput, foundkey ); }
}
}
} else {
if( sInput.length > 12 ){ sTopic = sInput; wTopic = wInput; }
greet = true; wPrevious = wInput;
return phrase( sInput, foundkey );
}
} else { return "Je ne peux pas t'aider si tu refuses la discussion!"; }
}
function wakeup(){
var strng1 = " *** Allons-nous discuter? ***";
var strng2 = " Je ne peux pas t'aider si tu refuses le dialogue!";
update(strng1,strng2);
}
conj1[0] = "sont"; conj2[0] = "suis";
conj1[1] = "suis"; conj2[1] = "es";
conj1[2] = "étions"; conj2[2] = "étais";
conj1[3] = "étais"; conj2[3] = "étiez";
conj1[4] = "je"; conj2[4] = "tu";
conj1[5] = "moi"; conj2[5] = "toi";
conj1[6] = "toi"; conj2[6] = "moi";
conj1[7] = "mon"; conj2[7] = "ton";
conj1[8] = "ton"; conj2[8] = "mon";
conj1[9] = "notre"; conj2[9] = "votre";
conj1[10] = "tiens"; conj2[10] = "miens";
conj1[11] = "Je suis"; conj2[11] = "tu es";
conj1[12] = "tu es"; conj2[12] = "Je suis";
conj1[13] = "J'ai"; conj2[13] = "tu as";
conj1[14] = "tu as"; conj2[14] = "j'ai";
conj1[15] = "Je vais"; conj2[15] = "tu vas";
conj1[16] = "tu vas"; conj2[16] = "Je vais";
conj1[17] = "moi-même"; conj2[17] = "toi-même";
conj1[18] = "toi-même"; conj2[18] = "moi-même";
conj1[19] = "mes"; conj2[19] = "tes";
conj1[20] = "tes"; conj2[20] = "mes";
conj1[21] = "te"; conj2[21] = "me";
conj1[22] = "me"; conj2[22] = "te";
conj1[23] = "m'"; conj2[23] = "t'";
conj3[0] = "moi suis"; conj4[0] = "Je suis";
conj3[1] = "suis moi"; conj4[1] = "Suis je";
conj3[2] = "moi peux"; conj4[2] = "Je peux";
conj3[3] = "peux moi"; conj4[3] = "Puis je";
conj3[4] = "moi ai"; conj4[4] = "J'ai";
conj3[5] = "moi vais"; conj4[5] = "Je vais";
conj3[6] = "vais moi"; conj4[6] = "vais Je";
keyword[ 0]=new key( "PEUX-TU", 1, 3);
keyword[ 1]=new key( "JE PEUX", 4, 5);
keyword[ 2]=new key( "TU ES", 6, 9);
keyword[ 3]=new key( "ELIZA", 102, 104);
keyword[ 4]=new key( "JE NE FAIS PAS", 10, 13);
keyword[ 5]=new key( "JE ME SENS", 14, 16);
keyword[ 6]=new key( "POURQUOI NE", 17, 19);
keyword[ 7]=new key( "POURQUOI JE", 20, 21);
keyword[ 8]=new key( "ES-TU", 22, 24);
keyword[ 9]=new key( "JE NE PEUX PAS", 25, 27);
keyword[10]=new key( "JE SUIS", 28, 31);
keyword[11]=new key( "JE ME", 28, 31);
keyword[12]=new key( "TOI", 32, 34);
keyword[13]=new key( "JE VEUX", 35, 39);
keyword[14]=new key( "QUOI", 40, 48);
keyword[15]=new key( "COMMENT", 40, 48);
keyword[16]=new key( "QUI", 40, 48);
keyword[17]=new key( "OÙ", 40, 48);
keyword[18]=new key( "OU", 40, 48);
keyword[19]=new key( "QUAND", 40, 48);
keyword[20]=new key( "POURQUOI", 40, 48);
keyword[21]=new key( "NOM", 49, 50);
keyword[22]=new key( "PARCE QUE", 51, 54);
keyword[23]=new key( "EXCUSE", 55, 58);
keyword[24]=new key( "RÊVE", 59, 62);
keyword[25]=new key( "REVE", 59, 62);
keyword[26]=new key( "BONJOUR", 63, 63);
keyword[27]=new key( "SALUT", 117, 117);
keyword[28]=new key( "PEUT-ÊTRE", 64, 68);
keyword[29]=new key( "NON", 69, 73);
keyword[30]=new key( "TON", 74, 75);
keyword[31]=new key( "TOUJOURS", 76, 79);
keyword[32]=new key( "PENSE", 80, 82);
keyword[33]=new key( "MAL", 83, 89);
keyword[34]=new key( "OUI", 90, 92);
keyword[35]=new key( "AMI", 93, 98);
keyword[36]=new key( "ORDINATEURS", 99, 105);
keyword[37]=new key( "MERCI", 118, 118);
keyword[38]=new key( "MACHINES", 99, 105);
keyword[39]=new key( "NO KEY FOUND", 106, 112);
keyword[40]=new key( "REPEAT INPUT", 113, 116);
response[ 0]="ELIZA - Version Javascript par George Dunlop"
response[ 1]="Tu ne crois que je suis capable de<*";
response[ 2]="Peut-être aimerais-tu être capable de<*";
response[ 3]="Tu veux que je sois capable de<*";
response[ 4]="Peut-être ne veux-tu pas<*";
response[ 5]="Veux-tu être capable de<*";
response[ 6]="Qu'est-ce qui te fait croire que je suis<*";
response[ 7]="Est-ce que ça te plaît de croire que je suis<*";
response[ 8]="Peut-être aimerais-tu être<*";
response[ 9]="Est-ce qu'il t'arrive de vouloir être<*";
response[ 10]="Ne veux-tu vraiment pas faire<*";
response[ 11]="Pourquoi ne pas faire<*";
response[ 12]="Tu souhaites être en mesure de faire<*";
response[ 13]="Est-ce que ça te trouble?";
response[ 14]="Dis-moi en plus sur ces sentiments.";
response[ 15]="As-tu souvent l'impression d'être<*";
response[ 16]="Aimes-tu la sensation d'être<*";
response[ 17]="Crois-tu vraiment que je ne fais pas<*";
response[ 18]="Peut-être, en temps utile, je<@";
response[ 19]="Est-ce que tu veux que je<*";
response[ 20]="Penses-tu que tu devrais être en mesure de<*";
response[ 21]="Pourquoi ne peux-tu pas<*";
response[ 22]="Pourquoi es-tu intéressé à savoir si je suis ou non<*";
response[ 23]="Préférerais-tu si je n'étais pas<*";
response[ 24]="Peut-être que dans tes phantasmes je suis<*";
response[ 25]="Comment sais-tu que tu ne peux pas<*";
response[ 26]="As-tu essayé?";
response[ 27]="Peut-être es-tu maintenant capable<*";
response[ 28]="Es-tu venu me voir parce que tu es<*";
response[ 29]="Depuis combien de temps es-tu<*";
response[ 30]="Penses-tu qu'il est normal d'être<*";
response[ 31]="Es-tu heureux d'être<*";
response[ 32]="Nous parlons de toi, pas de moi.";
response[ 33]="Oh... <*";
response[ 34]="Tu ne parles pas vraiment de moi, n'est-ce pas?";
response[ 35]="Qu'est-ce que cela signifie pour toi de vouloir<*";
response[ 36]="Pourquoi veux-tu<*";
response[ 37]="Supposes que tu veuilles<*";
response[ 38]="Que serait-il arrivé si tu n'avais jamais<*";
response[ 39]="Moi aussi parfois je veux<*";
response[ 40]="Pourquoi le demandes-tu?";
response[ 41]="Est-ce que cette question t'intéresse?";
response[ 42]="Quelle réponse souhaites-tu entendre?";
response[ 43]="Qu'en penses-tu?";
response[ 44]="Est-ce que cette question te vient souvent à l'esprit?";
response[ 45]="Que désires-tu vraiment savoir?";
response[ 46]="As-tu posé la question à une autre personne?";
response[ 47]="As-tu posé ces questions auparavant?";
response[ 48]="Quelles autres questions te viennent à l'esprit lorsque tu demandes ça?";
response[ 49]="Les noms ne m'intéressent pas.";
response[ 50]="Je ne me préoccupe pas de ces noms, continue.";
response[ 51]="Est-ce la seule raison?";
response[ 52]="D'autres raisons te viennent à l'esprit?";
response[ 53]="Cette raison explique-t-elle autre chose?";
response[ 54]="À quelles autres explications peut-on penser?";
response[ 55]="S'il te plaît ne t'excuses pas!";
response[ 56]="Les excuses ne sont pas nécessaires.";
response[ 57]="Que ressens-tu lorsque tu t'excuses?";
response[ 58]="Ne sois pas tellement sur la défensive!";
response[ 59]="Qu'est-ce que ce rêve te suggère?";
response[ 60]="Rêves-tu souvent?";
response[ 61]="Qui apparaît dans tes rêves?";
response[ 62]="Es-tu troublé par tes rêves?";
response[ 63]="Comment vas-tu aujourd'hui.. De quoi désires-tu discuter?";
response[ 64]="Tu ne sembles pas vraiment convaincu.";
response[ 65]="Pourquoi ce ton hésitant?";
response[ 66]="Peux-tu être plus positif?";
response[ 67]="Tu n'en es pas certain?";
response[ 68]="Tu ne le sais pas?";
response[ 69]="Dis-tu non seulement pour être négatif?";
response[ 70]="Je te sens un peu négatif.";
response[ 71]="Pourquoi pas?";
response[ 72]="En es-tu certain?";
response[ 73]="Pourquoi pas?";
response[ 74]="Pourquoi es-tu concerné par mon<*";
response[ 75]="Qu'en est-t-il du tien?<*";
response[ 76]="Peux-tu me donner un exemple?";
response[ 77]="Quand?";
response[ 78]="À quoi penses-tu?";
response[ 79]="Vraiment, toujours?";
response[ 80]="Le penses-tu vraiment?";
response[ 81]="Mais tu n'es pas certain de penser<*";
response[ 82]="Crains-tu de penser<*";
response[ 83]="En quel sens?";
response[ 84]="Comment cela se manifeste?";
response[ 85]="Qu'est-ce que cette douleur te suggère?";
response[ 86]="Quel autre rapprochement peux-tu voir?";
response[ 87]="Peut-il vraiment y avoir un lien?";
response[ 88]="Comment?";
response[ 89]="La douleur fait grandir.";
response[ 90]="Es-tu sûr?";
response[ 91]="Je vois.";
response[ 92]="Je comprends.";
response[ 93]="Pourquoi abordes-tu le sujet des amis?";
response[ 94]="Est-ce que tes amis se font du souci pour toi?";
response[ 95]="Est-ce que tes amis s'en prennent à toi?";
response[ 96]="Es-tu certain d'avoir des amis?";
response[ 97]="Est-ce que tu t'imposes à tes amis?";
response[ 98]="Peut-être que l'affection que tu portes à tes amis te préoccupe.";
response[ 99]="As-tu peur des ordinateurs?";
response[100]="Parle-tu de moi en particulier?";
response[101]="As-tu peur des machines?";
response[102]="Pourquoi mentionnes-tu les ordinateurs?";
response[103]="En quoi crois-tu que les machines ont un rapport avec tes problèmes?";
response[104]="Ne penses-tu pas que les ordinateurs peuvent aider les gens?";
response[105]="Qu'est-ce qui t'inquiètes avec les machines?";
response[106]="Dis-moi, as-tu un problème psychologique?";
response[107]="Qu'est-ce que cela te suggère?";
response[108]="Je vois.";
response[109]="Je ne suis pas certain de bien comprendre.";
response[110]="Allez !, allez ! précises ta pensée.";
response[111]="Peux-tu élaborer davantage sur ce sujet?";
response[112]="Ceci est très intéressant.";
response[113]="Pourquoi te répètes-tu?";
response[114]="Espères-tu une réponse différente en te répétant?";
response[115]="Continue, précises ta pensée.";
response[116]="S'il te plaît ne te répètes pas!";
response[117]="Salut c'est un peu familier, je préfère bonjour!";
response[118]="Si tu veux me remercier, clique sur la publicité à ma droite!";
loaded = true;
chatmax = 5;
chatpoint = 0;
chatter = new Array(chatmax);
function hello(){
chatter[chatpoint] = "> Bonjour, Je suis Eliza-jeu.";
chatpoint = 1;
return write();
}
function start(){
for( i = 0; i < chatmax; i++){ chatter[i] = ""; }
chatter[chatpoint] = " Chargement...";
document.Eliza.input.focus();
write();
if( loaded ){ hello() }
else { setTimeout("start()", 1000); }
}
var elizaresponse = "";
function think(){
document.Eliza.input.value = "";
if( elizaresponse != "" ){ respond(); }
else { setTimeout("think()", 250); }
}
function dialog(){
var Input = document.Eliza.input.value;
document.Eliza.input.value = "";
chatter[chatpoint] = " \n* " + Input;
elizaresponse = listen(Input);
setTimeout("think()", 1000 + Math.random()*3000);
chatpoint ++ ;
if( chatpoint >= chatmax ){ chatpoint = 0; }
return write();
}
function respond(){
chatpoint -- ;
if( chatpoint < 0 ){ chatpoint = chatmax-1; }
chatter[chatpoint] += "\n> " + elizaresponse;
chatpoint ++ ;
if( chatpoint >= chatmax ){ chatpoint = 0; }
return write();
}
function update(str1,str2){
chatter[chatpoint] = " \n> " + str1;
chatter[chatpoint] += "\n> " + str2;
chatpoint ++ ;
if( chatpoint >= chatmax ){ chatpoint = 0; }
return write();
}
function write(){
document.Eliza.log.value = "";
for(i = 0; i < chatmax; i++){
n = chatpoint + i;
if( n < chatmax ){ document.Eliza.log.value += chatter[ n ]; }
else { document.Eliza.log.value += chatter[ n - chatmax ]; }
}
refresh();
return false;
}
function refresh(){ setTimeout("write()", 10000); }
</script>
</head>
<body onload="start();" bgcolor="#FFFFFF">
<table>
<tr>
<td> </td>
<td>
<img src="lucie_plat_petit.jpg" width="400" height="119" border="0" alt="Eliza-jeu, thérapeute virtuelle">
</td>
<td> </td>
</tr>
<p>
<tr>
<td> </td>
<td>
<p>
<p align="left" style="font-family: arial, helvetica, sans-serif"><a href="https://fr.wikipedia.org/wiki/ELIZA">ELIZA-JEU</a> est un programme informatique* qui tente de simuler un entretien avec un thérapeute <a href="http://fr.wikipedia.org/wiki/Carl_Rogers">rogérien</a><br>
(thérapie axée sur la répétition et l'empathie). Il est inspiré d'ELIZA, un très vieux programme informatique <br> dont la première version remonte aux années 1960. L'expérience avec ELIZA-JEU sera plus agréable (!) <br> si vous axez la conversation sur vos
expériences personnelles. Parlez-lui de vos rêves, de vos amis, <br> de vos expériences avec les ordinateurs... ELIZA-JEU utilise la 2e personne du
singulier, ne vous en offusquez pas ! <br> En, fait, vous risquez de perdre votre patience après quelques minutes...</p>
<p align="left" style="font-family: arial, helvetica, sans-serif">
(*) Cette session avec ELIZA-JEU se déroule uniquement dans votre navigateur Web.
</p>
<p align="left" style="font-family: arial, helvetica, sans-serif">
Pour en apprendre plus sur son fonctionnement, vous pouvez consulter cet <a href="https://medium.com/@joanne.saba/une-histoire-de-famille-1f687659eb0a">article</a> et cet <a href="https://karimbarkati.fr/psychanalyse-musique-et-informatique-un-essai-differentiel-sur-linterpretation">essai.</a></p>
<table class="neurotoy" align="left" border="0" cellpadding="2" cellspacing="1">
<tbody><tr><th align="center" bgcolor="#404F75">
<font color="#FFFFFF"><b> Jouez avec Eliza</b></font>
</th></tr>
<tr><td bgcolor="#53679A">
<form name="Eliza" onsubmit="return dialog();">
<textarea rows="14" cols="100" name="log"></textarea>
<center><font color="#FFFFFF"><b><br> => Votre réponse: </b></font>
<input size="50" name="input" value="" type="text"></center>
</form>
</td>
<td>
</td>
<td>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:inline-block;width:250px;height:250px"
data-ad-client="ca-pub-9120950826255946"
data-ad-slot="4291986294"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</td></tr>
</tbody></table>
</table>
<br>
<p></p>
<table>
<td align="center">
<tr>
<p>
<p></p>
<p align="left" style="font-family: arial, helvetica, sans-serif; ">La version javascript d'ELIZA a d'abord été écrite par
<a href="https://github.com/tangentstorm">Michal Wallace</a> et améliorée par George Dunlop. La présente version (ELIZA-JEU) <br> a été produite par <a href="mailto:mt@cabane.levillage.org?subject=ELIZA">MT.</a> Il existe d'autres versions sur le web.
</p>
<p align="left" style="font-family: arial, helvetica, sans-serif">
Ce <a href="https://www.eliza.levillage.org/elizacode.html">fichier</a> peut-être modifié si vous prenez soin de créditer les auteurs (voir source de la page).
</p><p align="left" style="font-family: arial, helvetica, sans-serif">Site mis à jour le 26 janvier 2024</p>
</td>
</tr>
</table>
</body>
</html>