citation
If you use this software in your work, please cite as:
@article{akyon2022questgen,
author = {Akyon, Fatih Cagatay and Cavusoglu, Ali Devrim Ekin and Cengiz, Cemil and Altinuc, Sinan Onur and Temizel, Alptekin},
doi = {10.3906/elk-1300-0632.3914},
journal = {Turkish Journal of Electrical Engineering and Computer Sciences},
title = {{Automated question generation and question answering from Turkish texts}},
url = {https://journals.tubitak.gov.tr/elektrik/vol30/iss5/17/},
year = {2022}
}
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 | training data |
trained tasks |
model size (GB) |
---|---|---|---|---|
mt5-small-3task-highlight-tquad2 | mt5-small | tquad2-train | QA,QG,AnsExt | 1.2GB |
mt5-small-3task-prepend-tquad2 | mt5-small | tquad2-train | QA,QG,AnsExt | 1.2GB |
mt5-small-3task-highlight-combined3 | mt5-small | tquad2-train+tquad2-valid+xquad.tr | QA,QG,AnsExt | 1.2GB |
mt5-base-3task-highlight-tquad2 | mt5-base | tquad2-train | QA,QG,AnsExt | 2.3GB |
mt5-base-3task-highlight-combined3 | mt5-base | tquad2-train+tquad2-valid+xquad.tr | QA,QG,AnsExt | 2.3GB |
format
- answer extraction:
input:
"<hl> Osman Bey 1258 yılında Söğüt’te doğdu. <hl> 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:
<sep> 1258 <sep> Söğüt’te <sep>
- 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 <hl> Söğüt’te <hl> 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 <hl> Söğüt’te <hl> 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 .