Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import torch | |
| import sys | |
| from pathlib import Path | |
| import requests | |
| import time | |
| import cv2 | |
| import numpy as np | |
| from transformers import AutoTokenizer | |
| st.write("# Оценка степени токсичности пользовательского сообщения") | |
| # st.write("Здесь вы можете загрузить картинку со своего устройства, либо при помощи ссылки") | |
| # Добавление пути к проекту и моделям | |
| project_root = Path(__file__).resolve().parents[1] | |
| models_path = project_root / 'models' | |
| sys.path.append(str(models_path)) | |
| from models.model2.preprocess_text import TextPreprocessorBERT | |
| from models.model2.model import BERTClassifier | |
| device = 'cpu' | |
| # Загрузка модели и словаря | |
| def load_model(): | |
| model = BERTClassifier() | |
| weights_path = models_path / 'model2' / 'model_weights.pth' | |
| state_dict = torch.load(weights_path, map_location=device) | |
| model.load_state_dict(state_dict) | |
| model.to(device) | |
| model.eval() | |
| return model | |
| def load_tokenizer(): | |
| return AutoTokenizer.from_pretrained('cointegrated/rubert-tiny-toxicity') | |
| model = load_model() | |
| tokenizer = load_tokenizer() | |
| input_text = st.text_area('Введите текст сообщения') | |
| if st.button('Предсказать'): | |
| # Применяем предобработку | |
| preprocessor = TextPreprocessorBERT() | |
| preprocessed_text = preprocessor.transform(input_text) | |
| # Токенизация | |
| tokens = tokenizer.encode_plus( | |
| preprocessed_text, | |
| add_special_tokens=True, | |
| truncation=True, | |
| max_length=100, | |
| padding='max_length', | |
| return_tensors='pt' | |
| ) | |
| # Получаем input_ids и attention_mask из токенов | |
| input_ids = tokens['input_ids'].to(device) | |
| attention_mask = tokens['attention_mask'].to(device) | |
| # Предсказание | |
| with torch.no_grad(): | |
| output = model(input_ids, attention_mask=attention_mask) | |
| # Интерпретация результата | |
| prediction = torch.sigmoid(output).item() | |
| st.write(f'Предсказанный класс токсичности: {prediction:.4f}') | |