| import gradio as gr |
|
|
| import torch |
| from transformers import pipeline |
| from transformers import PegasusForConditionalGeneration, PegasusTokenizer |
|
|
| classifier = pipeline( |
| "question-answering", |
| model="deepset/roberta-base-squad2", |
| tokenizer="deepset/roberta-base-squad2" |
| ) |
|
|
| model_name = 'tuner007/pegasus_paraphrase' |
| torch_device = 'cuda' if torch.cuda.is_available() else 'cpu' |
| tokenizer3 = PegasusTokenizer.from_pretrained(model_name) |
| model3 = PegasusForConditionalGeneration.from_pretrained(model_name).to(torch_device) |
|
|
|
|
| def qa_paraphrase(text_input, question): |
| prediction = classifier( |
| context=text_input, |
| question=question, |
| truncation=True, |
| max_length=512, |
| padding=True, |
| ) |
| answer = prediction['answer'] |
| answer_start = prediction['start'] |
| answer_end = prediction['end'] |
| context = text_input.split(".") |
| for i in range(len(context)): |
| if answer in context[i]: |
| sentence = context[i].strip() + "." |
| break |
| batch = tokenizer3([sentence],truncation=True,padding='longest',max_length=60, return_tensors="pt").to(torch_device) |
| translated = model3.generate(**batch,max_length=60,num_beams=10, num_return_sequences=1, temperature=1.5) |
| paraphrase = tokenizer3.batch_decode(translated, skip_special_tokens=True)[0] |
| return f"Answer: {answer}\nLong Form Answer: {paraphrase}" |
|
|
|
|
| iface = gr.Interface( |
| fn=qa_paraphrase, |
| inputs=[ |
| gr.inputs.Textbox(label="Text Input"), |
| gr.inputs.Textbox(label="Question") |
| ], |
| outputs=gr.outputs.Textbox(label="Output"), |
| title="Long Form Question Answering", |
| description="mimics long form question answering by extracting the sentence containing the answer and paraphrasing it" |
| ) |
|
|
| iface.launch() |
|
|