Ich wollte anfangen, mit neuronalen Netzen zu experimentieren, und als Spielzeugproblem wollte ich einen zum Chatten trainieren, dh einen Chat-Bot wie Cleverbot implementieren. Jedenfalls nicht so schlau.
Ich habe mich nach Dokumentationen umgesehen und viele Tutorials zu allgemeinen Aufgaben gefunden, aber nur wenige zu diesem speziellen Thema. Der, den ich gefunden habe, hat die Ergebnisse nur enthüllt, ohne Einblicke in die Implementierung zu geben. Diejenigen, die es getan haben, haben es ziemlich flach gemacht (die Tensorflow-Dokumentationsseite auf seq2seq fehlt imho).
Jetzt habe ich das Gefühl, dass ich das Prinzip mehr oder weniger verstanden habe, aber ich bin mir nicht sicher und ich bin mir nicht einmal sicher, wie ich anfangen soll. Daher werde ich erklären, wie ich das Problem angehen würde, und ich möchte ein Feedback zu dieser Lösung erhalten, das mir sagt, wo ich mich irre, und möglicherweise einen Link zu detaillierten Erklärungen und praktischem Wissen über den Prozess habe.
Der Datensatz, den ich für die Aufgabe verwenden werde, ist der Speicherauszug aller meiner Facebook- und WhatsApp-Chat-Verlaufsdaten. Ich weiß nicht, wie groß es sein wird, aber möglicherweise immer noch nicht groß genug. Die Zielsprache ist nicht Englisch, daher weiß ich nicht, wo ich schnell aussagekräftige Gesprächsproben sammeln kann.
Ich werde aus jedem Satz einen Gedankenvektor erzeugen. Ich weiß immer noch nicht wie eigentlich; Ich habe ein schönes Beispiel für word2vec auf der Website deeplearning4j gefunden, aber keines für Sätze. Ich habe verstanden, wie Wortvektoren aufgebaut sind und warum, aber ich konnte keine erschöpfende Erklärung für Satzvektoren finden.
Mit Gedankenvektoren als Eingabe und Ausgabe werde ich das neuronale Netzwerk trainieren. Ich weiß nicht, wie viele Schichten es haben soll und welche lstm-Schichten sein müssen.
Dann sollte es ein anderes neuronales Netzwerk geben, das einen Gedankenvektor in eine Zeichenfolge umwandeln kann, die einen Satz bildet. Ich habe gelesen, dass ich das Auffüllen verwenden sollte, um unterschiedliche Satzlängen auszugleichen, aber ich vermisse, wie man Zeichen codiert (sind Codepunkte genug?).
Entsprechend Ihrem Projektkonzept möchte ich Sie zunächst bitten, einige testgetriebene Entwicklungstechniken anzuwenden. Versuchen Sie zunächst, eine kleinere Datenbank zu erstellen, mit der Sie eine kleine Datenmenge verarbeiten können, um eine gewünschte Verbesserung zu erzielen.
Verwenden Sie diese Datenbank jedoch, um einen organisierten Baum inline mit Ihren Daten als Knoten zu erstellen. Wenn also ein Bot beginnt, Feedback aus der Datenbank zu generieren, das mit Datenpunkten aus Ihrem angegebenen Datensatz markiert ist. Und somit ist das Feedback oder die Antwort der richtige Weg zum nächsten Knoten im Baum.
Hinweis : Verwenden Sie für den Anfang nicht Ihren großen Chat-Verlauf als Ganzes, da dies eine einfache Aufgabe ist. Zu viele Eingaben == Überanpassung.
quelle