File size: 1,174 Bytes
1360c1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b210408
 
 
1360c1b
c5999ac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Model Cache - Centralized lazy loading for expensive ML models.
"""

import os
import logging

logger = logging.getLogger(__name__)

# =============================================================================
# Cached Model Instances
# =============================================================================

_SPACY_MODEL = None
_KEYBERT_MODEL = None
_SUMMARIZER = None


def initialize_all_models():
    """Eagerly load all NLP models into memory."""
    get_spacy()

def get_spacy():
    """
    Lazy-load spaCy model once, reuse forever.

    Returns:
        Language: The loaded spaCy model
    """
    global _SPACY_MODEL
    if _SPACY_MODEL is None:
        import spacy
        logger.info("Loading spaCy model...")
        try:
            _SPACY_MODEL = spacy.load("en_core_web_md")
        except OSError:
            logger.warning("en_core_web_md not found. Attempting to download...")
            import subprocess
            subprocess.run(["python", "-m", "spacy", "download", "en_core_web_md"], check=True)
            _SPACY_MODEL = spacy.load("en_core_web_md")
        logger.info("spaCy model loaded successfully")
    return _SPACY_MODEL