
Graph4NLP ist eine benutzerfreundliche Bibliothek für F & E an der Schnittstelle des Deep-Lernens in Grafiken und Verarbeitung natürlicher Sprache (dh DLG4NLP). Es bietet sowohl vollständige Implementierungen hochmoderner Modelle für Datenwissenschaftler als auch flexible Schnittstellen , um maßgeschneiderte Modelle für Forscher und Entwickler mit Ganzpipeline-Unterstützung zu erstellen. Graph4NLP basiert auf hochoptimierten Laufzeitbibliotheken, einschließlich DGL, und weist sowohl eine hohe laufende Effizienz als auch eine große Erweiterbarkeit auf. Die Architektur von Graph4NLP ist in der folgenden Abbildung dargestellt, in der Kästchen mit gestrichelten Linien die in der Entwicklung befindlichen Merkmale darstellen. Graph4NLP besteht aus vier verschiedenen Schichten: 1) Datenschicht, 2) Modulschicht, 3) Modellschicht und 4) Anwendungsschicht.

Abbildung : Graph4NLP Gesamtarchitektur
20.01.2022: Die Version v0.5.5 . Probieren Sie es aus!
26.09.2021: V0.5.1 Release . Probieren Sie es aus!
09/01/2021: Willkommen zu unserer DLG4NLP -Website (https://dlg4nlp.github.io/index.html) für verschiedene Lernressourcen!
06/05/2021: Die Version v0.4.1 .
| Veröffentlichungen | Datum | Merkmale |
|---|---|---|
| v0.5.5 | 2022-01-20 | - Support Model.Predict API durch Einführung von Wrapper -Funktionen. - Führen Sie drei neue Funktionen für Inference_Wrapper ein: classifier_inference_wrapper, generator_inference_wrapper, generator_inference_wrapper_for_tree. - Fügen Sie die Beispiele für Inferenz- und Inferenz_Advance in jeder Anwendung hinzu. - Trennen Sie den Graph -Topologie und den Graph -Einbettungsprozess. - Erneuern Sie alle Grafikkonstruktionsfunktionen. - Modul Graph_embedding ist in Graph_embedding_initialization und graph_embedding_learning unterteilt. - Vereinen Sie die Parameter im Datensatz. Wir entfernen den mehrdeutigen Parameter graph_type und stellen graph_name ein, um die Graph Construction -Methode und static_or_dynamic anzugeben, um den statischen oder dynamischen Graphenkonstruktionstyp anzuzeigen.- Neu: Der Datensatz kann jetzt automatisch die Standardmethoden (z. B. topology_builder ) nach nur einem Parameter graph_name auswählen. |
| v0.5.1 | 2021-09-26 | - FINT DIE CODES - Unterstützen Sie die Tests mit eigenen Daten der Benutzer - Beheben Sie den Fehler: Das Wort Einbettungsgröße war in der Version 0.4.1 hart codiert. Jetzt ist es gleich dem Parameter "Word_EMB_SIZE". - Beheben Sie den Fehler: Der Build_vocab () wird in der Version 0.4.1 zweimal aufgerufen. - Behebung des Fehlers: Die beiden Hauptdateien des Knowledge Graph Completion -Beispiels verpassten den optionalen Parameter "kg_graph" in ranking_and_hits () beim Wiederaufnehmen des Modells. - Behebung des Fehlers: Wir haben den Vorverarbeitungspfadfehler in kGC Readme behoben. - Behebung des Fehlers: Wir haben den Einbettungsfehler beim Einstellen von Emb_Strategy auf 'W2V' behoben. |
| v0.4.1 | 2021-06-05 | - Unterstützen Sie die gesamte Pipeline von Graph4NLP - GraphData- und Datensatzunterstützung |
Graph4NLP zielt darauf ab, es unglaublich einfach zu verwenden, GNNs in NLP -Aufgaben zu verwenden (siehe Dokumentation von Graph4NLP). Hier ist ein Beispiel für die Verwendung des Graph2SEQ- Modells (weit verbreitet bei maschineller Übersetzung, Fragenbeantwortung, semantischer Analyse und verschiedenen anderen NLP-Aufgaben, die als Graph-to-Sequenz-Problem abstrahiert und überlegene Leistung gezeigt werden können).
Wir bieten auch andere hochrangige Modell-APIs wie Graph-to-Tree-Modelle an. Wenn Sie an Forschungsproblemen mit DLG4NLP interessiert sind, können Sie unsere Bibliothek sehr gut verwenden und auf unsere Graph4NLP -Umfrage verweisen.
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] Unser Graph4NLP -Computerfluss wird wie unten angezeigt.

Wir bieten eine umfassende Sammlung von NLP -Anwendungen zusammen mit detaillierten Beispielen wie folgt:
Umgebung: Torch 1.8, Ubuntu 16.04 mit 2080ti GPUs
| Aufgabe | Datensatz | GNN -Modell | Grafikkonstruktion | Auswertung | Leistung |
|---|---|---|---|---|---|
| Textklassifizierung | Trekt Cairline CNSST | Gat | Abhängigkeit Wahlkreis Abhängigkeit | Genauigkeit | 0,948 0,785 0,538 |
| Semantische Parsen | Jobs | SALBEI | Wahlkreis | Ausführungsgenauigkeit | 0,936 |
| Fragengenerierung | Kader | Ggnn | Abhängigkeit | Bleu-4 | 0,15175 |
| Maschinelle Übersetzung | IWSLT14 | Gcn | Dynamisch | Bleu-4 | 0,3212 |
| Zusammenfassung | CNN (30k) | Gcn | Abhängigkeit | Rouge-1 | 26.4 |
| Knowledge -Graph -Abschluss | Verwandtschaft | Gcn | Abhängigkeit | MRR | 82.4 |
| Mathematikwort Problem | MAWPS | SALBEI | Dynamisch | Lösungsgenauigkeit | 76,4 |
Derzeit können Benutzer Graph4NLP über PIP- oder Quellcode installieren. Graph4NLP unterstützt die folgenden OSS:
Wir stellen PIP -Räder für alle großen OS/Pytorch/CUDA -Kombinationen zur Verfügung. Beachten Sie, dass wir Windows -Benutzern sehr empfehlen, Installation via source code aufgrund von Kompatibilität zu verweisen.
Beachten Sie, dass >=1.6.0 in Ordnung ist.
$ python -c " import torch; print(torch.__version__) "
>>> 1.6.0$ python -c " import torch; print(torch.version.cuda) "
>>> 10.2 torchtext ist erforderlich, da Graph4NLP darauf angewiesen ist, Emetten zu implementieren. Bitte achten Sie auf die Pytorch -Anforderungen, bevor Sie torchtext mit dem folgenden Skript installieren! Für eine detaillierte Version des Versions finden Sie hier hier.
pip install torchtext # >=0.7.0 pip install graph4nlp ${CUDA} wobei ${CUDA} durch die spezifische CUDA-Version ( none (CPU-Version), "-cu92" , "-cu101" , "-cu102" , "-cu110" ) ersetzt werden sollte. Die folgende Tabelle zeigt die konkreten Befehlszeilen. Weitere Informationen zu CUDA 11.1 -Benutzern finden Sie in Installation via source code .
| Plattform | Befehl |
|---|---|
| CPU | 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 |
Beachten Sie, dass >=1.6.0 in Ordnung ist.
$ python -c " import torch; print(torch.__version__) "
>>> 1.6.0$ python -c " import torch; print(torch.version.cuda) "
>>> 10.2 torchtext ist erforderlich, da Graph4NLP darauf angewiesen ist, Emetten zu implementieren. Bitte achten Sie auf die Pytorch -Anforderungen, bevor Sie torchtext mit dem folgenden Skript installieren! Für eine detaillierte Version des Versions finden Sie hier hier.
pip install torchtext # >=0.7.0 Graph4NLP von GitHub herunter: git clone https://github.com/graph4ai/graph4nlp.git
cd graph4nlp Dann führen Sie ./configure (oder ./configure.bat Wenn Sie Windows 10 verwenden) zur Konfiguration Ihrer Installation ausführen. Im Konfigurationsprogramm werden Sie aufgefordert, Ihre CUDA -Version anzugeben. Wenn Sie keine GPU haben, geben Sie bitte "CPU" ein.
./configureEndlich das Paket installieren:
python setup.py installWir zeigen einige der Hyperparameter, die hier oft abgestimmt sind.
Wenn Sie mehr über die Anwendung von Deep Learning in Graphs -Techniken auf NLP -Aufgaben erfahren möchten, besuchen Sie die DLG4NLP -Website (https://dlg4nlp.github.io/index.html) für verschiedene Lernressourcen! Sie können sich auf unser Umfragdapier beziehen, der einen Überblick über diese vorhandene Forschungsrichtung bietet. Wenn Sie einen detaillierten Verweis auf unsere Bibliothek wünschen, lesen Sie bitte unsere Dokumente.
Bitte teilen Sie uns mit, ob Sie auf einen Fehler stoßen oder Vorschläge haben, indem Sie ein Problem einreichen.
Wir begrüßen alle Beiträge von Fehlerbehebungen bis hin zu neuen Funktionen und Erweiterungen.
Wir erwarten alle Beiträge, die im Themen -Tracker diskutiert werden und PRs durchlaufen.
Wenn Sie diesen Code nützlich fanden, sollten Sie die folgenden Papiere zitieren.
@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}
}
Graph4ai Team: Lingfei Wu (Teamleiter), Yu Chen, Kai Shen, Xiaojie Guo, Hanning Gao, Shucheng Li, Saizhuo Wang, Xiao Liu und Jing Hu. Wir sind leidenschaftlich daran interessiert, nützliche Open-Source-Bibliotheken zu entwickeln, die die einfache Verwendung verschiedener Deep-Lernen in Graphen-Techniken für die Verarbeitung natürlicher Sprache fördern möchten. 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).
Wenn Sie technische Fragen haben, senden Sie bitte neue Probleme.
Wenn Sie weitere Fragen haben, kontaktieren Sie uns bitte: Lingfei Wu [[email protected]] und Xiaojie Guo [[email protected]] .
Graph4NLP verwendet Apache -Lizenz 2.0.