|
|
|
|
|
|
|
|
|
|
|
|
|
import streamlit as st |
|
import torch |
|
from transformers import AutoModelForSequenceClassification |
|
from transformers import BertTokenizerFast |
|
|
|
tokenizer = BertTokenizerFast.from_pretrained('blanchefort/rubert-base-cased-sentiment') |
|
model = AutoModelForSequenceClassification.from_pretrained('blanchefort/rubert-base-cased-sentiment', return_dict=True) |
|
|
|
res_text = ['Текст нейтральный', 'Текст позитивный','Текст негативный'] |
|
|
|
|
|
@torch.no_grad() |
|
def predict(text): |
|
inputs = tokenizer(text, max_length=512, padding=True, truncation=True, return_tensors='pt') |
|
outputs = model(**inputs) |
|
predicted = torch.nn.functional.softmax(outputs.logits, dim=1) |
|
predicted = torch.argmax(predicted, dim=1).numpy() |
|
return predicted |
|
|
|
|
|
st.title('Модель определения эмоционального окраса сообщений') |
|
st.write('Это модель определения эмоционального окраса текста. Результат: нейтрально/позитивно/негативно') |
|
|
|
text_in = st.text_input('Введите текст:') |
|
|
|
start = st.button('Start:') |
|
|
|
if start: |
|
text_out = int(predict(text_in)) |
|
|
|
st.write("Результат:", res_text[text_out]) |