File size: 4,824 Bytes
864a05c a5d7011 864a05c a5d7011 864a05c c557b0c 864a05c 39e47dd c308d1c 864a05c c557b0c 864a05c 54a1e39 |
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
---
language: tr
---
# Turkish Question Answering Model : Question Answering
Inspired by savasy/bert-base-turkish-squad,
* Inspired model: https://huggingface.co/savasy/bert-base-turkish-squad
* BERT-base: https://huggingface.co/dbmdz/bert-base-turkish-uncased
* Dataset: Private QnA Chatbot Database
# Training Code
```
model_args = QuestionAnsweringArgs()
model_args.train_batch_size = 16
model_args.evaluate_during_training = True
model_args.n_best_size=3
model_args.num_train_epochs=5
train_args = {
"reprocess_input_data": True,
"overwrite_output_dir": True,
"use_cached_eval_features": True,
"output_dir": f"outputs/bert",
"best_model_dir": f"outputs/bert/best_model1",
"evaluate_during_training": True,
"max_seq_length": 128,
"num_train_epochs": 10,
"evaluate_during_training_steps": 1000,
"wandb_project": "Question Answer Application",
"wandb_kwargs": {"name": "dbmdz/bert-base-turkish-uncased\"},
"save_model_every_epoch": False,
"save_eval_checkpoints": False,
"n_best_size":3,
# "use_early_stopping": True,
# "early_stopping_metric": "mcc",
"n_gpu": 4,
# "manual_seed": 4,
"use_multiprocessing": True,
"train_batch_size": 126,
"eval_batch_size": 64,
# "config": {
# "output_hidden_states": True
# }
}
model = QuestionAnsweringModel(
"bert","dbmdz/bert-base-turkish-uncased\", args=train_args
)
model.train_model(train, eval_data=test)
```
# Dataset Sample
```
{
"context": "Varlıklara ait yeniden değerleme toplamlarının özet olarak alındığı rapor seçeneğidir. Varlık Yönetimi program bölümünde Raporlar menüsü altında yer alır. Rapor yıllık olarak alınır. Toplamların alınacağı yıl, Yıl filtre satırında belirtilir. Rapor filtre seçenekleri aşağıdaki tabloda yer almaktadır.",
"qas": [
{
"id": "01017",
"is_impossible": false,
"question": "Yeniden Değerleme Özeti ne işe yarar",
"answers": [
{
"text": "Varlıklara ait yeniden değerleme toplamlarının özet olarak alındığı rapor seçeneğidir.",
"answer_start": 0
}
]
},
{
"id": "01018",
"is_impossible": false,
"question": " Yeniden Değerleme Özetine nereden ulaşırım",
"answers": [
{
"text": "Varlık Yönetimi program bölümünde Raporlar menüsü altında yer alır.",
"answer_start": 87
}
]
}
}
```
# Example Usage
> Load Model
```
#Required Libraries
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
import torch
#Model Path
hface_path = "yunusemreemik/logo-qna-model"
#For tokenize context and question
tokenizer = AutoTokenizer.from_pretrained(hface_path)
#For generate NN eval outputs
model = AutoModelForQuestionAnswering.from_pretrained(hface_path)
#For functional pipe
nlp = pipeline("question-answering", model=model, tokenizer=tokenizer)
```
> Apply the model.
> Please dont forget the delete backslashes "\" before run
```
e_arsiv ="e-Arşiv Tipleri, e-Arşiv fatura türünün belirlendiği alandır. İlgili cari hesap kartında \\nLogoConnect sayfasında belirlenen e-arşiv tipi alana öndeğer olarak \\naktarılır. Standart faturalar için herhangi bir seçim yapılmaz. \\nÖzel matrah uygulanan tütün, altın, gümüş, gazete, dergi, belediye \\nşehir yolcu taşımacılığı ve telefon kartı satışları için kesilen faturalar. \\nİstisna uygulanan faturalar. (İhracat teslimleri ve bu teslimlere ilişkin hizmetler, \\nmal ihracatı, hizmet ihracatı, serbest bölgelerdeki müşteriler için yapılan fason hizmetler vs..) \\nAraç Tescil Faturası, Araç tescil için kesilen faturalardır."
answer_text = nlp(question="İlgili cari hesap kartları nerede belirlenir?", context=e_arsiv)
print(answer_text )
```
```
print(nlp(question="", context=e_arsiv))
```
# Evaluation
```
(160,
{'global_step': [16, 32, 48, 64, 80, 96, 112, 128, 144, 160],
'correct': [11, 15, 18, 18, 19, 16, 16, 16, 14, 14],
'similar': [23, 26, 22, 21, 21, 24, 24, 23, 25, 25],
'incorrect': [8, 1, 2, 3, 2, 2, 2, 3, 3, 3],
'train_loss': [0.8277238607406616,
0.7876648306846619,
0.44657397270202637,
0.32337626814842224,
0.2009371519088745,
0.15247923135757446,
0.11289173364639282,
0.06762214750051498,
0.06813357770442963,
0.04011240229010582],
'eval_loss': [-9.3046875,
-8.8984375,
-9.1171875,
-9.03125,
-9.046875,
-8.984375,
-9.1171875,
-9.296875,
-9.296875,
-9.296875]})
``` |