Oppa: eliza

Beitrag lesen

hier hab ich einen richtigen eliza (sind zwar ein paar scriptfehler drin, die lassen sich aber einfach korrigieren)

<!doctype html public "-//W3C//DTD HTML 4.0 //EN"> <html> <head>

<title>Eliza</title>

<script language="JavaScript"> <!--

// Wird beim Laden aufgerufen. Initialisiert das Vokabular, gibt Standartmeldung aus // und gibt dem Editor den Focus.

InitVocabular()   SayHello()   window.document.Eliza.talkedit.focus()

// Initialisiert Vokabular

function InitVocabular() {   LastReplyOn = ''";   Greetings = ['Guten Tag, mein Name ist Eliza. Wie geht es ihnen?',                'Guten Tag, ich bin Eliza. Wie fühlen sie sich?',                'Mein Name ist Eliza. Was ist ihr Problem?',                'Guten Tag, ich bin Eliza. Wie ist ihre momentane Verfassung?',                'Ich heisse Eliza. Haben sie Probleme?']   DontUnderstand = ['Könnten sie bitte etwas deutlicher reden.',                     'Lauter bitte!!!',                     'Ich habe sie akkustisch nicht verstanden.']   DontAsk = ['Lassen sie mich die Fragen stellen.']   Grammar = ['Können sie sich auch in ganzen Sätzen ausdrücken?']   DontRepeat = ['Sie wiederholen sich!','Das haben sie bereits gesagt!']   ComplexAnswerQ = ['Wissen sie, warum',                     'Ist es nicht etwas unnatürlich, dass',                     'Wollen sie sagen, dass',                     'Sie glauben wirklich, dass',                     'Sind sie sicher, dass']   ComplexAnswerA = ['Ich bezweifele stark, dass',                     'Es kann so nicht weitergehen, dass',                     'Ich verstehe nicht, warum',                     'Es ist doch nicht schlimm, dass']   Intressting = ['Interresant.',                  'Wirklich?',                  'Ist das der wahre Grund?']   DontScream = ['Warum schreien sie denn so???',                 'Beruhigen sie sich!',                 'Bleiben sie ruhig!']   Possesiv = /^MEIN\b|^DEIN\b|^MEINE\b|^DEINE\b|^MEINEN\b|^DEINEN\b|^MEINEM\b|^DEINEM\b|^SEIN\b|^SEINE\b|^SEINEN\b|^SEINEM\b|^IHR\b|^IHRE\b|^IHREN\b|^IHREM\b/   Keywords = [                [ [/^WESHALB\b|^WARUM\b|^WANN\b|^WIE\b|^WIESO\b|^WER\b|^WAS\b/],                  ['Lassen sie mich die Fragen stellen.'],1],                [ [/^VIELLEICHT\b|^JEIN\b/],                  ['Warum sind sie so unentschlossen?','Ja oder nein?',                   'Entscheiden sie sich!'],1],                [ [/^JA\b|^DOCH\b/],                  ['Erzählen sie mir mehr davon.'],1],                [ [/^GENAU\b|^FEIN\b|^GUT\b|^OKAY\b|^GUT\b/],                  ['Gut. Zurück zu ihrem Problem.'],1],                [ [/^NEIN\b|^NÖ+\b/],                  ['Warum sind sie so negativ?','Warum nicht?','Sicher?'],1],                [ [/^HAHA|^HA\b|^HIHI/],                  ['Warum lachen sie?'],1],                [ [/^WEIL\b/],                  ['Das ist ein Argument!','Das sehe ich ein.','Aha.',                   'Ja, ich verstehe.','So?'],1],                [ [/^BYE\b|^TSCHÜSS\b|^AUF WIEDERSEHEN\b|^BIS MORGEN\b/],                  ['Sie wollen doch nicht schon gehen?','Einen Augenblick noch.',                   'Sie können noch nicht gehen.','Wollen sie nicht noch bleiben?'],1],                [ [/^DARF ICH\b/],                  ['Nur zu.','Wenn sie wollen.','Tun sie sich keinen Zwang an.'],1],                [ [/^KANN ICH\b/],                  ['Wollen sie es denn können?','Vielleicht willst du es gar nicht?'],1],                [ [/^MUSS ICH\b/],                  ['Ich zwinge sie zu nichts.'],1],                [ [/^HALLO\b|^HI\b|^SERVUS\b|^GUTEN TAG\b/],                  ['Hallo.','Hi!','Guten Tag.'],1 ],                [ [/\bMEIN BRUDER\b|\bMEINE SCHWESTER\b|\bMEIN VATER\b/,                   /\bMEINE MUTTER\b|\bMEIN SOHN\b|\bMEINE TOCHTER\b/],                  ['Erzählen sie mir mehr von ihrer Familie.'],3 ],                [ [/\bCOMPUTER|\bMASCHINE/],                  ['Beunruhigen Maschinen dich?',                   'Glaubst du nicht, dass Maschinen den Menschen helfen können?'],2 ],                [ [/\bNIEMAND\b/],                  ['Sicher niemand?', 'Überhaupt keiner?'],2 ],                [ [/\bIMMER\b/],                  ['Wirklich immer?', 'Können sie mir ein Beispiel nennen?'],3 ],                [ [/\bTRAUM\b|\bTRÄUME\b/],                  ['Träumen sie oft?', 'Sind die Träume der Grund für ihre Probleme?'],1]              ] }

// Lässt jemanden etwas sagen und löscht ggf. obere Zeilen

function Say(Who, SayWhat) {   window.document.Eliza.elizachat.value =   window.document.Eliza.elizachat.value + '\n' + Who + ': ' + SayWhat   window.document.Eliza.talkedit.value = ''"   window.document.Eliza.talkedit.focus()   while (GetLines()>20)     { DeleteTopLine() } }

// Lässt Eliza auf etwas antworten

function Answer(ReplyOn) {

// ggf. "Etwas lauter bitte!!!" o.ä. ausgeben

if (ReplyOn == '')     return (Eliza(DontUnderstand[Math.floor(Math.random() * DontUnderstand.length)]))

// ggf. "Warum schreien sie denn so???" o.ä. ausgeben

if (ReplyOn == ReplyOn.toUpperCase())     return (Eliza(DontScream[Math.floor(Math.random() * DontScream.length)]))

// Leerzeichen am Ende der Zeile löschen

while (ReplyOn.charAt(ReplyOn.length-1) == ' ')     ReplyOn = ReplyOn.slice(0, ReplyOn.length-1)

// Leerzeichen am Anfang der Zeile löschen

while (ReplyOn.charAt(0) == ' ')     ReplyOn = ReplyOn.slice(1)

// Meerfache Leerzeichen zwischen den Wörtern löschen

while (ReplyOn.search(/  /) != -1)     ReplyOn = ReplyOn.replace(/  /,' ')

// Fragezeichen?

Question = 0

if (ReplyOn.search(/[?]/) != -1)     Question = 1

// Satzzeichen entfernen

while (ReplyOn.search(/[!.,?;:]/) != -1)     ReplyOn = ReplyOn.replace(/[!.,?;:]/,'')

// Wiederholung checken

if (ReplyOn == LastReplyOn)     return (Eliza(DontRepeat[Math.floor(Math.random() * DontRepeat.length)]))

LastReplyOn = ReplyOn

// Keywords durchgehen und ggf. antworten

for(i = 0; i <= Keywords.length-1; i++)     for(k = 0; k <= Keywords[i][0].length-1; k++)       if (ReplyOn.toUpperCase().search(Keywords[i][0][k]) != -1)         if (Math.floor(Math.random() * Keywords[i][2]) == 0)           return(Eliza(Keywords[i][1][Math.floor(Math.random()*Keywords[i][1].length)]))

// ggf. "Lassen sie mich die Fragen stellen." ausgeben

if (Question == 1)     return (Eliza(DontAsk[Math.floor(Math.random() * DontAsk.length)]))

// In Wörter aufteilen

temp = ReplyOn + ' '   words = []   while (temp.search(/ /) != -1)   {     words.push(temp.slice(0,temp.search(/ /)))     temp = temp.slice(temp.search(/ /)+1)   }

// ggf. "Können sie sich auch in ganzen Sätzen ausdrücken?" ausgeben

if (words.length == 1)     return (Eliza(Grammar[Math.floor(Math.random() * Grammar.length)]))

// ggf. "Interessant" o.ä. ausgeben da Satz für komplexe Antwort zu kurz

if (words.length == 2)     return (Eliza(Intressting[Math.floor(Math.random() * Intressting.length)]))

//   /* Rountine für komplexe Antworten */   //

// ggf. Subjekt kleinschreiben wenn Artikel

if (words[0].toUpperCase() == 'ES')     words[0] = words[0].toLowerCase()   if (words[0].toUpperCase() == 'SIE')     words[0] = words[0].toLowerCase()   if (words[0].toUpperCase() == 'ER')     words[0] = words[0].toLowerCase()

// Possesivpronomen kleinschreiben

if (words[0].toUpperCase().search(Possesiv) != -1) {     words[0] = words[0].toLowerCase()   }

if (words[0].toUpperCase() == 'ICH') {     if (words[1].toUpperCase() == 'MUSS') words[1] = 'müssen'; else     if (words[1].toUpperCase() == 'BIN') words[1] = 'sind'; else     if (words[1].toUpperCase() == 'DARF') words[1] = 'dürfen'; else     if (words[1].toUpperCase() == 'KANN') words[1] = 'können'; else     if (words[1].toUpperCase() == 'MAG') words[1] = 'mögen'; else     if (words[1].toUpperCase() == 'SOLL') words[1] = 'sollen'; else     if (words[1].toUpperCase() == 'WILL') words[1] = 'wollen'; else     if (words[1].toUpperCase().charAt(words[1].length-1) == 'E')       words[1] = words[1] + 'n';

}

if (words[0].toUpperCase() == 'DU') {     if (words[1].toUpperCase() == 'MUSST') words[1] = 'muss'; else     if (words[1].toUpperCase() == 'BIST') words[1] = 'bin'; else     if (words[1].toUpperCase() == 'HAST') words[1] = 'habe'; else     if (words[1].toUpperCase() == 'MAGST') words[1] = 'mag'; else     if (words[1].toUpperCase().charAt(words[1].length-2) == 'S')       if (words[1].toUpperCase().charAt(words[1].length-1) == 'T')         words[1] = words[1].slice(0,words[1].length-2)

}

for(i = 0; i <= words.length-1; i++)     {     if (words[i].toUpperCase() == 'MIR') words[i] = 'ihnen'; else     if (words[i].toUpperCase() == 'DIR') words[i] = 'mir'; else     if (words[i].toUpperCase() == 'ICH') words[i] = 'sie'; else     if (words[i].toUpperCase() == 'DU') words[i] = 'ich'; else     if (words[i].toUpperCase() == 'MEIN') words[i] = 'ihr'; else     if (words[i].toUpperCase() == 'DEIN') words[i] = 'mein'; else     if (words[i].toUpperCase() == 'MEINE') words[i] = 'ihre'; else     if (words[i].toUpperCase() == 'DEINE') words[i] = 'meine'; else     if (words[i].toUpperCase() == 'MEINEN') words[i] = 'ihren'; else     if (words[i].toUpperCase() == 'DEINEN') words[i] = 'meinen'; else     if (words[i].toUpperCase() == 'MEINEM') words[i] = 'ihrem'; else     if (words[i].toUpperCase() == 'DEINEM') words[i] = 'meinem'; else     if (words[i].toUpperCase() == 'DICH') words[i] = 'mich'; else     if (words[i].toUpperCase() == 'MICH') words[i] = 'sich'     }

im nächsten posting gehts weiter