Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi " Chat-Roboter " der antwortet (https://www.delphipraxis.net/140585-chat-roboter-der-antwortet.html)

sabbert 21. Sep 2009 17:03


" 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

taaktaak 21. Sep 2009 17:09

Re: " Chat-Roboter " der antwortet
 
Such mal im Internet nach ELIZA - das Programm hat vor über 40 Jahren mal faszinieren können ...

implementation 21. Sep 2009 17:18

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;

sabbert 21. Sep 2009 17:23

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?

taaktaak 21. Sep 2009 17:28

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.

DeddyH 21. Sep 2009 17:33

Re: " Chat-Roboter " der antwortet
 
AFAIK hat Larsi doch auch einmal so etwas versucht, vielleicht kannst Du den mal fragen :)

sabbert 21. Sep 2009 17:35

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?

taaktaak 21. Sep 2009 17:42

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

sabbert 21. Sep 2009 17:50

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?

taaktaak 21. Sep 2009 18:03

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:
type ChatRec = record
                 Frage,
                 Antwort : String[255]
                 end;
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz