Este repo contém o código Pytorch para a convolução do gráfico em papel sobre as árvores de dependência podada melhora a extração de relação.
Este artigo/código introduz uma rede neural convolucional (GCN) sobre as árvores de dependência podada para a tarefa de extração de relação. Uma técnica de poda de árvore especial chamada de poda centrada no caminho também é introduzida para eliminar informações irrelevantes das árvores, mantendo o máximo de informações relevantes. Comparado a modelos de sequência, como vários modelos baseados em LSTM, esse modelo GCN utiliza estruturas de dependência para preencher palavras remotas, portanto, melhora o desempenho para as relações de longo alcance. Comparado a modelos recursivos anteriores, como o TreelStM, esse modelo GCN alcança um melhor desempenho, sendo muito ouvido para paralelizar e, portanto, muito mais eficiente.
Veja abaixo uma visão geral da arquitetura do modelo:

O código requer que você tenha acesso ao conjunto de dados Tacred (licença LDC necessária). O conjunto de dados Tacred está atualmente programado para lançamento público via LDC em dezembro de 2018. Para um possível acesso antecipado a esses dados, entre em contato conosco em yuhao.zhang ~at~ stanford.edu . Depois de ter os dados tacred, coloque os arquivos JSON no dataset/tacred do diretório. Para completude, incluímos apenas arquivos de dados de amostra do conjunto de dados Tacred neste repositório.
Primeiro, download e vetores de luvas unzip do site do Stanford NLP Group, com:
chmod +x download.sh; ./download.sh
Em seguida, prepare o vocabulário e os vetores iniciais de palavras com:
python prepare_vocab.py dataset/tacred dataset/vocab --glove_dir dataset/glove
Isso escreverá vetores de vocabulário e palavras como uma matriz Numpy no dataset/vocab DIR.
Para treinar um modelo de Rede Neural Convolucional (GCN), executar:
bash train_gcn.sh 0
Os pontos de verificação do modelo e os logs serão salvos em ./saved_models/00 .
Para treinar um modelo contextualizado de GCN (C-GCN), execute:
bash train_cgcn.sh 1
Os pontos de verificação do modelo e os logs serão salvos em ./saved_models/01 .
Para obter detalhes sobre o uso de outros parâmetros, como a distância de poda K, consulte o train.py
Para executar a avaliação no conjunto de testes, execute:
python eval.py saved_models/00 --dataset test
Isso usará o arquivo best_model.pt por padrão. Use --model checkpoint_epoch_10.pt Para especificar um arquivo de ponto de verificação do modelo.
Recarregue um modelo pré -treinado e o Finetune, execute:
python train.py --load --model_file saved_models/01/best_model.pt --optim sgd --lr 0.001
O artigo também inclui comparações com o modelo LSTM (PA-LSTM) de atenção à posição (PA-LSTM) para extração de relações. Para reproduzir os resultados correspondentes, consulte este repo.
@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}
}
Todo o trabalho contido neste pacote é licenciado sob a licença Apache, versão 2.0. Consulte o arquivo de licença incluído.