2016-11-11 27 views
2

Ich versuche, einen Chatbot, der eine Sequenz Sequenz-Modell verwendet, um auf die Eingabe des Benutzers reagieren. Das Problem ist, dass die Eingabefolge für das Modell fast nie dieselbe sein wird. Die Eingabesequenz ist eine Liste von Wörtern. Ich habe ein Vokabular erstellt, das jedes Wort in dieser Sequenz auf seine eigene eindeutige ID abbildet, jedoch ist die Eingabe immer noch variabel und nicht fest, so dass ich nicht einfach eine Sequenz für ein Sequenzmodell verwenden kann. Ich verstehe, dass es möglich ist, einen Codierer zu verwenden, um die Sequenz von Wörtern zu einer festen Vektordarstellung abzubilden und dann einen Decoder zu haben, der den Vektor zurück zu einer Sequenz abbildet.Sequenz zu Sequenz-Modellierung in Python

Die Frage, die ich habe, ist, wie würde ich gehen über die Codierung der Reihenfolge der Wörter zu einem festen Vektor? Gibt es irgendeine Technik, die für diesen Zweck verwendet werden könnte?

+0

Ich habe nichts versucht, da ich keine Ahnung habe, wie man diese Aufgabe erledigt –

Antwort

1

Die Zuordnung einer Wortsequenz zu einer Vektordarstellung kann mit rekurrentem neuralem Netzwerk erfolgen. Sie können einen Blick auf dieser Einführung nehmen: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

Es gibt ein Tutorial in tensorflow Tool-Kit, der diese Sequenz zu Sequenz-Mapping-Architektur mit Beispiel-Code-Adresse: https://www.tensorflow.org/versions/r0.11/tutorials/index.html

Bevor mit RNN arbeiten, aber ich würde empfehlen, gehen durch die Grundlagen für neuronale Netze: http://deeplearning.net/software/theano/tutorial/#basics

Bengio tiefes Lernen Buch: http://www.deeplearningbook.org/ viele Materialien über RNN bedeckt, aber es geht ziemlich viel Mathematik.

+0

Dosent dieses Tensorflow-Tutorial nur Karten Wörter Vektoren? Dadurch wird die Sequenzlänge immer noch variabel sein. Ich brauche etwas, das eine Sequenz als Ganzes einem festen Vektor zuordnet. –

+0

Hallo, in der im Tutorial beschriebenen einfachen Sequenz gibt es einen RNN-Encoder und einen RNN-Decoder. Der RNN-Codierer bildet die Eingabesequenz in einen Vektor mit fester Länge ab. Der Decoder ordnet diesen Vektor fester Länge einer neuen Sequenz zu. Was Sie suchen, ist die Encoder-Komponente. Jedoch werden diese zwei Komponenten in Folge-zu-Folge-Problemen zusammen trainiert, wir trennen sie nicht. –

Verwandte Themen