Remarque : le référentiel n'est pas maintenu. N'hésitez pas à me contacter en MP si vous souhaitez prendre en charge la maintenance.
Faites fonctionner seq2seq pour les keras. Et essayez également d’autres implémentations de seq2seq.
Le code comprend :
Avertissement
Papiers
Belle photo
Configurer et exécuter
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
et puis
python bin/test.py
Résultats
Aucun bon résultat n’a été obtenu jusqu’à présent :
[why ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[who ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[yeah ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[what is it ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as as i]
[why not ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[really ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
Je suppose qu'il y a des problèmes fondamentaux dans cette approche :
Étant donné que les vecteurs word2vec sont utilisés pour les représentations de mots et que le modèle renvoie un vecteur approximatif pour chaque mot suivant, cette erreur s'accumule d'un mot à l'autre et donc à partir du troisième mot, le modèle ne parvient pas à prédire quoi que ce soit de significatif... Ce problème pourrait être surmonté si nous remplaçons notre vecteur approximatif word2vec à chaque horodatage par un vecteur "correct", c'est-à-dire celui qui correspond à un mot réel du dictionnaire. Est-ce que cela a du sens ? Cependant, vous devez fouiller dans le code seq2seq pour ce faire.
Le deuxième problème concerne l'échantillonnage de mots : même si vous parvenez à résoudre le problème susmentionné, si vous vous en tenez à l'utilisation de argmax() pour choisir le mot le plus probable à chaque horodatage, les réponses seront trop simples et sans intérêt, comme :
are you a human? -- no .
are you a robot or human? -- no .
are you a robot? -- no .
are you better than siri? -- yes .
are you here ? -- yes .
are you human? -- no .
are you really better than siri? -- yes .
are you there -- you ' re not going to be
are you there?!?! -- yes .
Je ne veux pas vous induire en erreur : ces résultats ont été obtenus sur une architecture seq2seq différente, basée sur tensorflow.
L'échantillonnage avec température pourrait être utilisé afin de diversifier les résultats de sortie, mais cela devrait encore une fois être effectué dans la bibliothèque seq2seq.