Una implementación de Pytorch de un modelo de lenguaje probabilístico neural. Código para capacitación y carga de datos basado en el modelo de lenguaje de nivel de palabras de ejemplo de Pytorch.
Para obtener el conjunto de datos Wikitext-2, ejecute:
./get-data.shUn ejemplo de nivel de palabra:
./main.py train --name wiki --order 5 --batch-size 32Un ejemplo de nivel de personaje:
./main.py train --name wiki-char --use-char --order 12 --emb-dim 20 --batch-size 1024Si tiene vectores de guantes previos al estado de entrenamiento, puede usarlos:
./main.py train --name wiki --use-glove --glove-dir your/glove/dir --emb-dim 50Algunos otros argumentos de datos son:
--lower # Lowercase all words in training data.
--no-headers # Remove all headers such as `=== History ===`. Con los siguientes argumentos, una época toma alrededor de 45 minutos:
./main.py train --name wiki --order 5 --use-glove --emb-dim 50 --hidden-dims 100
--batch-size 128 --epochs 10 # Test perplexity 224.89 
Podemos explorar los límites:
./main.py train --name wiki --order 13 --emb-dim 100 --hidden-dims 500
--epochs 40 --batch-size 512 --dropout 0.5 # Test perplexity 153.12 
./main.py train --name wiki --order 13 --emb-dim 300 --hidden-dims 1400
--epochs 40 --batch-size 256 --dropout 0.65 # Test perplexity 152.64 
Para generar texto, use:
./main.py generate --checkpoint path/to/saved/model El token <eos> se reemplaza con una nueva línea, y el resto se imprime como está.
Otros argumentos de generación son:
--temperature 0.9 # Temperature to manipulate distribution.
--start # Provide an optional start of the generated text (can be longer than order)
--no-unk # Do not generate unks, especially useful for low --temperature.
--no-sos # Do not print <sos> tokensVer algún texto generado en Generate.txt.
Para visualizar los incrustaciones entrenadas del modelo, use:
./main.py plot --checkpoint path/to/saved/modelEsto se ajusta a una trama 2D T-SNE con coloración de clúster K-means de las 1000 palabras más comunes en el conjunto de datos. Requiere Bokeh para trazar y Scikit-Learn para T-SNE y K-Means.
Vea un ejemplo HTML aquí. (GitHub no representa archivos HTML. Para renderizar, descargar y abrir, o usar este enlace).
python>=3.6
torch==0.3.0.post4
numpy
tqdm