NIXBLACK's picture
Update app.py
13bf122
import streamlit as st
import numpy as np
from laser_encoders import LaserEncoderPipeline
from sklearn.preprocessing import LabelEncoder
from keras.models import load_model
st.title("Sentiment Analysis with LASER Embeddings")
label_encoder = LabelEncoder()
# Load the saved model
model = load_model("sentiment_model.h5")
languages = [
"english",
'hindi',
'portuguese',
'romanian',
'slovenian',
'chinese',
'french',
'dutch',
'russian',
'italian',
]
selected_language = st.selectbox('Select the language:', languages)
user_text = st.text_input('Enter the text:')
encoder = LaserEncoderPipeline(lang=selected_language)
# Update target_classes and fit the label encoder
target_classes = ['negative', 'positive']
label_encoder.fit(target_classes)
user_text_embedding = encoder.encode_sentences([user_text])[0]
user_text_embedding = np.reshape(user_text_embedding, (1, -1))
# Use model.predict to get raw logits
predicted_logits = model.predict(user_text_embedding)[0]
# Use softmax to get probability scores
predicted_probabilities = np.exp(predicted_logits) / np.sum(np.exp(predicted_logits))
predicted_sentiment_label = label_encoder.inverse_transform([np.argmax(predicted_probabilities)])[0]
# Display predicted sentiment and probability scores
st.write("Predicted Sentiment:", predicted_sentiment_label)
st.write("Probability Scores:")
for label, probability in zip(target_classes, predicted_probabilities):
st.write(f"{label}: {probability:.4f}")