
Graph4NLP es una biblioteca fácil de usar para I + D en la intersección del aprendizaje profundo en gráficos y procesamiento del lenguaje natural (es decir, dlg4nlp). Proporciona implementaciones completas de modelos de vanguardia para científicos de datos y también interfaces flexibles para construir modelos personalizados para investigadores y desarrolladores con soporte de billete completo. Construido en bibliotecas de tiempo de ejecución altamente optimizadas, incluidas DGL, Graph4NLP tiene una alta eficiencia de ejecución y una gran extensibilidad. La arquitectura de Graph4NLP se muestra en la siguiente figura, donde los cuadros con líneas discontinuas representan las características en desarrollo. Graph4NLP consta de cuatro capas diferentes: 1) capa de datos, 2) capa del módulo, 3) capa de modelo y 4) capa de aplicación.

Figura : Graph4NLP Arquitectura general
20/01/2022: la versión V0.5.5 . ¡Pruébalo!
26/09/2021: la versión V0.5.1 . ¡Pruébalo!
01/09/2021: Bienvenido a visitar nuestro sitio web DLG4NLP (https://dlg4nlp.github.io/index.html) ¡Para varios recursos de aprendizaje!
06/05/2021: la versión V0.4.1 .
| Lanzamientos | Fecha | Características |
|---|---|---|
| V0.5.5 | 2022-01-20 | - Soporte Model.Predict API mediante la introducción de funciones de envoltura. - Introducir tres nuevas funciones Inference_Wrapper: Classifier_inference_Wrapper, Generator_inference_Wrapper, Generator_inference_wrapper_for_tree. - Agregue los ejemplos de inferencia e inferencia_advance en cada aplicación. - Separe la topología gráfica y el proceso de incrustación de gráficos. - Renovar todas las funciones de construcción de gráficos. - Módulo Graph_embedding se divide en Graph_embedding_initialization y Graph_embedding_learning. - Unificar los parámetros en el conjunto de datos. Eliminamos el parámetro ambiguo graph_type e introducimos graph_name para indicar el método de construcción de gráficos y static_or_dynamic para indicar el tipo de construcción de gráficos estáticos o dinámicos.- Nuevo: el conjunto de datos ahora puede elegir automáticamente los métodos predeterminados (por ejemplo, topology_builder ) por solo un parámetro graph_name . |
| V0.5.1 | 2021-09-26 | - pelusa los códigos - Admite pruebas con los datos propios de los usuarios - Se corrigió el error: el tamaño de la incrustación de la palabra estaba codificado en la versión 0.4.1. Ahora es igual al parámetro "Word_emb_Size". - Se corrigió el error: el build_vocab () se llama dos veces en la versión 0.4.1. - Se corrigió el error: los dos archivos principales de finalización del gráfico de conocimiento se perdieron el parámetro opcional "kg_graph" en ranking_and_hits () al reanudar el entrenamiento del modelo. - Se corrige el error: hemos solucionado el error de ruta de preprocesamiento en KGC ReadMe. - Se corrige el error: hemos solucionado el error de construcción de incrustación al configurar Emb_Strategy en 'W2V'. |
| V0.4.1 | 2021-06-05 | - Admite toda la tubería de Graph4NLP - Graphdata y soporte de conjunto de datos |
Graph4NLP tiene como objetivo hacer que sea increíblemente fácil usar GNN en tareas NLP (consulte la documentación Graph4NLP). Aquí hay un ejemplo de cómo usar el modelo GRAPH2SEQ (ampliamente utilizado en la traducción automática, la respuesta a las preguntas, el análisis semántico y varias otras tareas de PNL que pueden abstraer como problema de gráfico a secuencia y ha mostrado un rendimiento superior).
También ofrecemos otras API de modelos de alto nivel, como modelos gráficos a árbol. Si está interesado en los problemas de investigación relacionados con DLG4NLP, puede usar nuestra biblioteca y consulte nuestra encuesta GRAPH4NLP.
from graph4nlp . pytorch . datasets . jobs import JobsDataset
from graph4nlp . pytorch . modules . graph_construction . dependency_graph_construction import DependencyBasedGraphConstruction
from graph4nlp . pytorch . modules . config import get_basic_args
from graph4nlp . pytorch . models . graph2seq import Graph2Seq
from graph4nlp . pytorch . modules . utils . config_utils import update_values , get_yaml_config
# build dataset
jobs_dataset = JobsDataset ( root_dir = 'graph4nlp/pytorch/test/dataset/jobs' ,
topology_builder = DependencyBasedGraphConstruction ,
topology_subdir = 'DependencyGraph' ) # You should run stanfordcorenlp at background
vocab_model = jobs_dataset . vocab_model
# build model
user_args = get_yaml_config ( "examples/pytorch/semantic_parsing/graph2seq/config/dependency_gcn_bi_sep_demo.yaml" )
args = get_basic_args ( graph_construction_name = "node_emb" , graph_embedding_name = "gat" , decoder_name = "stdrnn" )
update_values ( to_args = args , from_args_list = [ user_args ])
graph2seq = Graph2Seq . from_args ( args , vocab_model )
# calculation
batch_data = JobsDataset . collate_fn ( jobs_dataset . train [ 0 : 12 ])
scores = graph2seq ( batch_data [ "graph_data" ], batch_data [ "tgt_seq" ]) # [Batch_size, seq_len, Vocab_size] Nuestro flujo de computación Graph4NLP se muestra a continuación.

Proporcionamos una colección completa de aplicaciones PNL, junto con ejemplos detallados de la siguiente manera:
Medio ambiente: Torch 1.8, Ubuntu 16.04 con GPU 2080TI
| Tarea | Conjunto de datos | Modelo GNN | Construcción de gráficos | Evaluación | Actuación |
|---|---|---|---|---|---|
| Clasificación de texto | Trama Cubierta CNSST | REVÓLVER | Dependencia Distrito electoral Dependencia | Exactitud | 0.948 0.785 0.538 |
| Análisis semántico | Trabajos | SABIO | Distrito electoral | Precisión de la ejecución | 0.936 |
| Generación de preguntas | Equipo | Ggnn | Dependencia | Bleu-4 | 0.15175 |
| Traducción automática | IWSLT14 | GCN | Dinámica | Bleu-4 | 0.3212 |
| Resumen | CNN (30k) | GCN | Dependencia | Rouge-1 | 26.4 |
| Finalización del gráfico de conocimiento | Parentesco | GCN | Dependencia | MRR | 82.4 |
| Problema de palabras matemáticas | Mawps | SABIO | Dinámica | Precisión de la solución | 76.4 |
Actualmente, los usuarios pueden instalar Graph4NLP a través de PIP o código fuente . Graph4NLP admite los siguientes sistemas operativos:
Proporcionamos ruedas PIP para todas las principales combinaciones de OS/Pytorch/CUDA. Tenga en cuenta que recomendamos que los usuarios Windows se refieran a Installation via source code debido a la compatibilidad.
Tenga en cuenta que >=1.6.0 está bien.
$ python -c " import torch; print(torch.__version__) "
>>> 1.6.0$ python -c " import torch; print(torch.version.cuda) "
>>> 10.2 torchtext es necesario ya que Graph4NLP se basa en él para implementar incrustaciones. ¡Preste atención a los requisitos de Pytorch antes de instalar torchtext con el siguiente script! Para una coincidencia de versión detallada, consulte aquí.
pip install torchtext # >=0.7.0 pip install graph4nlp ${CUDA} donde ${CUDA} debe ser reemplazado por la versión CUDA específica ( none (versión de CPU), "-cu92" , "-cu101" , "-cu102" , "-cu110" ). La siguiente tabla muestra las líneas de comando concretas. Para los usuarios de CUDA 11.1, consulte Installation via source code .
| Plataforma | Dominio |
|---|---|
| UPC | pip install graph4nlp |
| CUDA 9.2 | pip install graph4nlp-cu92 |
| CUDA 10.1 | pip install graph4nlp-cu101 |
| CUDA 10.2 | pip install graph4nlp-cu102 |
| CUDA 11.0 | pip install graph4nlp-cu110 |
Tenga en cuenta que >=1.6.0 está bien.
$ python -c " import torch; print(torch.__version__) "
>>> 1.6.0$ python -c " import torch; print(torch.version.cuda) "
>>> 10.2 torchtext es necesario ya que Graph4NLP se basa en él para implementar incrustaciones. ¡Preste atención a los requisitos de Pytorch antes de instalar torchtext con el siguiente script! Para una coincidencia de versión detallada, consulte aquí.
pip install torchtext # >=0.7.0 Graph4NLP de GitHub: git clone https://github.com/graph4ai/graph4nlp.git
cd graph4nlp Luego ejecute ./configure (o ./configure.bat si está utilizando Windows 10) para configurar su instalación. El programa de configuración le pedirá que especifique su versión CUDA. Si no tiene una GPU, escriba 'CPU'.
./configureFinalmente, instale el paquete:
python setup.py installMostramos algunos de los hiperparámetros que a menudo se ajustan aquí.
Si desea obtener más información sobre cómo aplicar el aprendizaje profundo sobre las técnicas de gráficos a las tareas de PNL, bienvenido a visitar nuestro sitio web DLG4NLP (https://dlg4nlp.github.io/index.html) para obtener varios recursos de aprendizaje! Puede consultar nuestro documento de encuesta que proporciona una visión general de esta dirección de investigación existente. Si desea una referencia detallada a nuestra biblioteca, consulte nuestros documentos.
Háganos saber si encuentra un error o tiene alguna sugerencia presentando un problema.
Agradecemos todas las contribuciones de correcciones de errores a nuevas características y extensiones.
Esperamos todas las contribuciones discutidas en el rastreador de problemas y pasando por relaciones públicas.
Si encontró este código útil, considere citar los siguientes documentos.
@article{wu2021graph,
title={Graph Neural Networks for Natural Language Processing: A Survey},
author={Lingfei Wu and Yu Chen and Kai Shen and Xiaojie Guo and Hanning Gao and Shucheng Li and Jian Pei and Bo Long},
journal={arXiv preprint arXiv:2106.06090},
year={2021}
}
@inproceedings{chen2020iterative,
title={Iterative Deep Graph Learning for Graph Neural Networks: Better and Robust Node Embeddings},
author={Chen, Yu and Wu, Lingfei and Zaki, Mohammed J},
booktitle={Proceedings of the 34th Conference on Neural Information Processing Systems},
month={Dec. 6-12,},
year={2020}
}
@inproceedings{chen2020reinforcement,
author = {Chen, Yu and Wu, Lingfei and Zaki, Mohammed J.},
title = {Reinforcement Learning Based Graph-to-Sequence Model for Natural Question Generation},
booktitle = {Proceedings of the 8th International Conference on Learning Representations},
month = {Apr. 26-30,},
year = {2020}
}
@article{xu2018graph2seq,
title={Graph2seq: Graph to sequence learning with attention-based neural networks},
author={Xu, Kun and Wu, Lingfei and Wang, Zhiguo and Feng, Yansong and Witbrock, Michael and Sheinin, Vadim},
journal={arXiv preprint arXiv:1804.00823},
year={2018}
}
@inproceedings{li-etal-2020-graph-tree,
title = {Graph-to-Tree Neural Networks for Learning Structured Input-Output Translation with Applications to Semantic Parsing and Math Word Problem},
author = {Li, Shucheng and
Wu, Lingfei and
Feng, Shiwei and
Xu, Fangli and
Xu, Fengyuan and
Zhong, Sheng},
booktitle = {Findings of the Association for Computational Linguistics: EMNLP 2020},
month = {Nov},
year = {2020}
}
@inproceedings{huang-etal-2020-knowledge,
title = {Knowledge Graph-Augmented Abstractive Summarization with Semantic-Driven Cloze Reward},
author = {Huang, Luyang and
Wu, Lingfei and
Wang, Lu},
booktitle = {Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics},
month = {Jul},
year = {2020},
pages = {5094--5107}
}
@inproceedings{wu-etal-2018-word,
title = {Word Mover{'}s Embedding: From {W}ord2{V}ec to Document Embedding},
author = {Wu, Lingfei and
Yen, Ian En-Hsu and
Xu, Kun and
Xu, Fangli and
Balakrishnan, Avinash and
Chen, Pin-Yu and
Ravikumar, Pradeep and
Witbrock, Michael J.},
booktitle = {Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing},
pages = {4524--4534},
year = {2018},
}
@inproceedings{chen2020graphflow,
author = {Yu Chen and
Lingfei Wu and
Mohammed J. Zaki},
title = {GraphFlow: Exploiting Conversation Flow with Graph Neural Networks
for Conversational Machine Comprehension},
booktitle = {Proceedings of the Twenty-Ninth International Joint Conference on
Artificial Intelligence, {IJCAI} 2020},
publisher = {International Joint Conferences on Artificial Intelligence Organization},
pages = {1230--1236},
year = {2020}
}
@inproceedings{shen2020hierarchical,
title={Hierarchical Attention Based Spatial-Temporal Graph-to-Sequence Learning for Grounded Video Description},
author={Shen, Kai and Wu, Lingfei and Xu, Fangli and Tang, Siliang and Xiao, Jun and Zhuang, Yueting},
booktitle = {Proceedings of the Twenty-Ninth International Joint Conference on
Artificial Intelligence, {IJCAI} 2020},
publisher = {International Joint Conferences on Artificial Intelligence Organization},
pages = {941--947},
year = {2020}
}
@inproceedings{ijcai2020-419,
title = {RDF-to-Text Generation with Graph-augmented Structural Neural Encoders},
author = {Gao, Hanning and Wu, Lingfei and Hu, Po and Xu, Fangli},
booktitle = {Proceedings of the Twenty-Ninth International Joint Conference on
Artificial Intelligence, {IJCAI-20}},
publisher = {International Joint Conferences on Artificial Intelligence Organization},
pages = {3030--3036},
year = {2020}
}
Equipo Graph4ai: Lingfei Wu (líder del equipo), Yu Chen, Kai Shen, Xiaojie Guo, Hanning Gao, Shucheng Li, Saizhuo Wang, Xiao Liu y Jing Hu. Nos apasiona desarrollar bibliotecas útiles de código abierto que tengan como objetivo promover el uso fácil de varios aprendizaje profundo en técnicas de gráficos para el procesamiento del lenguaje natural. Our team consists of research scientists, applied data scientists, and graduate students from a variety of industrial and academic groups, including Pinterest (Lingfei Wu), Zhejiang University (Kai Shen), Facebook AI (Yu Chen), IBM TJ Watson Research Center (Xiaojie Guo), Tongji University (Hanning Gao), Nanjing University (Shucheng Li), HKUST (Saizhuo Wang).
Si tiene alguna pregunta técnica, envíe nuevos problemas.
Si tiene alguna otra pregunta, contáctenos: Lingfei Wu [[email protected]] y Xiaojie Guo [[email protected]] .
Graph4NLP usa la licencia Apache 2.0.