import streamlit as st from transformers import pipeline from diff_match_patch import diff_match_patch # Load grammar correction pipeline @st.cache_resource def load_grammar_model(): return pipeline("text2text-generation", model="vennify/t5-base-grammar-correction") # Optional: load explanation model (like flan-t5) @st.cache_resource def load_explainer_model(): return pipeline("text2text-generation", model="google/flan-t5-large") grammar_model = load_grammar_model() explainer_model = load_explainer_model() dmp = diff_match_patch() st.title("Grammarly-like AI Writing Assistant") st.markdown("Fix grammar, punctuation, spelling, tenses — with explanations and tips!") # User input user_input = st.text_area("Enter your sentence, paragraph, or essay:", height=200) if st.button("Correct Grammar"): if user_input.strip(): # Correct the input output = grammar_model(f"grammar: {user_input}", max_length=512, do_sample=False)[0]["generated_text"] st.subheader("Corrected Text") st.success(output) # Show word-by-word diff st.subheader("Changes Highlighted") diffs = dmp.diff_main(user_input, output) dmp.diff_cleanupSemantic(diffs) html_diff = "" for (op, data) in diffs: if op == -1: html_diff += f'{data}' elif op == 1: html_diff += f'{data}' else: html_diff += data st.markdown(f"