Esta é uma tentativa de criar um bot engraçado treinado em um corpus de piadas. O objetivo do projeto é desenhar amostras que são realmente engraçadas, a partir de um modelo LSTM de nível de personagem.
Leia minha postagem no blog para análises e resultados detalhados.
Este projeto também obteve cobertura em idéias do TED: https://ideas.ted.com/can-you-teach-a-computer-to-be---uns-nny/
Piadas curtas : Ele contém 231.657 piadas curtas e Oneliners. Para o modelo de idioma, o arquivo CSV do conjunto de dados é processado e gravado em um arquivo de texto separado data/shortjokes.txt com utils/csv_to_text.py .
Amigos : como uma tarefa divertida, transcrições de todos os episódios de séries de TV Friends são compilados em um único arquivo de texto de 4.79MB ( /data/friends.txt ) usando o script utils/friends.py . A intenção é gerar texto engraçado semelhante aos diálogos da série. O script é ad-hoc a partir de agora, então as contribuições são bem-vindas.
Navegue até /src/ pasta e execute os seguintes comandos:
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 Isso iniciará a sessão de treinamento de 50 épocas no conjunto de dados de piadas e os pontos de verificação são salvos na pasta src/cv/ a cada 1000 iterações com nomes como cv/checkpoint_1000.t7 .
Para amostrar dados com 2000 caracteres do ponto de verificação treinado (digamos após 3000 iterações), execute o seguinte comando:
th sample.lua -checkpoint cv/checkpoint_3000.t7 -length 2000Em caso de erros, falta de dependências ou mais informações, consulte a Torch-rnn.
utils/friends.py contêm muitos cabeçalhos extras, que foram removidos manualmente. Seria ótimo se essa tarefa pudesse ser automatizada.