Spaces:
Sleeping
Sleeping
| import os | |
| import time | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| from transformers import pipeline | |
| # Model to load | |
| MODEL_TO_LOAD = "swastik-kapture/offenseval-xlmr-v3" | |
| TOKENIZER = "xlm-roberta-base" | |
| # create classification pipeline | |
| trained_model = pipeline("text-classification", model=MODEL_TO_LOAD, tokenizer=TOKENIZER, token=os.environ.get("HF_READ_KEY")) | |
| # Streamlit App | |
| def main(): | |
| # create a session state for conversation history | |
| if 'conversation_history' not in st.session_state: | |
| st.session_state.conversation_history = [] | |
| # streamlit title | |
| st.title("OffensEval: Profanity Detection") | |
| # user message | |
| user_message = st.chat_input("Say something") | |
| # if user input is present try to predict the outcome | |
| if user_message: | |
| # append user message to history | |
| st.session_state.conversation_history.append(('user', user_message, time.time())) | |
| # get predicted output | |
| output = trained_model.predict(user_message) | |
| # get predictied label and score | |
| label = output[0]['label'] | |
| score = output[0]['score'] | |
| # default color | |
| color = "white" | |
| # get the color based on label | |
| if label == "not offensive": | |
| color = "green" | |
| elif label == "offensive": | |
| color = "red" | |
| st.session_state.conversation_history.append(('assistant', f"<div style='background-color: {color}; width: auto; height: 50px;'>Label: {label}; Score: {score:.2f}</div>", time.time())) | |
| # Display chat history | |
| for sender, message, timestamp in st.session_state.conversation_history: | |
| with st.chat_message(sender): | |
| st.write(message, unsafe_allow_html=True) | |
| if __name__ == "__main__": | |
| main() | |