milstone2 / app.py
Gregoryjr
Update app.py
d0fcf82 unverified
import streamlit as st
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForSequenceClassification
st.title("Milestone #3 offensive statement prediction with pre-trained models")
st.write("in this basic demo you can select a model to judge whether or not the text below is offensive and how it's offensive. the options are[toxic, severe_toxic, obscene, threat, insult, identity_hate]")
text = "I am going to mess you up"
st.write(text)
options = ["Greys/milestonemodel"]
model = st.selectbox("Select a pre-trained model", options)
con = st.button("Submit")
if con:
if model == "zero-shot-classification":
classifier = pipeline(model)
res = classifier(text, candidate_labels=["offensive"])
label = res['labels'][0]
score = res['scores'][0]
st.write(f"Prediction: {label}, Score: {score*100}% chance")
if model == "cardiffnlp/twitter-roberta-base-offensive":
classifier = pipeline('text-classification', model='cardiffnlp/twitter-roberta-base-offensive', tokenizer='cardiffnlp/twitter-roberta-base-offensive')
result = classifier(text)
label = result[0]['label']
score = result[0]['score']
st.write(f"Prediction: {label}, Score: {score*100}% chance")
if model == "Greys/milestonemodel":
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("Greys/milestonemodel")
my_list = [' ','toxic', 'severe_toxic', 'obscene', 'threat', 'insult', 'identity_hate']
def classify_sentence(text):
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
probs = outputs.logits.softmax(dim=1)
return probs.detach().numpy()[0]
probs = classify_sentence(text)
def find_largest_number(numbers):
max_num = numbers[0]
max_index = 0
for i in range(1, len(numbers)):
if numbers[i] > max_num:
max_num = numbers[i]
max_index = i
return max_index
print(probs)
index = find_largest_number(probs)
st.write(my_list[index])
#id,toxic,severe_toxic,obscene,threat,insult,identity_hate