Update app.py
Browse files
app.py
CHANGED
@@ -32,7 +32,27 @@ logging.basicConfig(
|
|
32 |
format='%(asctime)s - %(levelname)s - %(message)s'
|
33 |
)
|
34 |
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
|
|
|
|
36 |
class SEOSpaceAnalyzer:
|
37 |
def __init__(self):
|
38 |
self.session = self._configure_session()
|
@@ -40,6 +60,19 @@ class SEOSpaceAnalyzer:
|
|
40 |
self.base_dir = Path("content_storage")
|
41 |
self.base_dir.mkdir(parents=True, exist_ok=True)
|
42 |
self.current_analysis = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
def _configure_session(self) -> requests.Session:
|
45 |
"""Configura sesi贸n HTTP con reintentos"""
|
|
|
32 |
format='%(asctime)s - %(levelname)s - %(message)s'
|
33 |
)
|
34 |
logger = logging.getLogger(__name__)
|
35 |
+
def setup_spacy_model():
|
36 |
+
"""Descarga el modelo de spaCy si no est谩 instalado"""
|
37 |
+
try:
|
38 |
+
spacy.load("es_core_news_lg")
|
39 |
+
logger.info("Modelo spaCy 'es_core_news_lg' cargado correctamente")
|
40 |
+
except OSError:
|
41 |
+
logger.info("Descargando modelo spaCy 'es_core_news_lg'...")
|
42 |
+
try:
|
43 |
+
subprocess.run(
|
44 |
+
[sys.executable, "-m", "spacy", "download", "es_core_news_lg"],
|
45 |
+
check=True,
|
46 |
+
stdout=subprocess.PIPE,
|
47 |
+
stderr=subprocess.PIPE
|
48 |
+
)
|
49 |
+
logger.info("Modelo descargado exitosamente")
|
50 |
+
except subprocess.CalledProcessError as e:
|
51 |
+
logger.error(f"Error al descargar modelo: {e.stderr.decode()}")
|
52 |
+
raise RuntimeError("No se pudo descargar el modelo spaCy") from e
|
53 |
|
54 |
+
# Configurar modelo antes de iniciar
|
55 |
+
setup_spacy_model()
|
56 |
class SEOSpaceAnalyzer:
|
57 |
def __init__(self):
|
58 |
self.session = self._configure_session()
|
|
|
60 |
self.base_dir = Path("content_storage")
|
61 |
self.base_dir.mkdir(parents=True, exist_ok=True)
|
62 |
self.current_analysis = {}
|
63 |
+
def _load_models(self) -> Dict:
|
64 |
+
"""Carga modelos optimizados para Hugging Face"""
|
65 |
+
try:
|
66 |
+
device = 0 if torch.cuda.is_available() else -1
|
67 |
+
return {
|
68 |
+
'summarizer': pipeline("summarization", model="facebook/bart-large-cnn", device=device),
|
69 |
+
'ner': pipeline("ner", model="dslim/bert-base-NER", device=device),
|
70 |
+
'semantic': SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2'),
|
71 |
+
'spacy': spacy.load("es_core_news_lg") # Ahora seguro que existe
|
72 |
+
}
|
73 |
+
except Exception as e:
|
74 |
+
logger.error(f"Error loading models: {e}")
|
75 |
+
raise
|
76 |
|
77 |
def _configure_session(self) -> requests.Session:
|
78 |
"""Configura sesi贸n HTTP con reintentos"""
|