|
import gradio as gr |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline |
|
import torch |
|
|
|
|
|
grammar_model_name = "prithivida/grammar_error_correcter_v1" |
|
grammar_tokenizer = AutoTokenizer.from_pretrained(grammar_model_name) |
|
grammar_model = AutoModelForSeq2SeqLM.from_pretrained(grammar_model_name) |
|
|
|
|
|
summarizer = pipeline("summarization", model="facebook/bart-large-cnn") |
|
|
|
|
|
title_model_name = "t5-base" |
|
title_tokenizer = AutoTokenizer.from_pretrained(title_model_name) |
|
title_model = AutoModelForSeq2SeqLM.from_pretrained(title_model_name) |
|
|
|
def polish_abstract(text): |
|
|
|
grammar_input = grammar_tokenizer("gec: " + text, return_tensors="pt", max_length=512, truncation=True) |
|
grammar_output = grammar_model.generate(**grammar_input, max_length=512) |
|
corrected_text = grammar_tokenizer.decode(grammar_output[0], skip_special_tokens=True) |
|
|
|
|
|
summary_text = summarizer(corrected_text, max_length=120, min_length=40, do_sample=False)[0]['summary_text'] |
|
|
|
|
|
title_prompt = "generate title: " + corrected_text |
|
title_inputs = title_tokenizer(title_prompt, return_tensors="pt", max_length=512, truncation=True) |
|
title_output = title_model.generate(**title_inputs, max_length=20, num_beams=5) |
|
generated_title = title_tokenizer.decode(title_output[0], skip_special_tokens=True) |
|
|
|
return corrected_text, summary_text, generated_title |
|
|
|
|
|
iface = gr.Interface( |
|
fn=polish_abstract, |
|
inputs=gr.Textbox(lines=12, label="Paste Your Abstract"), |
|
outputs=[ |
|
gr.Textbox(label="β
Grammar-Corrected Abstract"), |
|
gr.Textbox(label="πͺ Concise Summary"), |
|
gr.Textbox(label="π AI-Suggested Title"), |
|
], |
|
title="π§ AI Abstract & Title Polisher", |
|
description="This tool corrects grammar, summarizes, and suggests a title for biomedical abstracts." |
|
) |
|
|
|
iface.launch() |
|
|