Spaces:
Sleeping
Sleeping
import streamlit as st | |
import torch | |
import re | |
import json | |
import nltk | |
nltk.download('stopwords') | |
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')) | |
# Load vocabulary mapping | |
with open('vocab_to_int.json', 'r') as file: | |
vocab_to_int = json.load(file) | |
# Load the pre-trained model | |
SEQ_LEN = 96 | |
model_bah = LSTMBahdanauAttention() | |
# Set the new vocabulary size in the model | |
model_bah.load_state_dict(torch.load('final_model_bah.pth')) | |
model_bah.eval() | |
# Function to analyze sentiment | |
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 | |
# Streamlit UI | |
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("Отзыв отрицательный 😞") | |