mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
import logging
|
|
import re
|
|
from textblob import TextBlob
|
|
|
|
# Pre-compile the regular expression
|
|
PERCENTAGE_PATTERN = re.compile(r'^\d+%?$')
|
|
|
|
|
|
def setup_logger(log_file=None, level=logging.INFO, overwrite_handler=False):
|
|
# Create a logger and set the logging level
|
|
logger = logging.getLogger()
|
|
logger.setLevel(level)
|
|
|
|
# if logger already has handlers, just return it
|
|
if logger.hasHandlers() and not overwrite_handler:
|
|
return logger
|
|
|
|
# Define the log message format
|
|
log_format = "%(asctime)s [%(levelname)s] %(message)s"
|
|
date_format = "%Y-%m-%d %H:%M:%S"
|
|
formatter = logging.Formatter(log_format, datefmt=date_format)
|
|
|
|
# Create a file handler and set the file path and format
|
|
if log_file:
|
|
file_handler = logging.FileHandler(log_file)
|
|
file_handler.setLevel(level)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
# Create a console handler and set the format
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(level)
|
|
|
|
# Set the formatter for the handlers
|
|
console_handler.setFormatter(formatter)
|
|
|
|
# Add the handlers to the logger
|
|
logger.addHandler(console_handler)
|
|
|
|
return logger
|
|
|
|
|
|
def is_percentage_or_number(s):
|
|
# re.match returns None if the string does not match the pattern
|
|
return PERCENTAGE_PATTERN.match(s) is not None
|
|
|
|
|
|
def correct_spelling(text):
|
|
words = text.split()
|
|
|
|
corrected_words = []
|
|
for word in words:
|
|
if is_percentage_or_number(word):
|
|
corrected_words.append(word)
|
|
else:
|
|
blob = TextBlob(word) # create a TextBlob object
|
|
corrected_word = blob.correct() # use the correct method to correct spelling
|
|
corrected_words.append(str(corrected_word)) # convert corrected word back to string
|
|
|
|
corrected_text = ' '.join(corrected_words)
|
|
return corrected_text
|