|
|
|
from transformers import pipeline |
|
import streamlit as st |
|
import streamlit.components.v1 as components |
|
|
|
pipe_1 = pipeline("text-classification", model="mavinsao/mi-roberta-mental-finetuned") |
|
pipe_2 = pipeline("text-classification", model="mavinsao/roberta-mental-finetuned") |
|
|
|
|
|
|
|
def st_display_background(image_url): |
|
st_style = f""" |
|
<style> |
|
body {{ |
|
background-image: url("{image_url}") !important; |
|
background-size: cover; |
|
}} |
|
</style> |
|
""" |
|
st.markdown(st_style, unsafe_allow_html=True) |
|
|
|
image_url = "https://images.unsplash.com/photo-1504701954957-2010ec3bcec1?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" |
|
|
|
|
|
def ensemble_predict(text): |
|
|
|
results_1 = pipe_1(text) |
|
results_2 = pipe_2(text) |
|
|
|
ensemble_scores = {} |
|
for results in [results_1, results_2]: |
|
for result in results: |
|
label = result['label'] |
|
score = result['score'] |
|
ensemble_scores[label] = ensemble_scores.get(label, 0) + score / 2 |
|
|
|
predicted_label = max(ensemble_scores, key=ensemble_scores.get) |
|
confidence = ensemble_scores[predicted_label] |
|
|
|
return predicted_label, confidence |
|
|
|
|
|
st.title('Mental Illness Prediction') |
|
|
|
|
|
sentence = st.text_area("Enter the long sentence to predict your mental illness state:") |
|
|
|
st_display_background(image_url) |
|
|
|
if st.button('Predict'): |
|
|
|
predicted_label, confidence = ensemble_predict(sentence) |
|
|
|
|
|
st.markdown(""" |
|
<style> |
|
div[data-testid="metric-container"] { |
|
font-weight: bold; |
|
font-size: 18px; /* Adjust the font size as desired */ |
|
} |
|
</style> |
|
""", unsafe_allow_html=True) |
|
|
|
st.write("Result:", predicted_label) |
|
st.write("Confidence:", confidence) |
|
|