Divers modèles et code pour l'identification de paraphrase implémentés dans TensorFlow (1.1.0).
J'ai pris grand soin de documenter le code et d'expliquer ce que je fais à diverses étapes à travers les modèles; J'espère que ce sera un exemple de code didactique pour ceux qui cherchent à commencer avec TensorFlow!
Jusqu'à présent, ce dépôt a mis en œuvre:
Une base de base siamoise LSTM basique, sans danger sur le modèle de Mueller, Jonas et Aditya Thyagarajan. "Architectures récurrentes siamoises pour apprendre la similitude des phrases." AAAI (2016).
Un modèle LSTM siamois avec une "couche correspondante" ajoutée, comme décrit dans Liu, Yang et al. "Apprendre l'inférence du langage naturel à l'aide du modèle LSTM bidirectionnel et de l'attention intérieure." Corr ABS / 1605.09090 (2016).
Le modèle d'appariement multi-perspectif multi-perspectif plus ou moins de pointe de Wang, Zhiguo et al. "Association multi-perspective bilatérale pour les phrases en langage naturel." Corr ABS / 1702.03814 (2017).
Les relations publiques pour ajouter plus de modèles / optimiser ou patcher les existants sont plus que les bienvenus! La majeure partie du code du modèle réside dans duplicate_questions / modèles
Une grande partie du code de traitement des données est tirée de / inspirée par Allenai / Deep_qa, allez les vérifier si vous aimez la façon dont ce projet est structuré!
Ce projet a été développé et a été testé sur Python 3.5 (il ne fonctionne probablement pas avec d'autres versions de Python), et les exigences du package sont dans requirements.txt .
Pour installer les exigences:
pip install -r requirements.txt
Notez qu'après avoir installé les exigences, vous devez télécharger les données NLTK nécessaires en exécutant (dans votre shell):
python -m nltk.downloader punkt
Notez que le fichier requirements.txt tensorflow comme une dépendance, qui est une version liée au processeur de TensorFlow. Si vous avez un GPU, vous devez désinstaller ce CPU TensorFlow et installer la version GPU en exécutant:
pip uninstall tensorflow
pip install tensorflow-gpu
Pour commencer, exécutez ce qui suit pour générer les répertoires auxiliaires pour le stockage des données, des modèles formés et des journaux:
make aux_dirs
De plus, si vous souhaitez utiliser des vecteurs à gants pré-étendus, exécutez:
make glove
qui téléchargeront des vecteurs de gants pré-entraînés sur data/external/ . Extraire les fichiers dans ce même répertoire.
Pour utiliser les données de paires de questions Quora, téléchargez l'ensemble de données à partir de Kaggle (peut nécessiter un compte). Placez les archives ZIP téléchargées dans data/raw/ et extraire les fichiers à ce même répertoire.
Ensuite, courez:
make quora_data
Pour nettoyer et traiter automatiquement les données avec les scripts dans scripts/data/quora .
Pour former un modèle ou charger + prédire avec un modèle, puis exécutez les scripts dans scripts/run_model/ avec python <script_path> . Vous pouvez obtenir une documentation supplémentaire sur les paramètres qu'ils prennent en exécutant python <script_path> -h
Voici un exemple de commande de course pour la ligne de base Siamois Bilstm:
python scripts/run_model/run_siamese.py train --share_encoder_weights --model_name=baseline_siamese --run_id=0
Voici un exemple de commande d'exécution pour le Siamois Bilstm avec une couche correspondante:
python scripts/run_model/run_siamese_matching_bilstm.py train --share_encoder_weights --model_name=siamese_matching --run_id=0
Voici un exemple de commande d'exécution pour le modèle BIMPM:
python scripts/run_model/run_bimpm.py train --early_stopping_patience=5 --model_name=biMPM --run_id=0
Notez que les valeurs par défaut peuvent ne pas être idéales pour votre utilisation, alors n'hésitez pas à tourner les boutons comme vous le souhaitez.
Avez-vous des idées sur la façon d'améliorer ce repo? Vous avez une demande de fonctionnalité, un rapport de bogue ou un correctif? N'hésitez pas à ouvrir un problème ou des relations publiques, car je suis heureux de résoudre les problèmes et de consulter les demandes de traction.
├── LICENSE
├── Makefile <- Makefile with commands like `make data` or `make train`
├── README.md <- The top-level README for developers using this project.
├── data
│ ├── external <- Data from third party sources.
│ ├── interim <- Intermediate data that has been transformed.
│ ├── processed <- The final, canonical data sets for modeling.
│ └── raw <- Original immutable data (e.g. Quora Question Pairs).
|
├── logs <- Logs from training or prediction, including TF model summaries.
│
├── models <- Serialized models.
|
├── requirements.txt <- The requirements file for reproducing the analysis environment
│
├── duplicate_questions<- Module with source code for models and data.
│ ├── data <- Methods and classes for manipulating data.
│ │
│ ├── models <- Methods and classes for training models.
│ │
│ └── util <- Various helper methods and classes for use in models.
│
├── scripts <- Scripts for generating the data
│ ├── data <- Scripts to clean and split data
│ │
│ └── run_model <- Scripts to train and predict with models.
│
└── tests <- Directory with unit tests.