[PYTHON] [LSTM-Satzgenerierung] Verwenden Sie ml5js

Tag 24 von Javascript Adventskalender 2019

Was ist LSTM?

Das erste Zeichen wird dem Modell gegeben, das die Satzdaten gelernt hat, und das nächste Zeichen wird erraten.

Bibliothek verwendet

ml5js ml5 Es verwendet das Tensorflow-Modell und erleichtert die Handhabung mit js.

tensorflow Es wird zur Modellgenerierung verwendet. tensorflow

Vorbereitungen

Was zu installieren

Ich habe Python mit Anaconda und TensorFlow mit pip installiert.

Umgebung

OS:windows 10 (Es ist ein Gaming-PC. Ich dachte, es würde eine gewisse Last erfordern.)

Trainingsset

Hier herunterladen training-charRNN

git clone https://github.com/ml5js/training-charRNN.git

Daten vorbereiten

Dies ist sowohl später als auch früher der schwierigste Ort, aber ich werde geeignete Textdaten vorbereiten, damit ich sie vorerst verschieben kann.

Das Vorbereiten japanischer Daten ist schwierig, da es schwierig ist, Phrasen zu trennen. Verwenden wir also englische Daten. Ich werde Japanisch zu einem späteren Zeitpunkt zusammenfassen.

Dateiname: input.txt Ort: training-lstm-master / [any_holder_name] /

Geben Sie den Text in input.txt ein und speichern Sie ihn.

Vergleichsdaten

Kostenlose englische Romane und Geschichten sind verfügbar. Wenn Sie es als Testversion verwenden möchten, können Sie die Originaldaten einfach von hier aus vorbereiten. Project Gutenberg

Zug

cd training-lstm-master
python train.py --data_path=./[any_holder_name]/input.txt

Nach Beginn und Ende dieses Trainings wird eine Datei in models / input / generiert.

Generierte Dateien

Wir werden diese Dateigruppe in ml5-Beispielen verwenden, die später erläutert werden.

Wenn ein Fehler auftritt

Ich hatte die neueste Version von Tensorflow, aber ich war wütend. (Es tut mir leid für den Fehler zu dieser Zeit, aber es ist tausend Winde geworden.)

Ich hatte keine andere Wahl, als ** Tensorflow 1.15.0 ** zu setzen.

Ich muss es in eine 1er-Funktion umschreiben, und das Folgende in train.py wird geändert.

# hide logs
tf.logging.set_verbosity(tf.logging.ERROR)

# hide logs
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

Ich habe noch nicht über das Frontend gesprochen, deshalb mache ich mir Sorgen, dass dies ein guter Advent ist ...

Vorderes Ende

Endlich bin ich zur Geschichte von Javascript gekommen. Verwenden wir nun das zuvor erstellte Modell.

Dateien verschieben

Hier herunterladen ml5-examples

git clone https://github.com/ml5js/ml5-examples.git

Ich verwende das nodejs-Paket, es ist also das übliche

npm install

Dateien verschieben

Verschieben Sie die Dateien unter Modelle / Eingabe / zuvor generiert.

Ziel https://github.com/ml5js/ml5-examples/tree/release/p5js/CharRNN/CharRNN_Text/models/woolf

Beispiel) Text über Katzen ml5-examples-master/p5js/CharRNN/CharRNN_Text/models/cat

Text über Wahrsagerei ml5-examples-master/p5js/CharRNN/CharRNN_Text/models/horoscope

Modell angeben

Ersetzen Sie "Woolf" durch den Ordnernamen, der zuvor unter "Modelle" erstellt wurde, da "Modelle" in "scan.js" angegeben ist.

charRNN = ml5.charRNN('./models/woolf/', modelReady);

https://github.com/ml5js/ml5-examples/blob/release/p5js/CharRNN/CharRNN_Text/sketch.js#L24

Starten Sie einen lokalen Server

Python 3-Serie

python -m http.server

Python 2-Serie

python -m SimpleHTTPServer

Wenn Sie http: // localhost: 8000 / öffnen, wird das Verzeichnis angezeigt.

Verwenden Sie CharRNN-Text

Klicken Sie auf pl5js

FireShot Capture 017 - Directory listing for _ - localhost.png

Klicken Sie auf CharRNN FireShot Capture 018 - Directory listing for p5js - localhost.png

Klicken Sie auf CharRNN_Text FireShot Capture 019 - Directory listing for p5js_CharRNN - localhost.png

Sie erreichen den Generatorbildschirm.

Starttext: Erster zu gebender Buchstabe Länge: Anzahl der Zeichen, die Sie generieren möchten Temperatur: Gewicht / Tiefe

FireShot Capture 022 - LSTM Text Generation Example - localhost.png

seed text:happy length:100 Bei Temperatur erzeugter Text: 0,5

happy and the other grown herself, 'I was than the bottle my to little sing how the poor comly up and gut

FireShot Capture 023 - 翻訳 - Google 検索 - www.google.com.png

seed text:happy length:100 Satz erzeugt durch Temperatur: 1

happys! All spomes wife a 'How finE it?' said 'Hares" should neven backed as much had right gaim--'

FireShot Capture 026 - 翻訳 - Google 検索 - www.google.com.png

Der Text ist inkohärent.

Hinweise finden Sie im letztgenannten generierten Text. Hinweis "Kaninchen". Antwort: Alice im Wunderland Da der letztere Satz die Temperatur auf 1 gesetzt hat, ist es mehr Alice als der erstere (Temperatur: 0,5). Es sollte wie Abenteuer im Wunderland sein. Natürlich habe ich das Gefühl, dass das "Kaninchen" und die "Rechte" so sind.

Ich möchte mehr über ml5.CharRNN erfahren.

Wenn Sie mecab verwenden und japanische Satzdaten vorbereiten, können Sie möglicherweise japanische Sätze verwenden! Ich habe das gehört, also nehme ich mir einen Moment Zeit, um es zu versuchen. Es geht nicht ganz um Javascript lol

Referenzartikel

Recommended Posts

[LSTM-Satzgenerierung] Verwenden Sie ml5js
Stärkste Pokemon-Generation mit LSTM