Spaces:
Running
Running
File size: 2,042 Bytes
2d95e24 3c5a224 2d95e24 3c5a224 2d95e24 3c5a224 2d95e24 3c5a224 2d95e24 3c5a224 2d95e24 3c5a224 2d95e24 3c5a224 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import streamlit as st
from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM, T5Tokenizer, T5ForConditionalGeneration
# Model 1: Grammar & spelling correction
grammar_model = "vennify/t5-base-grammar-correction"
tokenizer = AutoTokenizer.from_pretrained(grammar_model)
model = AutoModelForSeq2SeqLM.from_pretrained(grammar_model)
corrector = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
# Model 2: Explanation & suggestions
explain_model = "google/flan-t5-large"
exp_tokenizer = T5Tokenizer.from_pretrained(explain_model)
exp_model = T5ForConditionalGeneration.from_pretrained(explain_model)
def correct_text(text):
input_text = "gec: " + text
result = corrector(input_text, max_length=512, clean_up_tokenization_spaces=True)
return result[0]['generated_text']
def explain_and_suggest(original, corrected):
prompt = (
f"Original: {original}\n"
f"Corrected: {corrected}\n"
"Explain the grammar, spelling, or style changes made. "
"Mention any alternate better words. Then suggest how the writer can improve in the future."
)
inputs = exp_tokenizer(prompt, return_tensors="pt", truncation=True)
outputs = exp_model.generate(**inputs, max_length=512)
return exp_tokenizer.decode(outputs[0], skip_special_tokens=True)
# Streamlit UI
st.set_page_config(page_title="Grammar & Writing Coach", layout="centered")
st.title("π Grammar & Writing Coach")
st.markdown("Enter a sentence, paragraph, or essay. We'll correct it, explain the changes, and help you improve.")
text_input = st.text_area("βοΈ Your text here:", height=200)
if st.button("π Analyze & Improve"):
if not text_input.strip():
st.warning("Please enter some text first.")
else:
corrected = correct_text(text_input)
explanation = explain_and_suggest(text_input, corrected)
st.subheader("β
Corrected Version:")
st.write(corrected)
st.subheader("π Explanation & Suggestions:")
st.write(explanation)
|