| 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]) |
| |
|
|