|
import os |
|
|
|
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') |
|
|
|
|
|
class_names = ["мода", "спорт", "технологии", "финансы", "крипта"] |
|
|
|
|
|
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) |
|
|
|
|
|
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}") |