UnifiedSKG
1.0.0
Code for EMNLP 2022 (oral) paper UnifiedSKG: Unifying and Multi-Tasking Structured Knowledge Grounding with Text-to-Text Language Models. Please refer to our project page for up-to-date related resources (e.g., papers, code, tools, tutorials) for Structured Knowledge Grounding. Load our checkpoints from HuggingFace Model Hub.
.
├── configure # Config files for experiments, tasks, and settings
│ ├── META_TUNING # Config files for tasks and settings
│ └── Salesforce # Config files for experiments (see Misc)
│
├── metrics # Code for evaluation
│ └── ... # Please check the README of the ./seq2seq_construction.
├── models # Code for models
│ ├── adapter # Code for T5 and BART with adapters (based on HuggingFace Transformers)
│ ├── prompt # Code for T5 and BART with prefix-tuning (based on HuggingFace Transformers)
│ └── unified
│ ├── base.py # Code for the base model that enables an arbitrary model to be pushed to HuggingFace Model Hub (namely, PushToHubFriendlyModel)
│ ├── finetune.py # Code for finetuning
│ ├── adaptertuning.py # Code for adapter-tuning
│ ├── prefixtuning.py # Code for prefix-tuning
│ └── combined_prefixtuning.py # Code for combined prefix-tuning (not used in our paper, see Misc)
│
├── seq2seq_construction # Code for converting raw data into sequences
│ └── ... # Please check the README in this directory.
│
├── tasks # Code for loading raw data
│ └── ... # Please check the README in this directory.
│
├── third_party # Packages from third parties
│ └── ... # Please check the README in this directory.
│
├── utils # Code for some (probably) useful stuff
│ ├── processor # Adopted from Tapex: the processor that handles table truncation and linearization
│ └── ...
│ ├── configure.py # Code for parsing config files in ./configure
│ ├── dataset.py # Code for converting input and output sequences into Datasets for training
│ ├── tool.py # Code for loading models, seq2seq constructors, and evaluators
│ ├── trainer.py # Code for EvaluationFriendlyTrainer. If you want make training-specific modifications, you may want to change something here.
│ └── training_arguments.py # Code for seq2seq training arguments
│
├── .gitignore
├── .gitmodules
├── py3.7pytorch1.8.yaml # Anaconda environment config file
├── README.md # The README file you are looking at :)
└── train.py # Entry code, which controls train, eval, test, storage, and logging
(READMEs in ./tasks, ./seq2seq_construction, ./metrics, ./configure can also be helpful)
./tasks. You can search HuggingFace Datasets for possibly useful scripts. If not, you can be the contributor of both this project and the HuggingFace community../seq2seq_construction to construct sequence inputs (user request and structured knowledge) and sequene outputs from raw data for the unification../metrics. If a third-party repository is used, remember to add it into .gitmodules../models for a new model architecture or a new learning algorithm../configure/META_TUNING../configure/Salesforce../models/unified/combined_prefixtuning.py is not used in our paper. This file contains code for the interaction between multiple prefixes in a single training loop. We tried some variants of such interaction but did not find any of them to outperform the (extremely simple) transfer learning-based approach used in our paper. However, we open-source our failed attempts and call for potential future exploration.
That's all for it :D
If you find our work helpful, please cite as
@article{UnifiedSKG,
title={UnifiedSKG: Unifying and Multi-Tasking Structured Knowledge Grounding with Text-to-Text Language Models},
author={Tianbao Xie and Chen Henry Wu and Peng Shi and Ruiqi Zhong and Torsten Scholak and Michihiro Yasunaga and Chien-Sheng Wu and Ming Zhong and Pengcheng Yin and Sida I. Wang and Victor Zhong and Bailin Wang and Chengzu Li and Connor Boyle and Ansong Ni and Ziyu Yao and Dragomir Radev and Caiming Xiong and Lingpeng Kong and Rui Zhang and Noah A. Smith and Luke Zettlemoyer and Tao Yu},
journal={EMNLP},
year={2022},
}