File size: 2,005 Bytes
baf8d53
 
 
 
 
f64b39a
c09c049
 
baf8d53
c09c049
 
 
 
 
 
 
c80ab2e
3968ea1
c80ab2e
c09c049
 
 
 
 
 
 
 
 
 
 
 
 
c80ab2e
 
 
 
c09c049
c80ab2e
 
 
 
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
import os
# Установите переменные окружения для Hugging Face
os.environ['TRANSFORMERS_CACHE'] = '/tmp/.cache/huggingface/'
os.environ['HF_HOME'] = '/tmp/.cache/huggingface'

import streamlit as st
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch

# Задайте название модели
model_name = "demail/News_bert"  # Замените на ваше имя пользователя и название модели

# Загрузка модели и токенизатора
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained('DeepPavlov/rubert-base-cased')

# Интерфейс Streamlit
class_names = ["мода", "спорт", "технологии", "финансы", "крипта"]  # Обновите на свои названия классов

# Интерфейс Streamlit
st.title("Модель Hugging Face в Streamlit")
input_text = st.text_area("Введите текст для классификации:")

if st.button("Классифицировать"):
    inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True)
    with torch.no_grad():
        outputs = model(**inputs)
    
    # Получаем предсказанные логиты и применяем softmax для получения вероятностей
    probs = torch.nn.functional.softmax(outputs.logits, dim=-1)
    predicted_class = probs.argmax().item()
    
    # Получаем название класса и вероятности в процентах
    class_name = class_names[predicted_class]
    probabilities = [f"{prob.item() * 100:.2f}%" for prob in probs[0]]

    # Выводим результат
    st.write(f"Предсказанный класс: {class_name}")
    st.write("Вероятности классов:")
    for i, prob in enumerate(probabilities):
        st.write(f"{class_names[i]}: {prob}")