Chatbot anlernen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Itech
User
Beiträge: 20
Registriert: Freitag 6. Juli 2018, 15:44

Hallo zusammen,

ich bin gerade dabei einen Chatbot anzulernen. Dies mache ich über eine txt Datei. Bei einer Frage soll der Bot mehrere Zeilen als Antwort geben. Er nimmt als Antwort alles bis "folgende Gründe:"
Beispiel:

Warum sollte ich meine Beine trainieren?

Das wichtigste Argument für das Beintraining ist, dass eine unausgewogene Körperentwicklung einfach nicht gut aussieht. Der Unterkörper macht 50% der Gesamterscheinung aus und das andere Geschlecht schaut auch nicht nur auf Arme und Bauch. Zudem hat das Beintrainung, insbesondere wenn es mit den Grundübungen Kniebeungen und Kreuzheben ausgeführt wird, einen positiven Einfluss auf die muskuläre Gesamtentwicklung. Dies hat folgende Gründe:
1. Hohe mechanische Belastung: Ein Großteil der Körpermuskulatur wird bei diesen Mehrgelenkübungen trainiert, was dazu führt, dass man relativ schweres Gewicht verwenden kann und somit die Muskulatur mit höherer mechanischer Belastung beansprucht. Diese ist entscheidend für Mikrotraumen im Muskelgewebe. Deren Reparatur wiederum entscheidend für Muskelhypertrophie.
2. Steigerung der Körperkernkraft: Durch diese Grundübungen beansprucht man mitunter optimal die stabilisierende und stützende Muskulatur des Ober- und Unterkörpers. Dies hat zur Folge, dass man sein Kraftniveau steigert und dementsprechend auch bei Oberkörperübungen mehr Gewicht bewältigen kann.
3. Maximale Gesamtkörper-/Kreislaufbelastung: Nicht selten berichten viele Leute bei Kniebeugen - gerade wenn sie diese noch nicht oft ausgeführt haben - dass ihnen nach einem Satz mitunter schwarz vor Augen wird. Dies ist Zeugnis der extrem hohen Gesamtkörperbelastung bei Kniebeugen, Kreuzheben, usw. Dies hat unter anderem eine Ausschüttung von Wachstumsfaktoren zur Folge, welche wiederum einen positiven Einfluss auch auf die Oberkörpermuskulatur ausüben.




Das Problem ist nun, dass er die erste Zeile als Frage erkennt und die zweite Zeile als Antwort(bis: folgende Gründe). Alles folgende nimmt er nicht auf. Habe schon viel Zeit bei google verbracht, konnte aber nicht herausfinden wie der Text in der txt Datei formatiert werden soll. Vielleicht sollte man auch ein anderes Dateiformat nehmen.
Bin für Ratschläge sehr dankbar.

PS: benutze Chatterbot
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Itech: Das sollte eigentlich in der Dokumentation stehen. Ohne das Programm zu kennen, scheint nach dem Doppelpunkt ein Zeilenende-Zeichen in der Datei zu sein. Und wenn ich so kurz über das Programm schaue, dann verwenden die da YAML-Dateien als Trainings-/Grunddaten, so eine Struktur sehe ich bei Deinem Beispiel aber nicht. Wie bindest Du die Textdatei denn ein?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Itech
User
Beiträge: 20
Registriert: Freitag 6. Juli 2018, 15:44

Ja auch in den YAML Datein ist immer nur eine Zeile als Antwort. In der Doku wird leider nicht gezeigt, wie man größere Antworten einbindet.
Och binde die txt so ein:
conv = open('Fragen.txt', 'r').readlines()
bot.set_trainer(ListTrainer)
bot.train(conv)
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Itech: Also in der Dokumentation sieht das ja schwer danach aus das `ListTrainer` eine Liste bekommt in der abwechselnd Fragen und Antworten, bzw. die beiden Seiten der Konversation stehen. Das heisst durch das `readlines()` bist *Du* dafür verantwortlich das die Antwort nach dem Doppelpunkt aufhört und die nächste Zeile wieder als Frage interpretiert wird. Wenn Du das so nicht willst, dann darfst Du halt nicht an Zeilenenden die Trennung zwischen Frage und Antwort machen sondern musst Dir etwas anderes überlegen. Der `ListTrainer` kann ja nicht hellsehen.

In YAML kann man mehrzeilige Texte als Werte angeben. Da musst Du mal in der YAML-Spezifikation nachschauen wie man das auszeichnet.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Itech
User
Beiträge: 20
Registriert: Freitag 6. Juli 2018, 15:44

Super dank Dir
Antworten