Spaces:
Sleeping
Sleeping
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}") | |