Это попытка создать забавного бота, обученного корпусу шуток. Цель проекта - рисовать образцы, которые на самом деле смешные, по модели LSTM уровня персонажа.
Прочитайте мой пост в блоге для подробного анализа и результатов.
Этот проект также получил освещение в TED Ideas: https://ideas.ted.com/can-you-teach-a-computer-to-be-funny/
Короткие шутки : он содержит 231 657 коротких шуток и отеленцев. Для языковой модели файл CSV набора данных обрабатывается и записывается в отдельный текстовый файл data/shortjokes.txt с utils/csv_to_text.py .
Друзья : В качестве забавной задачи, транскрипты всех эпизодов друзей сериала, составленных в один текстовый файл 4.79 МБ ( /data/friends.txt ) с использованием сценария utils/friends.py . Цель состоит в том, чтобы генерировать забавный текст, похожий на диалоги в серии. Сценарий на данный момент является специальным, поэтому взносы приветствуются.
Перейдите к /src/ polder и запустите следующие команды:
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 Это запустит тренировку из 50 эпох на наборе данных Jokes, а контрольные точки сохраняются в src/cv/ папке каждые 1000 итераций с такими именами, такими как cv/checkpoint_1000.t7 .
Для образца данных с 2000 символами из обученной контрольной точки (скажем, после 3000 итераций), запустите следующую команду:
th sample.lua -checkpoint cv/checkpoint_3000.t7 -length 2000В случае любых ошибок, отсутствия зависимостей или дополнительной информации см. Torch-RNN.
utils/friends.py содержат много дополнительных заголовков, которые были удалены вручную. Было бы здорово, если бы эта задача могла быть автоматизирована.