![]() |
" Chat-Roboter " der antwortet
Hallo zusammen ;-),
Wie schon erwähnt würde ich gerne einen Art "Chat-Roboter" programmieren. Dies habe ich mir so vorgestellt: Es gibt z.B. ein Edit-Feld dort wird etwas eingegeben , z.B. 'Hallo' Jetzt soll der Roboter aus seinem Speicher mögliche Antworten raussuchen die z.B. zu der Anfrage 'Hallo' passen. Z.B. Habe ich ihm beigebracht das er bei dem Wort 'Hallo', "Guten Tag" sagen soll. Dazu jetzt meine Fragen: -Doch wie schaffe ich es mögliche Antworten lokal zu speichern? -Dann wie durchsuche ich die Einträge nach passender Antwort um diese dann auszugeben? Hoffe ihr versteht mein Problem und kennt Antworten :D mfg |
Re: " Chat-Roboter " der antwortet
Such mal im Internet nach ELIZA - das Programm hat vor über 40 Jahren mal faszinieren können ...
|
Re: " Chat-Roboter " der antwortet
hmmm...
Delphi-Quellcode:
type TAntwortrecord = record
Eingabe,Antwort: string; end; type TAntwortSpeicher = Array of TAnswerrecord; var Aw: TAntwortspeicher; [...] function GetAnswer(Eingabe: string): string; var i: byte; begin for i := 0 to Length(aw) do if aw[i].Eingabe=Eingabe then Result := aw[i].Antwort; end; |
Re: " Chat-Roboter " der antwortet
ok sind schonmal gute Ansätze, bloß die Daten werden sollen aj noch dauerhaft gespeichert werden.
Wie bewerkstellige ich dies ? In welchem Dateiformat? Edit: Wäre da vielleicht eine Datenbank sinvoll? 1.Spalte (Frage/Eingabe) | 2.Spalte(Antwort/Ausgabe) aber wie könnte man dies lokal lösen? |
Re: " Chat-Roboter " der antwortet
Nun das ist davon abhängig, welche Antwort-Strategie du wählst. Wenn ich mich recht erinnere, haben die Antworten von ELIZA eigentlich gar nichts mit der Frage zu tun - kann mich aber täuschen, ist sehr lange her :-( Wenn du nur eine "scheinbare" Verbindung zu den Fragen herstellen willst, genügt es eine Stringliste mit geschickten Antworten zu erstellen. Eine Stringliste kann man bequem speichern.
|
Re: " Chat-Roboter " der antwortet
AFAIK hat Larsi doch auch einmal so etwas versucht, vielleicht kannst Du den mal fragen :)
|
Re: " Chat-Roboter " der antwortet
also der "Roboter" soll ja auch erweiterbar sein.
z.B. soll der Benutzer "ihm" neue Antworten bei bringen , dass man mit "ihm" so eine Art gespräch führen kann. Dann soll jede neue Antwort direkt in eine Datenbank oder ähnliches gepseichert werden. Die Antworten sind nur "strings". Eine Idee? |
Re: " Chat-Roboter " der antwortet
Aber die Frage des Speicherns ist eigentlich jetzt noch gar nict wichtig!
Zunächst musst du einmal eine Strategie definieren. Schließlich soll das Ganze ja so etwas wie eine Low-Level-KI werden. Habe mal ein wenig nachgeforscht: ELIZA hat die Fragen des Menschen mit einfachen Mitteln grob "analysiert" und aufgrund dieser Analyse eine Antwort "zusammengestellt". Erst wenn du für dein Programm die Art und den Umfang der Eingabe-Analyse und der Reaktion des Computers genau definiert hast, ist bekannt WAS gespeichert werden muss. Das WIE ist dann nur noch Formsache |
Re: " Chat-Roboter " der antwortet
also der "Roboter" soll zwei Funktionen haben.
Einmal z.B. gebe ich einen Begriff ein z.B. FF dann öffnet er z.B. FireFox oder ähnliches. Als zweites soll er wie schon erwähnt als kleiner Chat fungieren. Also würde mir erstmal am Anfang aus Testzwecken reichen wenn er nur ein Wort erkennt und daraufhin etwas macht bzw eine Antwort gibt. Wenn dann alles so klappt , versuche ich das Programm etwas "professioneller" und komplexer zu gestalten. Also möchte ich gerne ein paar Anfangsfragen geklärt haben bis ich dann anfange etwas zu programmieren. Also welche Möglichkeiten gibt es Fragen und Antworten abzuspeichern und welche ist hier vielleicht die sinvollste? |
Re: " Chat-Roboter " der antwortet
OK, der Möglichkeiten gibt es (fast immer) viele. Eine mögliche Variante wäre die Verwendung von Records (wie oben von implementation bereits erwähnt). Allerdings lassen sich dynamische Strings so nicht ohne weiteres speichern. Verwende also für die ersten Gehversuche in etwa so etwas:
Delphi-Quellcode:
Das lässt Fragen und Antworten mit jeweils maximal 255 Zeichen Länge zu. Das sollte für "Spielzwecke" ausreichen. Auf die Platte bekommst du das dann als "file of ChatRec" - schau mal in die Hilfe, da sollten Beispiele zum Laden/Speichern von typisierten Dateien zu finde sein. Sonst melde dich wieder.
type ChatRec = record
Frage, Antwort : String[255] end; |
Re: " Chat-Roboter " der antwortet
|
Re: " Chat-Roboter " der antwortet
Was hier noch nicht genannt wurde, ist die Sprache
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz