from functools import lru_cache from app.ml.image.image_classifier import ImageClassifier from app.ml.text_classifier import TextClassifier from app.moderation.image.validator import ImageValidator from app.moderation.profanity.detector import ProfanityDetector from app.moderation.profanity.dictionary import ProfanityDictionary from app.moderation.profanity.lemmatizer import Lemmatizer from app.services.image_moderation_service import ImageModerationService from app.services.text_moderation_service import TextModerationService from app.ml.image.clip_classifier import ClipClassifier _clip_classifier = None @lru_cache def get_clip_classifier(): global _clip_classifier if _clip_classifier is None: _clip_classifier = ClipClassifier() return _clip_classifier @lru_cache def get_text_classifier() -> TextClassifier: return TextClassifier() @lru_cache def get_profanity_detector() -> ProfanityDetector: return ProfanityDetector( dictionary=ProfanityDictionary( file_path="app/resources/profanity_words.txt" ), lemmatizer=Lemmatizer() ) @lru_cache def get_text_moderation_service() -> TextModerationService: return TextModerationService( classifier=get_text_classifier(), profanity_detector=get_profanity_detector() ) @lru_cache def get_image_validator(): return ImageValidator() def get_image_classifier(): return ImageClassifier() @lru_cache def get_image_moderation_service(): return ImageModerationService( classifier=get_image_classifier(), validator=get_image_validator(), clip_classifier=get_clip_classifier() )