Ce repo contient le code pytorch pour la convolution du graphique papier sur les arbres de dépendance élagués améliore l'extraction des relations.
Cet article / code introduit un réseau neuronal convolutionnel graphique (GCN) sur des arbres de dépendance élagués pour la tâche d'extraction de relation. Une technique spéciale de l'élagage des arbres appelé élagage centré sur le chemin est également introduite pour éliminer les informations non pertinentes des arbres tout en maintenant au maximum des informations pertinentes. Par rapport à des modèles de séquence tels que divers modèles basés sur LSTM, ce modèle GCN utilise des structures de dépendance pour combler les mots éloignés, améliore donc les performances pour les relations à longue portée. Par rapport à des modèles récursifs précédents tels que le TreelStm, ce modèle GCN réalise de meilleures performances tout en étant très coiffante pour paralléliser et donc beaucoup plus efficace.
Voir ci-dessous pour un aperçu de l'architecture du modèle:

Le code nécessite que vous ayez accès à l'ensemble de données TACRED (licence LDC requise). L'ensemble de données TACRED est actuellement prévu pour la publication publique via LDC en décembre 2018. Pour un éventuel accès précoce à ces données, veuillez nous contacter sur yuhao.zhang ~at~ stanford.edu . Une fois que vous avez les données TACRed, veuillez mettre les fichiers JSON sous le dataset/tacred . Pour l'exhaustivité, nous n'incluons que des exemples de fichiers de données de l'ensemble de données TACred dans ce dépôt.
Tout d'abord, téléchargez et dézip Glove Vectors du site Web du groupe NLP de Stanford, avec:
chmod +x download.sh; ./download.sh
Préparez ensuite les vecteurs de vocabulaire et de mots initiaux avec:
python prepare_vocab.py dataset/tacred dataset/vocab --glove_dir dataset/glove
Cela écrira des vecteurs de vocabulaire et de mots comme une matrice Numpy dans l' dataset/vocab DIR.
Pour former un modèle de réseau de neurones convolutionnels graphiques (GCN), exécuter:
bash train_gcn.sh 0
Les points de contrôle et les journaux du modèle seront enregistrés sur ./saved_models/00 .
Pour former un modèle GCN contextualisé (C-GCN), exécuter:
bash train_cgcn.sh 1
Les points de contrôle et les journaux du modèle seront enregistrés sur ./saved_models/01 .
Pour plus de détails sur l'utilisation d'autres paramètres, tels que la distance d'élagage k, veuillez vous référer à train.py .
Pour exécuter l'évaluation sur l'ensemble de tests, exécutez:
python eval.py saved_models/00 --dataset test
Cela utilisera le fichier best_model.pt par défaut. Utiliser --model checkpoint_epoch_10.pt pour spécifier un fichier de point de contrôle de modèle.
Recharger un modèle pré-entraîné et Finetune It, courir:
python train.py --load --model_file saved_models/01/best_model.pt --optim sgd --lr 0.001
Le document comprend également des comparaisons avec le modèle LSTM (PA-LSTM) conscient de la position pour l'extraction des relations. Pour reproduire les résultats correspondants, veuillez vous référer à ce dépôt.
@inproceedings{zhang2018graph,
author = {Zhang, Yuhao and Qi, Peng and Manning, Christopher D.},
booktitle = {Empirical Methods in Natural Language Processing (EMNLP)},
title = {Graph Convolution over Pruned Dependency Trees Improves Relation Extraction},
url = {https://nlp.stanford.edu/pubs/zhang2018graph.pdf},
year = {2018}
}
Tous les travaux contenus dans ce package sont concédés sous licence Apache, version 2.0. Voir le fichier de licence inclus.