Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#Модель определения эмоционального окраса сообщений
|
2 |
+
# 0-нейтрально
|
3 |
+
# 1-позитивно
|
4 |
+
# 2-негативно
|
5 |
+
#It was a wonderful journey. We have visited many beautiful places and seen many sightings! I am happy!
|
6 |
+
|
7 |
+
import streamlit as st
|
8 |
+
import torch
|
9 |
+
from transformers import AutoModelForSequenceClassification
|
10 |
+
from transformers import BertTokenizerFast
|
11 |
+
|
12 |
+
tokenizer = BertTokenizerFast.from_pretrained('blanchefort/rubert-base-cased-sentiment')
|
13 |
+
model = AutoModelForSequenceClassification.from_pretrained('blanchefort/rubert-base-cased-sentiment', return_dict=True)
|
14 |
+
|
15 |
+
res_text = ['Текст нейтральный', 'Текст позитивный','Текст негативный']
|
16 |
+
|
17 |
+
#Model
|
18 |
+
@torch.no_grad()
|
19 |
+
def predict(text):
|
20 |
+
inputs = tokenizer(text, max_length=512, padding=True, truncation=True, return_tensors='pt')
|
21 |
+
outputs = model(**inputs)
|
22 |
+
predicted = torch.nn.functional.softmax(outputs.logits, dim=1)
|
23 |
+
predicted = torch.argmax(predicted, dim=1).numpy()
|
24 |
+
return predicted
|
25 |
+
|
26 |
+
# Streamlit Header
|
27 |
+
st.title('Модель определения эмоционального окраса сообщений')
|
28 |
+
st.write('Это модель определения эмоционального окраса текста. Результат: нейтрально/позитивно/негативно')
|
29 |
+
# Input text
|
30 |
+
text_in = st.text_input('Введите текст:')
|
31 |
+
# кнопка вывод результата
|
32 |
+
start = st.button('Start:')
|
33 |
+
# Click the button
|
34 |
+
if start:
|
35 |
+
text_out = int(predict(text_in))
|
36 |
+
#st.write("Результат:", text_out)
|
37 |
+
st.write("Результат:", res_text[text_out])
|