import streamlit as st from transformers import AutoModelForSeq2SeqLM, AutoTokenizer import torch import difflib # Load the grammar correction model @st.cache_resource def load_model(): model_name = "prithivida/grammar_error_correcter_v1" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name) return tokenizer, model tokenizer, model = load_model() # Function to correct grammar def correct_grammar(text): input_text = "gec: " + text inputs = tokenizer.encode(input_text, return_tensors="pt", truncation=True) outputs = model.generate(inputs, max_length=512, num_beams=4, early_stopping=True) corrected_text = tokenizer.decode(outputs[0], skip_special_tokens=True) return corrected_text # Function to show differences def show_differences(original, corrected): diff = difflib.ndiff(original.split(), corrected.split()) changes = [] for d in diff: if d.startswith("- "): changes.append(f"❌ Removed: `{d[2:]}`") elif d.startswith("+ "): changes.append(f"✅ Added: `{d[2:]}`") return "\n".join(changes) if changes else "No major changes found." # Streamlit UI st.title("📝 Grammar Correction App") st.write("Enter a sentence or paragraph below, and the AI will correct grammatical errors and highlight the changes.") user_input = st.text_area("Your Text", height=200, placeholder="Type or paste your text here...") if st.button("Correct Grammar"): if user_input.strip(): with st.spinner("Correcting grammar..."): corrected = correct_grammar(user_input) st.subheader("✅ Corrected Text") st.success(corrected) st.subheader("🕵️ What Changed?") st.markdown(show_differences(user_input, corrected)) else: st.warning("Please enter some text to correct.")