Hallo, ich programmiere einen Chat-Bot und bin auf der Suche nach Ideen, wie man ihm das "Sprechen" beibringen kann. Was ich bis jetzt gemacht habe, ist dass alle Sätze, in denen der Bot angesprochen wird, gespeichert werden und seine Anrede durch einen Placeholder ersetzt wird. Er antwortet dann mit einem zufälligen Satz und setzt den Nicknamen der Person ein. Ist soweit ganz witzig aber natürlich ausbaufähig. Was ich mir überlegt hatte, ist Tabellen mit Wortgruppen anzulegen, also Verb, Objekt usw. Er bedient sich dann aus den Tabellen und bildet dann zumindest halbwegs grammatikalisch korrekte Sätze. Hättet ihr noch Ideen, wie man das angehen könnte? Danke!
Eliza kenne ich, ich wollte wissen, ob es noch weitere Herangehensweisen gibt.
Warum schreibst Du das dann nicht? Gib's zu, Du wolltest testen, ob andere das Programm auch noch kennen... ;-)
Na Eliza kennt ja wohl jeder ;) Ich dachte daran, dass intern Verknüpfungen zwischen Wörtern erstellt werden sollten. Also beispielsweise es wird zufällig ein Verb aus der DB gepickt: "Bot: ich gehe". Falls nun ein Mensch drauf reagiert und fragt "wohin gehst du?" wird dieser Satz als Verknüpfung mit dem Verb "gehe" gespeichert. So könnte er später, falls das Verb erkannt wird mit der richtigen Verknüpfung reagieren. Vielleicht könnte man noch die Stärke der Verknüpfungen variieren, irgendwie schwirrt mir ein neuronales Netz als Stichwort dazu im Kopf, aber ich habe keine Erfahrungen damit.
Filth __ schrieb: > Falls nun ein Mensch drauf reagiert und fragt "wohin gehst du?" wird > dieser Satz als Verknüpfung mit dem Verb "gehe" gespeichert. So könnte > er später, falls das Verb erkannt wird mit der richtigen Verknüpfung > reagieren. Es soll auch Menschen geben, die mitten im Satz das Thema wechseln. Die bringen dir dann deine DB ganz schnell ganz schön durcheinander. Das Wesentliche an Eliza ist: Es reagiert nur und wird nicht von sich aus großartig erfinderisch, wenn es darum geht ein Gespräch weiterzuführen. Eliza holt sich seine Gesprächs-Fortsetzungen aus dem was ihm der User vorgibt.
>> Es soll auch Menschen geben, die mitten im Satz das Thema wechseln. Die >> bringen dir dann deine DB ganz schnell ganz schön durcheinander. Deswegen die Stärke der Verbindungen - sagt der Bot irgendwas, was keinen Sinn ergibt - also ist die Verbindung nicht korrekt, kann man ihm mit einem Keyword "beibringen", dass es falsch ist. Damit würde das Gewicht der Verbindung sinken
Also alice ist ja mal der Hammer: > ... > Human: have you any other hobbys? > ALICE: Where would I get it? But I do have a great botmaster. > Human: cool, whats his name? > ALICE: I'm glad you like it. Tell your friends. > Human: who is your master > ALICE: I obey Dr. Richard S. Wallace. > Human: sprichst du auch deutsch? > ALICE: Nein, aber ich wuerde gerne einige Saetze in auch deutsch lernen. man beachte die antwort
Ich habe mir folgendes Vorgehen überlegt: Der Bot zeichnet ja alles auf, wenn er angesprochen wird. Nun stellen wir uns folgende zwei Konversationen vor: 1-> Mensch: bot, hau ab Bot: warum? Mensch: du nervst 2-> Mensch: bot, ich esse Bot: warum? Mensch: hab hunger Dabei entsteht das folgende Verknüpfungsnetz http://img843.imageshack.us/i/18529186.png Theoretisch könnte der Bot jetzt plappern: Bot: "hau ab" Mensch: "warum?" Bot: "hab hunger" Jetzt müsste man überlegen, wie man das intern darstellt, wenn nach dieser Satzfolge dem Bot "beigebracht" wird, dass dieser Weg schlecht ist. Hat jemand eine Idee? Man könnte ja zb die Kanten gewichten. Also hätten in der Ausgangssituation alle Kanten das gleiche Gewicht. Wenn "hau ab"->"warum"->"hab hunger" von einem Menschen ein negatives Flag bekommt, müssten die Gewichte so verändert werden, dass dieser Weg nicht mehr gewählt wird, sondern nur "hau ab"->warum->du nervst bzw die anderen Möglichkeiten auf dieser Verzweigung. Wie könnte man das lösen? Ich glaube da ist man schon beim Thema neuronales Netz, aber mir ist nicht klar, wie die Gewichte in dem Fall verändert werden müssen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.