Ich baue ein Tensorflow-Modell, um Rückschlüsse auf Textphrasen durchzuführen. Der Einfachheit halber nehme ich an, ich brauche einen Klassifikator mit einer festen Anzahl von Ausgabeklassen, aber einen Text variabler Länge im Eingang. Mit anderen Worten, mein Mini-Batch wäre eine Sequenz von Phrasen, aber nicht alle Phrasen haben die gleiche Länge.Arbeiten mit Text variabler Länge in Tensorflow
data = ['hello',
'my name is Mark',
'What is your name?']
Meine erste Vorverarbeitungsschritt war ein Wörterbuch aller möglichen Wörter im Wörterbuch bauen und jedes Wort auf seine ganze Zahl Wort-Id zuordnen. Der Eingang wird:
data = [[1],
[2, 3, 4, 5],
[6, 4, 7, 3]
Was ist der beste Weg, um mit dieser Art von Eingabe umzugehen? Kann tf.placeholder() Eingabe mit variabler Größe innerhalb desselben Datenstapels verarbeiten? Oder sollte ich alle Zeichenfolgen auffüllen, so dass sie alle die gleiche Länge haben, die der Länge der längsten Zeichenfolge entspricht, mit einem Platzhalter für die fehlenden Wörter? Dies scheint sehr ineffizient zu sein, wenn einige Strings viel länger sind als die meisten anderen.
- EDIT -
Hier ist ein konkretes Beispiel.
Wenn ich weiß, die Größe meiner Datenpunkte (und alle Datenpunkt die gleiche Länge haben, zB 3). Ich verwenden normalerweise so etwas wie:
input = tf.placeholder(tf.int32, shape=(None, 3)
with tf.Session() as sess:
print(sess.run([...], feed_dict={input:[[1, 2, 3], [1, 2, 3]]}))
, wo die erste Dimension des Platzhalter der miniGröße .
Was ist, wenn die Eingabesequenzen Wörter in Sätzen unterschiedlicher Länge sind?
feed_dict={input:[[1, 2, 3], [1]]}
Text wird oft von einem Sequenzmodell behandelt. IE, Ihr Modell akzeptiert das aktuelle Wort und die Ausgabe des vorherigen Schritts und Sie stapeln Kopien des Modells. Als Grundlinie könnten Sie mit "Beutel mit Wörtern" beginnen - fügen Sie einfach alle Wörter zusammen in einen Wörterbuchvektor ein. –
Danke für Ihre Antwort. Meine Frage bezieht sich mehr auf Tensorflow-Datenstrukturen als auf Modelle. Ich kann ein RNN verwenden, das mit Text gefüllt ist, der mit Sackleinen dargestellt wird. Immer noch, wenn meine Datenpunkte unterschiedliche Länge haben, wo oder wie speichere ich diese Art von Daten? – Marco
Ich redigierte die Frage, die Verweis auf Worteinbettungen löscht und ein konkreteres Beispiel setzte, um meine Frage zu klären. – Marco