HuggingFace / app.py
ZeeAI1's picture
Create app.py
7ec2de1 verified
import streamlit as st
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import difflib
# Load model and tokenizer
@st.cache_resource
def load_model():
model_name = "vennify/t5-base-grammar-correction"
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_text(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
# Word-by-word diff
def get_word_diffs(original, corrected):
orig_words = original.split()
corr_words = corrected.split()
diff = list(difflib.ndiff(orig_words, corr_words))
return diff
# Streamlit UI
st.set_page_config(page_title="Grammar Agent", layout="wide")
st.title("πŸ“ Grammar Agent – Like Grammarly, Powered by AI")
st.markdown("""
This AI grammar agent helps you:
- βœ… Correct grammar, spelling, and punctuation
- βœ… Improve sentence clarity
- βœ… See word-by-word differences
- βœ… Get suggestions on how to rewrite
""")
text_input = st.text_area("Enter your sentence, paragraph, or essay:", height=200)
if st.button("Correct Grammar") and text_input.strip():
corrected = correct_text(text_input)
diffs = get_word_diffs(text_input, corrected)
st.subheader("πŸ”§ Corrected Version")
st.success(corrected)
st.subheader("πŸ” Word-by-Word Differences")
diff_text = []
for word in diffs:
if word.startswith("-"):
diff_text.append(f"❌ {word[2:]}")
elif word.startswith("+"):
diff_text.append(f"βœ… {word[2:]}")
st.markdown(" ".join(diff_text))
st.subheader("πŸ’‘ Writing Suggestion")
if len(text_input.split()) > len(corrected.split()):
st.info("Try simplifying your sentences for better clarity.")
elif len(corrected.split()) > len(text_input.split()):
st.info("The AI added helpful detail – good for formal writing.")
else:
st.info("The AI cleaned grammar and punctuation with minimal changes.")