How to use
Our codes provide the ability for Question Generation, please follow these steps to train your QG models.
Enviroment
run pip install -r requirements.txt to install the required packages.
Train QG Models
-
Prepare data
You can use the hotpotQA dataset ./data/hotpotqa and squad1.1 dataset ./data/squad1.1 we provided, or use your own dataset which provides passages, references, and answers.
If you use the datasets we provided, run
python process.pyto process the data, ready for your training.# For example: train T5 based on HotpotQA save_dir = 'directory to save processed data' hot = T5Hotpot() hot.deal_hotpot(save_dir)
-
Train your own QG models
We provide codes to train
T5/FLAN-T5/BART-based QG models. You may update training arguments in ./args, and run the code file for specific model to train.# model name: code file name BART-base/large_finetune: bart.py T5-base/large_finetune: T5.py Flan-T5-base/large_finetune: Flan-T5.py Flan-T5-xl/xxl_LoRA: Flan-T5-lora.py
For example,
train T5-base_finetune QG model based on HotpotQA-
Update the arg_file
./args/t5_base_hotpot.json{ "model_name_or_path": "google-t5/t5-base", "tokenizer_name_or_path": "google-t5/t5-base", "max_len": 512, "target_max_len": 163, "output_dir": "./model/t5-base/hotpotqa", "overwrite_output_dir": true, "per_device_train_batch_size": 16, "per_device_eval_batch_size": 16, "gradient_accumulation_steps": 8, "learning_rate": 0.0001, "warmup_steps": 500, "weight_decay": 0.01, "num_train_epochs": 10, "seed": 42, "do_train": true, "do_eval": true, "logging_steps": 100, "logging_dir": "./model/t5-base/logs", "train_file_path": "./data/data_t5/hotpotqa/pt/train.pt", "valid_file_path": "./data/data_t5/hotpotqa/pt/dev.pt", "remove_unused_columns": false, "prediction_loss_only": true, "load_best_model_at_end": true, "evaluation_strategy": "epoch", "save_strategy": "epoch" }
-
Run code in
T5.pyto train QG model# train model arg_path = './args/t5_base_hotpot.json' data_dir = 'directory of your data' # processed data train_path = data_dir + 'train.json' dev_path = data_dir + 'dev.json' test_path = data_dir + 'test.json' # optional train_qg(arg_path, train_path, dev_path, test_path)
-
Generate questions using QG models
We provide different types of QG models for question generation.
-
Use fine-tuned models in
lmqgrun
python apply_lmqg.pyto get the questions generated by models in lmqg.model_name = 'lmqg/flan-t5-base-squad-qg' data_json_path='./data/squad-test.json' save_path='./result/squad-test.csv' questions = apply_lmqg( model_name=model_name, data_json_path=data_json_path, save_path=save_path, batch_size=8 )
-
Use fine-tuned (including LoRA) models we provided for QG
Run specific code file for each type of model. For example, to use
T5-base_finetunemodel to generate questions onHotpotQA Test Set, run code inT5.py.# test arg_path = './args/t5_base_hotpot.json' test_pt_path = './data/data_t5/hotpotqa/pt/test.pt' # tokenized test data model_dir = './model/t5-base/hotpotqa/' tokenizer_dir = model_dir + 'tokenizer/' result_save_path = './result/t5-base-finetune/hotpotqa/prediction.csv' decoded_texts = predict(model_dir, tokenizer_dir, test_pt_path, result_save_path)
-
Use few-shot mode
Run specific code file for each type of model. For example, to use
Flan-T5-xl_fewshotmodel to generate questions onHotpotQA Test Set, run code inFlan-T5.py.# few-shot prediction model = 'google/flan-t5-large' few_shot_path = './data/squad1.1-few.json' # examples used for few-shot learning test_path = './data/squad-dev.json' result_save_path = './result/{}/prediction-few.csv'.format(model) dataset_name = 'hotpotqa' predict_few(model, few_shot_path, test_path, result_save_path, dataset_name)
-
Use GPTs
Run code in
generate_gpt.pydata_path = './test.xlsx' # your data for QG model = 'gpt-3.5-turbo' save_dir = './result/' few_shot_path = './data/hotpotqa-few.json' question_generation( data_path=data_path, model=model, save_dir=save_dir, few_shot_path=few_shot_path )
Metadata
Release files for QGEval-qg 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| QGEval_qg-1.1.0.tar.gz | 17.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| QGEval_qg-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.2 kB
Release files / QGEval_qg-1.1.0.tar.gz
| Download URL | QGEval_qg-1.1.0.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e15c495f979c723125d152864b45591f975425014c3ad29cad524394100ba908
|
|
BLAKE2b-256 checksum How to use checksums |
4cc402017af66ae095413c1621acd1af1f87848ac6b9e254b670377679118fcd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.10
|
Release files / QGEval_qg-1.1.0-py3-none-any.whl
| Download URL | QGEval_qg-1.1.0-py3-none-any.whl |
|---|---|
| Size | 28.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d3ec32769485f181b6b97a44cd2e81e98e7740d52971bcd835a97d9138c83e2
|
|
BLAKE2b-256 checksum How to use checksums |
2036f87afa475d71d1ed719e6b8e52a8854c89ae6a6344a34a9b3179923b12dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.10
|