[JAVA] [Génération de phrases LSTM] Utiliser ml5js

Jour 24 du Calendrier de l'Avent Javascript 2019

Qu'est-ce que LSTM?

Le premier caractère est donné au modèle qui a appris les données de la phrase et le caractère suivant est deviné.

Bibliothèque utilisée

ml5js ml5 Il utilise le modèle tensorflow et facilite sa manipulation avec js.

tensorflow Il est utilisé pour la génération de modèles. tensorflow

Préparation préalable

Quoi installer

J'ai installé Python avec Anaconda et TensorFlow avec pip.

environnement

OS:windows 10 (C'est un PC de jeu. Je pensais que cela prendrait une certaine quantité de charge.)

Ensemble d'entraînement

Télécharger ici training-charRNN

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

Préparez les données

C'est l'endroit le plus difficile à la fois plus tard et plus tôt, mais je préparerai des données textuelles appropriées afin de pouvoir les déplacer pour le moment.

Préparer des données japonaises est difficile car il est difficile de séparer les phrases, alors utilisons les données anglaises. Je résumerai le japonais à une date ultérieure.

Nom de fichier: input.txt Emplacement: training-lstm-master / [any_holder_name] /

Entrez le texte dans input.txt et enregistrez-le.

donnée de référence

Des romans et des histoires en anglais gratuits sont disponibles. Si vous souhaitez l'utiliser comme un essai, je pense que vous pouvez simplement préparer les données originales à partir d'ici. Project Gutenberg

Train

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

Une fois cette formation commencée et terminée, un fichier est généré dans models / input /.

Fichiers générés

Nous utiliserons ce groupe de fichiers dans ml5-examples qui sera expliqué plus tard.

Si une erreur survient

J'avais la dernière version de tensorflow, mais j'étais en colère. (Je suis désolé pour l'erreur à ce moment-là, mais c'est devenu un millier de vents.)

Je n'avais pas d'autre choix que de mettre ** tensorflow 1.15.0 **.

Je dois le réécrire en une fonction de série 1, et ce qui suit dans train.py est modifié.

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

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

Je n'ai pas encore parlé du frontal, donc je crains que ce soit bon comme un avènement ...

l'extrémité avant

Je suis enfin arrivé à l'histoire du javascript. Maintenant, utilisons le modèle créé précédemment.

Déplacer des fichiers

Télécharger ici ml5-examples

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

J'utilise le package nodejs, donc c'est le package habituel

npm install

Déplacer des fichiers

Déplacez les fichiers sous modèles / entrée / générés plus tôt.

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

Exemple) Texte sur les chats ml5-examples-master/p5js/CharRNN/CharRNN_Text/models/cat

Texte sur la bonne aventure ml5-examples-master/p5js/CharRNN/CharRNN_Text/models/horoscope

Spécifiez le modèle

Comme les modèles sont spécifiés dans sketch.js, remplacez "Woolf" par le nom du dossier créé précédemment sous les modèles.

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

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

Lancer un serveur local

série python 3

python -m http.server

série python 2

python -m SimpleHTTPServer

Si vous ouvrez http: // localhost: 8000 /, vous verrez le répertoire.

Utiliser le texte CharRNN

Cliquez sur pl5js

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

Cliquez sur CharRNN FireShot Capture 018 - Directory listing for p5js - localhost.png

Cliquez sur CharRNN_Text FireShot Capture 019 - Directory listing for p5js_CharRNN - localhost.png

Vous atteindrez l'écran du générateur.

texte de départ: Première lettre à donner longueur: nombre de caractères que vous souhaitez générer température: poids / profondeur

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

seed text:happy length:100 Texte généré à température: 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 Phrase générée par la température: 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

Le texte est incohérent.

Quelle phrase ai-je utilisée comme données? Vous pouvez trouver des indices dans ce dernier texte généré.

Indice "lapin".

Réponse: Les aventures d'Alice au pays des merveilles

La dernière phrase a une température de 1, elle devrait donc ressembler davantage aux aventures d'Alice au pays des merveilles qu'à la première (température: 0,5).

Certes, j'estime que le «lapin» et les «droits» sont comme ça.

Je veux en savoir plus sur ml5.CharRNN.

Si vous utilisez mecab et préparez des données de phrases japonaises, vous pourrez peut-être utiliser des phrases japonaises! J'ai entendu cela, alors je vais prendre le temps de l'essayer. Ce n'est pas complètement une question de javascript lol

Article de référence

Recommended Posts

[Génération de phrases LSTM] Utiliser ml5js
Génération de Pokémon la plus puissante utilisant LSTM