AgX-2 / agxpre.py
AGofficial's picture
Upload 8 files
767f47f verified
def correct_grammar(text):
import re
from string import punctuation
contractions = {
"cant": "can't",
"wont": "won't",
"dont": "don't",
"doesnt": "doesn't",
"didnt": "didn't",
"isnt": "isn't",
"arent": "aren't",
"wasnt": "wasn't",
"werent": "weren't",
"havent": "haven't",
"hasnt": "hasn't",
"hadnt": "hadn't",
"im": "I'm",
"youre": "you're",
"hes": "he's",
"shes": "she's",
"its": "it's",
"theyre": "they're",
"ive": "I've",
"weve": "we've",
"youve": "you've",
"wouldve": "would've",
"couldve": "could've",
"shouldve": "should've",
"thats": "that's",
"theres": "there's",
"heres": "here's",
"whos": "who's",
"whats": "what's",
"wheres": "where's",
"whens": "when's",
"whys": "why's",
"hows": "how's"
}
def fix_contractions(text):
for wrong, correct in contractions.items():
text = re.sub(r'\b' + wrong + r'\b', correct, text, flags=re.IGNORECASE)
return text
def fix_capitalization(text):
sentences = re.split(r'(?<=[.!?])\s+', text.strip())
sentences = [s[0].upper() + s[1:] if s else s for s in sentences]
return ' '.join(sentences)
def fix_punctuation_spacing(text):
text = re.sub(r'\s+([,.!?;])', r'\1', text)
text = re.sub(r'([,.!?;])\s*([,.!?;])', r'\1 \2', text)
text = re.sub(r'\s*([\(])\s*', r' \1', text)
text = re.sub(r'\s*([\)])', r'\1', text)
return text
def fix_possessives(text):
text = re.sub(r'\b(\w+)s\b', r"\1's", text)
text = re.sub(r"\b(\w+)'s\s+(own|house|car|book|dog|cat|child|children)\b", r"\1's \2", text)
return text
def fix_common_mistakes(text):
common_errors = {
"your": "you're",
"there": "their",
"then": "than",
"loose": "lose",
"effect": "affect",
"to": "too",
"alot": "a lot",
"wierd": "weird",
"definately": "definitely",
"seperate": "separate"
}
for wrong, correct in common_errors.items():
text = re.sub(r'\b' + wrong + r'\b', correct, text, flags=re.IGNORECASE)
return text
def ensure_sentence_ends(text):
if text and text[-1] not in '.!?':
text += '.'
return text
def remove_extra_spaces(text):
text = re.sub(r'\s+', ' ', text)
return text.strip()
def fix_quotation_marks(text):
text = re.sub(r'"([^"]*)"', r'"\1"', text)
text = re.sub(r'\'([^\']*)\'', r'"\1"', text)
return text
def fix_subject_verb_agreement(text):
text = re.sub(r'\b(he|she|it)\s+(go|run|jump|sing|dance)\b', r'\1 \2es', text, flags=re.IGNORECASE)
text = re.sub(r'\b(I|you|we|they)\s+(goes|runs|jumps|sings|dances)\b', r'\1 \2', text, flags=re.IGNORECASE)
return text
if not text or not isinstance(text, str):
return ""
text = fix_contractions(text)
text = fix_capitalization(text)
text = fix_punctuation_spacing(text)
text = fix_possessives(text)
text = fix_common_mistakes(text)
text = fix_quotation_marks(text)
text = fix_subject_verb_agreement(text)
text = ensure_sentence_ends(text)
text = remove_extra_spaces(text)
return text