Graph4NLP is an easy-to-use library for R&D at the intersection of Deep Learning on Graphs and Natural Language Processing (i.e., DLG4NLP). It provides both full implementations of state-of-the-art models for data scientists and also flexible interfaces to build customized models for researchers and developers with whole-pipeline support. Built upon highly-optimized runtime libraries including DGL , Graph4NLP has both high running efficiency and great extensibility. The architecture of Graph4NLP is shown in the following figure, where boxes with dashed lines represents the features under development. Graph4NLP consists of four different layers: 1) Data Layer, 2) Module Layer, 3) Model Layer, and 4) Application Layer.
Figure: Graph4NLP Overall Architecture
01/20/2022: The v0.5.5 release. Try it out!
09/26/2021: The v0.5.1 release. Try it out!
09/01/2021: Welcome to visit our DLG4NLP website (https://dlg4nlp.github.io/index.html) for various learning resources!
06/05/2021: The v0.4.1 release.
graph_type
and introduce graph_name
to indicate the graph construction method and static_or_dynamic
to indicate the static or dynamic graph construction type.
topology_builder
) by only one parameter graph_name
. v0.5.1 2021-09-26 - Lint the codes
Graph4nlp aims to make it incredibly easy to use GNNs in NLP tasks (check out Graph4NLP Documentation). Here is an example of how to use the Graph2seq model (widely used in machine translation, question answering, semantic parsing, and various other NLP tasks that can be abstracted as graph-to-sequence problem and has shown superior performance).
We also offer other high-level model APIs such as graph-to-tree models. If you are interested in DLG4NLP related research problems, you are very welcome to use our library and refer to our graph4nlp survey.
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]
Our Graph4NLP computing flow is shown as below.
Graph4NLP Models and ApplicationsWe provide a comprehensive collection of NLP applications, together with detailed examples as follows:
Environment: torch 1.8, ubuntu 16.04 with 2080ti GPUs
Task Dataset GNN Model Graph construction Evaluation Performance Text classification TRECTCurrently, users can install Graph4NLP via pip or source code. Graph4NLP supports the following OSes:
We provide pip wheels for all major OS/PyTorch/CUDA combinations. Note that we highly recommend Windows
users refer to Installation via source code
due to compatibility.
Note that >=1.6.0
is ok.
$ python -c "import torch; print(torch.__version__)" >>> 1.6.0Find the CUDA version PyTorch was installed with (for GPU users):
$ python -c "import torch; print(torch.version.cuda)" >>> 10.2Install the relevant dependencies:
torchtext
is needed since Graph4NLP relies on it to implement embeddings. Please pay attention to the PyTorch requirements before installing torchtext
with the following script! For detailed version matching please refer here.
pip install torchtext # >=0.7.0
pip install graph4nlp${CUDA}
where ${CUDA}
should be replaced by the specific CUDA version (none
(CPU version), "-cu92"
, "-cu101"
, "-cu102"
, "-cu110"
). The following table shows the concrete command lines. For CUDA 11.1 users, please refer to Installation via source code
.
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
Installation via source code Ensure that at least PyTorch (>=1.6.0) is installed:
Note that >=1.6.0
is ok.
$ python -c "import torch; print(torch.__version__)" >>> 1.6.0Find the CUDA version PyTorch was installed with (for GPU users):
$ python -c "import torch; print(torch.version.cuda)" >>> 10.2Install the relevant dependencies:
torchtext
is needed since Graph4NLP relies on it to implement embeddings. Please pay attention to the PyTorch requirements before installing torchtext
with the following script! For detailed version matching please refer here.
pip install torchtext # >=0.7.0Download the source code of
Graph4NLP
from Github:
git clone https://github.com/graph4ai/graph4nlp.git cd graph4nlpConfigure the CUDA version
Then run ./configure
(or ./configure.bat
if you are using Windows 10) to config your installation. The configuration program will ask you to specify your CUDA version. If you do not have a GPU, please type 'cpu'.
Finally, install the package:
For Hyperparameter tuningWe show some of the hyperparameters that are often tuned here.
New to Deep Learning on Graphs for NLP?If you want to learn more on applying Deep Learning on Graphs techniques to NLP tasks, welcome to visit our DLG4NLP website (https://dlg4nlp.github.io/index.html) for various learning resources! You can refer to our survey paper which provides an overview of this existing research direction. If you want detailed reference to our library, please refer to our docs.
Please let us know if you encounter a bug or have any suggestions by filing an issue.
We welcome all contributions from bug fixes to new features and extensions.
We expect all contributions discussed in the issue tracker and going through PRs.
If you found this code useful, please consider citing the following papers.
@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 (team leader), Yu Chen, Kai Shen, Xiaojie Guo, Hanning Gao, Shucheng Li, Saizhuo Wang, Xiao Liu and Jing Hu. We are passionate in developing useful open-source libraries which aim to promote the easy use of various Deep Learning on Graphs techniques for Natural Language Processing. 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 T.J. Watson Research Center (Xiaojie Guo), Tongji University (Hanning Gao), Nanjing University (Shucheng Li), HKUST (Saizhuo Wang).
If you have any technical questions, please submit new issues.
If you have any other questions, please contact us: Lingfei Wu [lwu@email.wm.edu] and Xiaojie Guo [xiaojie.guo@jd.com].
Graph4NLP uses Apache License 2.0.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4