mikrocontroller.net

Forum: PC-Programmierung Sprachalgorithmen


Autor: Filth __ (filth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal da, sowas gab's schon 1966! ;-)

http://de.wikipedia.org/wiki/ELIZA

Gruß
Markus

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, etwas zu spät

Und das nach über 40 Jahren.

Autor: Filth __ (filth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eliza kenne ich, ich wollte wissen, ob es noch weitere Herangehensweisen 
gibt.

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum schreibst Du das dann nicht? Gib's zu, Du wolltest testen, ob 
andere das Programm auch noch kennen... ;-)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder er wollte probieren, wann ich ausfallend werde?
:-(

Autor: Filth __ (filth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Filth __ (filth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: DERLEVELER (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: bgt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.