import gradio as gr from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline import torch # Load grammar correction model grammar_model_name = "prithivida/grammar_error_correcter_v1" grammar_tokenizer = AutoTokenizer.from_pretrained(grammar_model_name) grammar_model = AutoModelForSeq2SeqLM.from_pretrained(grammar_model_name) # Load summarization pipeline summarizer = pipeline("summarization", model="facebook/bart-large-cnn") # Load title generation model (T5) 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): # --- 1. Grammar Correction --- 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) # --- 2. Summary Generation --- summary_text = summarizer(corrected_text, max_length=120, min_length=40, do_sample=False)[0]['summary_text'] # --- 3. Title Generation --- 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 # Gradio interface 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()