File size: 1,502 Bytes
2bc2000
 
 
0ffc57a
9e77460
2bc2000
7458b55
3cef7c4
0ffc57a
9e77460
13bf122
bf6bb57
290aeff
 
 
 
 
 
 
 
 
 
 
 
 
 
4929e77
2bc2000
6d9a15f
3277e5d
13bf122
 
3277e5d
2bc2000
 
 
 
9177509
 
 
 
 
3277e5d
13bf122
2bc2000
6d9a15f
6068c42
6d9a15f
 
13bf122
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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}")