|
import streamlit as st |
|
import torch |
|
import re |
|
import json |
|
from nltk.corpus import stopwords |
|
from model_file import data_preprocessing, preprocess_single_string, LSTMBahdanauAttention |
|
from nltk.corpus import stopwords |
|
stop_words = set(stopwords.words('russian')) |
|
|
|
|
|
with open('vocab_to_int.json', 'r') as file: |
|
vocab_to_int = json.load(file) |
|
|
|
|
|
SEQ_LEN = 96 |
|
model_bah = LSTMBahdanauAttention() |
|
|
|
model_bah.load_state_dict(torch.load('final_model_bah.pth')) |
|
model_bah.eval() |
|
|
|
|
|
def analyze_sentiment(text): |
|
preprocessed_text = data_preprocessing(text) |
|
sample = preprocess_single_string(preprocessed_text, SEQ_LEN, vocab_to_int) |
|
|
|
with torch.no_grad(): |
|
probability = model_bah(sample.unsqueeze(0))[0].sigmoid().item() |
|
return probability |
|
|
|
|
|
def lstm_model_page(): |
|
st.title("Классификация отзывов лечебных учреждений") |
|
user_input = st.text_area("Введите ваш отзыв:") |
|
if st.button("Классифицировать"): |
|
probability = analyze_sentiment(user_input) |
|
if probability > 0.5: |
|
st.write("Отзыв положительный 🌟") |
|
else: |
|
st.write("Отзыв отрицательный 😞") |
|
|