import torch from transformers import AutoTokenizer, AutoModelForSeq2SeqLM import gradio as gr import pickle vectorizer = pickle.load(open("tfidf.pickle", "rb")) clf = pickle.load(open("classifier.pickle", "rb")) example_context = "ফলস্বরূপ, ১৯৭৯ সালে, সনি এবং ফিলিপস একটি নতুন ডিজিটাল অডিও ডিস্ক ডিজাইন করার জন্য প্রকৌশলীদের একটি যৌথ টাস্ক ফোর্স গঠন করে। ইঞ্জিনিয়ার কিস শুহামার ইমমিনক এবং তোশিতাদা দোই এর নেতৃত্বে, গবেষণাটি লেজার এবং অপটিক্যাল ডিস্ক প্রযুক্তিকে এগিয়ে নিয়ে যায়। এক বছর পরীক্ষা-নিরীক্ষা ও আলোচনার পর টাস্ক ফোর্স রেড বুক সিডি-ডিএ স্ট্যান্ডার্ড তৈরি করে। প্রথম প্রকাশিত হয় ১৯৮০ সালে। আইইসি কর্তৃক ১৯৮৭ সালে আন্তর্জাতিক মান হিসেবে আনুষ্ঠানিকভাবে এই মান গৃহীত হয় এবং ১৯৯৬ সালে বিভিন্ন সংশোধনী মানের অংশ হয়ে ওঠে।'" example_answer = "১৯৮০" def choose_model(model_choice): if model_choice=="mt5-small": return "jannatul17/squad-bn-qgen-mt5-small-v1" elif model_choice=="mt5-base": return "Tahsin-Mayeesha/squad-bn-mt5-base2" else : return "jannatul17/squad-bn-qgen-banglat5-v1" def generate_questions(model_choice,context,answer,numReturnSequences=1,num_beams=None,do_sample=False,top_p=None,top_k=None,temperature=None): model_name = choose_model(model_choice) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) text='answer: '+answer + ' context: ' + context text_encoding = tokenizer.encode_plus( text,return_tensors="pt" ) model.eval() generated_ids = model.generate( input_ids=text_encoding['input_ids'], attention_mask=text_encoding['attention_mask'], max_length=120, num_beams=num_beams, do_sample=do_sample, top_k = top_k, top_p = top_p, temperature = temperature, num_return_sequences=numReturnSequences ) text = [] for id in generated_ids: text.append(tokenizer.decode(id,skip_special_tokens=True,clean_up_tokenization_spaces=True).replace('question: ',' ')) question = " ".join(text) correctness_pred = clf.predict(vectorizer.transform([question]))[0] if correctness_pred == 1: correctness = "Correct" else : correctness = "Incorrect" return question, correctness demo = gr.Interface(fn=generate_questions, inputs=[gr.Dropdown(label="Model", choices=["mt5-small","mt5-base","banglat5"],value="banglat5"), gr.Textbox(label='Context'), gr.Textbox(label='Answer'), # hyperparameters gr.Slider(1, 3, 1, step=1, label="Num return Sequences"), # beam search gr.Slider(1, 10,value=None, step=1, label="Beam width"), # top-k/top-p gr.Checkbox(label="Do Random Sample",value=False), gr.Slider(0, 50, value=None, step=1, label="Top K"), gr.Slider(0, 1, value=None, label="Top P/Nucleus Sampling"), gr.Slider(0, 1, value=None, label="Temperature") ] , # output outputs=[gr.Textbox(label='Question'), gr.Textbox(label='Grammatical Correctness')], examples=[["banglat5",example_context,example_answer]], cache_examples=False, title="Bangla Question Generation") demo.launch()