sentimentanalyzer01 commited on
Commit
56b11b0
·
verified ·
1 Parent(s): 81e292c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -21
app.py CHANGED
@@ -13,26 +13,12 @@ import pymorphy3
13
  import requests
14
  from fastapi import FastAPI, Request, Form, HTTPException
15
  from fastapi.responses import HTMLResponse, JSONResponse
16
- from fastapi.staticfiles import StaticFiles
17
  from fastapi.templating import Jinja2Templates
18
  import uvicorn
19
  from transformers import BertTokenizer, BertModel
20
  import warnings
21
  warnings.filterwarnings('ignore')
22
 
23
- # ============================================================
24
- # Устанавливаем setuptools для pkg_resources
25
- # ============================================================
26
- try:
27
- import pkg_resources
28
- print("✅ pkg_resources уже установлен")
29
- except ImportError:
30
- print("⚠️ pkg_resources не найден, устанавливаем...")
31
- import subprocess
32
- subprocess.check_call([sys.executable, "-m", "pip", "install", "setuptools"])
33
- import pkg_resources
34
- print("✅ pkg_resources установлен")
35
-
36
  # Определяем устройство
37
  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
38
  print(f"Используется устройство: {device}")
@@ -368,6 +354,13 @@ class CascadeEmotionClassifier:
368
  }
369
  return result
370
 
 
 
 
 
 
 
 
371
  # ============================================================
372
  # ЗАГРУЗКА МОДЕЛИ
373
  # ============================================================
@@ -390,14 +383,12 @@ def load_model():
390
  # Загружаем онтологию
391
  print("📂 Загрузка сохранённой онтологии...")
392
  try:
393
- # Убеждаемся, что класс доступен
394
- import __main__
395
- __main__.OntologyEmotionModel = OntologyEmotionModel
396
-
397
- # Загружаем онтологию
398
  with open(f'{model_dir}/ontology_model.pkl', 'rb') as f:
399
  ontology_model = pickle.load(f)
400
  print("✅ Сохранённая онтология успешно загружена!")
 
 
 
401
  except Exception as e:
402
  print(f"❌ Ошибка загрузки онтологии: {e}")
403
  raise RuntimeError("Не удалось загрузить онтологию") from e
@@ -413,7 +404,7 @@ def load_model():
413
  num_layers=2
414
  )
415
 
416
- checkpoint = torch.load(f'{model_dir}/lstm_model.pth', map_location=device)
417
  lstm_model.load_state_dict(checkpoint['model_state_dict'])
418
  print("✅ LSTM загружена")
419
 
@@ -424,7 +415,7 @@ def load_model():
424
  num_classes=model_info['num_classes'],
425
  dropout=0.3
426
  )
427
- bert_model.load_state_dict(torch.load(f'{model_dir}/bert_model.pth', map_location=device))
428
  print("✅ BERT загружена")
429
 
430
  # Загружаем токенизатор
 
13
  import requests
14
  from fastapi import FastAPI, Request, Form, HTTPException
15
  from fastapi.responses import HTMLResponse, JSONResponse
 
16
  from fastapi.templating import Jinja2Templates
17
  import uvicorn
18
  from transformers import BertTokenizer, BertModel
19
  import warnings
20
  warnings.filterwarnings('ignore')
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  # Определяем устройство
23
  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
24
  print(f"Используется устройство: {device}")
 
354
  }
355
  return result
356
 
357
+ # ============================================================
358
+ # Регистрация класса для pickle
359
+ # ============================================================
360
+ # Добавляем класс в глобальную область видимости
361
+ import __main__
362
+ __main__.OntologyEmotionModel = OntologyEmotionModel
363
+
364
  # ============================================================
365
  # ЗАГРУЗКА МОДЕЛИ
366
  # ============================================================
 
383
  # Загружаем онтологию
384
  print("📂 Загрузка сохранённой онтологии...")
385
  try:
 
 
 
 
 
386
  with open(f'{model_dir}/ontology_model.pkl', 'rb') as f:
387
  ontology_model = pickle.load(f)
388
  print("✅ Сохранённая онтология успешно загружена!")
389
+ if hasattr(ontology_model, 'get_statistics'):
390
+ stats = ontology_model.get_statistics()
391
+ print(f"📊 Статистика онтологии: узлов={stats.get('ontology_nodes', 0)}")
392
  except Exception as e:
393
  print(f"❌ Ошибка загрузки онтологии: {e}")
394
  raise RuntimeError("Не удалось загрузить онтологию") from e
 
404
  num_layers=2
405
  )
406
 
407
+ checkpoint = torch.load(f'{model_dir}/lstm_model.pth', map_location=device, weights_only=False)
408
  lstm_model.load_state_dict(checkpoint['model_state_dict'])
409
  print("✅ LSTM загружена")
410
 
 
415
  num_classes=model_info['num_classes'],
416
  dropout=0.3
417
  )
418
+ bert_model.load_state_dict(torch.load(f'{model_dir}/bert_model.pth', map_location=device, weights_only=False))
419
  print("✅ BERT загружена")
420
 
421
  # Загружаем токенизатор