File size: 1,718 Bytes
1fa82ac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
---
language: tr
tags:
- question-answering
- loodos-bert-base
- TQuAD 
- tr
datasets:
- TQuAD


---
# Turkish SQuAD  Model : Question Answering

Fine-tuned Loodos-Turkish-Bert-Model for Question-Answering problem with TQuAD dataset
* Loodos-BERT-base: https://huggingface.co/loodos/bert-base-turkish-uncased
* TQuAD dataset:  https://github.com/TQuad/turkish-nlp-qa-dataset


# Training Code

```
!python3 Turkish-QA.py \
  --model_type bert \
  --model_name_or_path loodos/bert-base-turkish-uncased
  --do_train \
  --do_eval \
  --train_file trainQ.json \
  --predict_file dev1.json \
  --per_gpu_train_batch_size 8 \
  --learning_rate 5e-5 \
  --num_train_epochs 10 \
  --max_seq_length 384 \
  --output_dir "./model"
```

# Example Usage

> Load Model
```
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("emre/distilbert-tr-q-a")
model = AutoModelForQuestionAnswering.from_pretrained("emre/distilbert-tr-q-a")
nlp = pipeline('question-answering', model=model, tokenizer=tokenizer)
```

> Apply the model
```
def ask(question,context):
  temp = nlp(question=question, context=context)
  start_idx = temp["start"]
  end_idx = temp["end"]
  return context[start_idx:end_idx]
izmir="İzmir, Türkiye'de Ege Bölgesi'nde yer alan şehir ve ülkenin 81 ilinden biridir. Ülkenin nüfus bakımından en kalabalık üçüncü şehridir. Ekonomik, tarihi ve sosyo-kültürel açıdan önde gelen şehirlerden biridir. Nüfusu 2021 itibarıyla 4.425.789 kişidir. Yüzölçümü olarak ülkenin yirmi üçüncü büyük ilidir."
soru1 = "İzmir'in nüfusu kaçtır?"
print(ask(soru1,izmir))
soru2 = "İzmir hangi bölgede bulunur?"
print(ask(soru2,izmir))
```