Une mise en œuvre pytorch d'un modèle de langue probabiliste neuronale. Code pour la formation et le chargement des données basés sur le modèle de langage de niveau de mot Exemple de pytorch.
Pour obtenir l'ensemble de données wikitext-2, exécutez:
./get-data.shUn exemple de niveau de mot:
./main.py train --name wiki --order 5 --batch-size 32Un exemple au niveau des caractères:
./main.py train --name wiki-char --use-char --order 12 --emb-dim 20 --batch-size 1024Si vous avez des vecteurs à gants pré-entraînés, vous pouvez les utiliser:
./main.py train --name wiki --use-glove --glove-dir your/glove/dir --emb-dim 50Certains autres arguments de données sont:
--lower # Lowercase all words in training data.
--no-headers # Remove all headers such as `=== History ===`. Avec les arguments suivants, une époque prend environ 45 minutes:
./main.py train --name wiki --order 5 --use-glove --emb-dim 50 --hidden-dims 100
--batch-size 128 --epochs 10 # Test perplexity 224.89 
Nous pouvons explorer les limites:
./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 
Pour générer du texte, utilisez:
./main.py generate --checkpoint path/to/saved/model Le jeton <eos> est remplacé par une nouvelle ligne, et le reste est imprimé tel quel.
Les autres arguments de génération sont:
--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> tokensVoir un texte généré dans generate.txt.
Pour visualiser les intérêts entraînés du modèle, utilisez:
./main.py plot --checkpoint path/to/saved/modelCela correspond à un tracé T-SNE 2D avec la coloration du cluster K-means des 1000 mots les plus courants dans l'ensemble de données. Le Bokeh nécessite le complot et le scikit-apprentissage pour T-SNE et K-Means.
Voir un exemple HTML ici. (GitHub ne rend pas les fichiers HTML. Pour rendre, télécharger et ouvrir ou utiliser ce lien.)
python>=3.6
torch==0.3.0.post4
numpy
tqdm