Ceci est une tentative de créer un drôle de bot formé sur un corpus de blagues. L'objectif du projet est de dessiner des échantillons qui sont en fait drôles, à partir d'un modèle LSTM au niveau du caractère.
Lisez mon article de blog pour une analyse et des résultats détaillés.
Ce projet a également obtenu une couverture dans les idées TED: https://ideas.ted.com/can-you-teach-a-computer-to-be-funny/
Blagues courtes : il contient 231 657 blagues courtes et Oneliners. Pour le modèle de langue, le fichier CSV de l'ensemble de données est traité et écrit dans une data/shortjokes.txt avec utils/csv_to_text.py .
Amis : En tant que tâche amusante, les transcriptions de tous les épisodes de séries télévisées sont compilées dans un seul fichier texte de 4,79 Mo ( /data/friends.txt ) en utilisant un script utils/friends.py L'intention est de générer du texte amusant similaire aux dialogues de la série. Le script est ad hoc à ce jour, donc les contributions sont les bienvenues.
Naviguez vers /src/ dossier et exécutez les commandes suivantes:
python scripts/preprocess.py --input_txt ../data/shortjokes.txt --output_h5 my_data.h5 --output_json my_data.json
th train.lua -input_h5 my_data.h5 -input_json my_data.json -model_type lstm -num_layers 3 -rnn_size 512 Cela commencera la session de formation de 50 époques sur les blagues et les points de contrôle sont enregistrés dans src/cv/ Dossier toutes les 1000 itérations avec des noms comme cv/checkpoint_1000.t7 .
Pour exemple de données avec 2000 caractères du point de contrôle formé (disons après 3000 itérations), exécutez la commande suivante:
th sample.lua -checkpoint cv/checkpoint_3000.t7 -length 2000En cas d'erreurs, des dépendances manquantes ou plus d'informations, reportez-vous à Torch-RNN.
utils/friends.py contient de nombreux en-têtes supplémentaires, qui ont été supprimés manuellement. Ce serait formidable si cette tâche pouvait être automatisée.