NLP-Q2 / app.py
DanyaalMajid's picture
Update app.py
d7cb0d7
import streamlit as st
from transformers import pipeline
# Load models
# Distilled Sentiment Classifier
# Link: https://huggingface.co/lxyuan/distilbert-base-multilingual-cased-sentiments-student
distilled_sentiment_classifier = pipeline(
model="lxyuan/distilbert-base-multilingual-cased-sentiments-student",
return_all_scores=True
)
# Emotion Classifier
# Link: https://huggingface.co/SamLowe/roberta-base-go_emotions
emotion_text_classifier = pipeline("text-classification", model="SamLowe/roberta-base-go_emotions")
# Named Entity Recognition
# Link: https://huggingface.co/mdarhri00/named-entity-recognition
named_entity_classifier = pipeline("token-classification", model="mdarhri00/named-entity-recognition")
# Toxicity Classifier
# Link: https://huggingface.co/s-nlp/roberta_toxicity_classifier
toxicity_classifier = pipeline("text-classification", model="s-nlp/roberta_toxicity_classifier")
# Streamlit app
def main():
st.title("HuggingFace Model Demo App")
# User input for text
user_text = st.text_area("Enter some text:")
if user_text:
# Available Models
analysis_type = st.selectbox("Select Analysis Type", ["", "Sentiment Analysis", "Emotion Analysis", "Named Entity Recognition", "Toxicity Analysis"])
# Run custom and display outputs
st.header("Function Output:")
if analysis_type == "Sentiment Analysis":
st.subheader("Sentiment Analysis:")
for labels_and_scores in data:
for entry in labels_and_scores:
label = entry["label"]
score = entry["score"]
st.write(f"Label: {label}, Score: {score}")
# Find the label with the highest score
max_score_entry = max(data, key=lambda x: x['score'])
max_score_label = max_score_entry['label']
max_score = max_score_entry['score']
# Display the label with the highest score
st.write(f"Label with the highest score: {max_score_label}, Highest Score: {max_score}")
if analysis_type == "Emotion Analysis":
st.subheader("Emotion Analysis:")
# Parse JSON data
data = emotion_text_classifier(user_text)
# Extract and display label and score for each entry
for entry in data:
label = entry["label"]
score = entry["score"]
st.write(f"Label: {label}, Score: {score}")
if analysis_type == "Named Entity Recognition":
st.subheader("Named Entity Recognition:")
# Parse JSON data
data = named_entity_classifier(user_text)
#st.write(data)
# Extract and display data
for labels in data:
for entry in labels:
entity_group = entry["entity_group"]
score = entry["score"]
word = entry["word"]
start = entry["start"]
end = entry["end"]
st.write(f"Word: {word}, Entity Group: {entity_group}, Score: {score}, Start: {start}, End: {end}")
if analysis_type == "Toxicity Analysis":
st.subheader("Toxicity Analysis:")
# Parse JSON data
data = toxicity_classifier(user_text)
#st.write(data)
# Extract and display label and score values
for entry in data:
label = entry["label"]
score = entry["score"]
st.write(f"Label: {label}, Score: {score}")
if __name__ == "__main__":
main()