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}")