Turkish Question Generation
Offical source code for
citation
If you use this software in your work, please cite as:
@article{akyon2021automated,
title={Automated question generation and question answering from Turkish texts using text-to-text transformers},
author={Akyon, Fatih Cagatay and Cavusoglu, Devrim and Cengiz, Cemil and Altinuc, Sinan Onur and Temizel, Alptekin},
journal={arXiv preprint arXiv:2111.06476},
year={2021}
}
install
git clone https://github.com/obss/turkish-question-generation.git
cd turkish-question-generation
pip install -r requirements.txt
train
- start a training using args:
python run.py --model_name_or_path google/mt5-small --output_dir runs/exp1 --do_train --do_eval --tokenizer_name_or_path mt5_qg_tokenizer --per_device_train_batch_size 4 --gradient_accumulation_steps 2 --learning_rate 1e-4 --seed 42 --save_total_limit 1
- download json config file and start a training:
python run.py config.json
- downlaod yaml config file and start a training:
python run.py config.yaml
evaluate
- arrange related params in config:
do_train: false
do_eval: true
eval_dataset_list: ["tquad2-valid", "xquad.tr"]
prepare_data: true
mt5_task_list: ["qa", "qg", "ans_ext"]
mt5_qg_format: "both"
no_cuda: false
- start an evaluation:
python run.py config.yaml
neptune
- install neptune:
pip install neptune-client
- download config file and arrange neptune params:
run_name: 'exp1'
neptune_project: 'name/project'
neptune_api_token: 'YOUR_API_TOKEN'
- start a training:
python train.py config.yaml
wandb
- install wandb:
pip install wandb
- download config file and arrange wandb params:
run_name: 'exp1'
wandb_project: 'turque'
- start a training:
python train.py config.yaml
finetuned checkpoints
Name | Model | data train |
params (M) |
model size (GB) |
---|---|---|---|---|
turque-s1 | mt5-small | tquad2-train+tquad2-valid+xquad.tr | 60M | 1.2GB |
mt5-small-3task-both-tquad2 | mt5-small | tquad2-train | 60M | 1.2GB |
mt5-small-3task-prepend-tquad2 | mt5-small | tquad2-train | 60M | 1.2GB |
mt5-base-3task-both-tquad2 | mt5-base | tquad2-train | 220M | 2.3GB |
format
- answer extraction:
input:
"
Osman Bey 1258 yılında Söğüt’te doğdu.
Osman Bey 1 Ağustos 1326’da Bursa’da hayatını kaybetmiştir.1281 yılında Osman Bey 23 yaşında iken Ahi teşkilatından olan Şeyh Edebali’nin kızı Malhun Hatun ile evlendi."
target:
1258
Söğüt’te
- question answering:
input:
"question: Osman Bey nerede doğmuştur? context: Osman Bey 1258 yılında Söğüt’te doğdu. Osman Bey 1 Ağustos 1326’da Bursa’da hayatını kaybetmiştir.1281 yılında Osman Bey 23 yaşında iken Ahi teşkilatından olan Şeyh Edebali’nin kızı Malhun Hatun ile evlendi."
target:
"Söğüt’te"
- question generation (prepend):
input:
"answer: Söğüt’te context: Osman Bey 1258 yılında Söğüt’te doğdu. Osman Bey 1 Ağustos 1326’da Bursa’da hayatını kaybetmiştir.1281 yılında Osman Bey 23 yaşında iken Ahi teşkilatından olan Şeyh Edebali’nin kızı Malhun Hatun ile evlendi."
target:
"Osman Bey nerede doğmuştur?"
- question generation (highlight):
input:
"generate question: Osman Bey 1258 yılında
Söğüt’te
doğdu. Osman Bey 1 Ağustos 1326’da Bursa’da hayatını kaybetmiştir.1281 yılında Osman Bey 23 yaşında iken Ahi teşkilatından olan Şeyh Edebali’nin kızı Malhun Hatun ile evlendi."
target:
"Osman Bey nerede doğmuştur?"
- question generation (both):
input:
"answer: Söğüt’te context: Osman Bey 1258 yılında
Söğüt’te
doğdu. Osman Bey 1 Ağustos 1326’da Bursa’da hayatını kaybetmiştir.1281 yılında Osman Bey 23 yaşında iken Ahi teşkilatından olan Şeyh Edebali’nin kızı Malhun Hatun ile evlendi."
target:
"Osman Bey nerede doğmuştur?"
paper results
paper configs
You can find the config files used in the paper under configs/paper.
contributing
Before opening a PR:
- Install required development packages:
pip install "black==21.7b0" "flake8==3.9.2" "isort==5.9.2"
- Reformat with black and isort:
black . --config pyproject.toml
isort .