Views
No views yet
batch_size = 8
n_epochs = 4
base_LM_model = "AraElectra"
learning_rate = 3e-5
optimizer = AdamW
padding = dynamic1from transformers import ElectraForQuestionAnswering, ElectraForSequenceClassification, AutoTokenizer, pipeline
2from preprocess import ArabertPreprocessor
3prep_object = ArabertPreprocessor("araelectra-base-discriminator")
4question = prep_object('ما هي جامعة الدول العربية ؟')
5context = prep_object('''
6جامعة الدول العربية هيمنظمة إقليمية تضم دولاً عربية في آسيا وأفريقيا.
7ينص ميثاقها على التنسيق بين الدول الأعضاء في الشؤون الاقتصادية، ومن ضمنها العلاقات التجارية الاتصالات، العلاقات الثقافية، الجنسيات ووثائق وأذونات السفر والعلاقات الاجتماعية والصحة. المقر الدائم لجامعة الدول العربية يقع في القاهرة، عاصمة مصر (تونس من 1979 إلى 1990).
8''')
9# a) Get predictions
10qa_modelname = 'ZeyadAhmed/AraElectra-Arabic-SQuADv2-QA'
11cls_modelname = 'ZeyadAhmed/AraElectra-Arabic-SQuADv2-CLS'
12qa_pipe = pipeline('question-answering', model=qa_modelname, tokenizer=qa_modelname)
13QA_input = {
14 'question': question,
15 'context': context
16}
17CLS_input = {
18 'text': question,
19 'text_pair': context
20}
21qa_res = qa_pipe(QA_input)
22cls_res = cls_pipe(CLS_iput)
23threshold = 0.5 #hyperparameter can be tweaked
24## note classification results label0 probability it can be answered label1 probability can't be answered
25## if label1 probability > threshold then consider the output of qa_res is empty string else take the qa_res
26# b) Load model & tokenizer
27qa_model = ElectraForQuestionAnswering.from_pretrained(qa_modelname)
28cls_model = ElectraForSequenceClassification.from_pretrained(cls_modelname)
29tokenizer = AutoTokenizer.from_pretrained(qa_modelname)"exact": 65.11555277951281,
"f1": 71.49042547237256,,
"total": 9606,
"HasAns_exact": 56.14535768645358,
"HasAns_f1": 67.79623803036668,
"HasAns_total": 5256,
"NoAns_exact": 75.95402298850574,
"NoAns_f1": 75.95402298850574,
"NoAns_total": 4350