Terdan/hate_speech
0
1import torch2from transformers import DistilBertTokenizer, DistilBertForSequenceClassification3 4def load_model(model_path, device):5 model = DistilBertForSequenceClassification.from_pretrained(model_path)6 model.to(device)7 model.eval()8 return model9 10def run_inference(model, tokenizer, label_decoder, device, user_input):11 model.eval() # Set the model to evaluation mode12 13 # user_input = input("Enter a text for prediction: ")14 15 # Tokenize user input16 input_ids = tokenizer.encode(user_input, return_tensors="pt").to(device)17 18 with torch.no_grad():19 outputs = model(input_ids)20 predicted_label = torch.argmax(outputs.logits, dim=1).tolist()21 22 # Extracting the text and predicted outcome23 input_text = tokenizer.decode(input_ids[0], skip_special_tokens=True)24 predicted_outcome = label_decoder[predicted_label[0]]25 26 # Display the results27 print(f"Text: {input_text}")28 print(f"Predicted Outcome: {predicted_outcome}")29 print()30 return predicted_outcome # Add a new line for better readability31 32# Example usage33model_path = "model6" # Replace with the actual path to your model34device = torch.device("cuda" if torch.cuda.is_available() else "cpu")35tokenizer = DistilBertTokenizer.from_pretrained("distilbert-base-uncased") # Replace with your desired tokenizer36 37# Load model38model = load_model(model_path, device)39 40 41label_decoder = {0: "Not Hate", 1: "Hate",}42 43 44# Assuming you have label_decoder defined45 46 47import streamlit as st48 49st.title("Hate Speech Detection")50 51user_input = st.text_input("Enter your text:")52if user_input:53 result = run_inference(model, tokenizer, label_decoder, device, user_input)54 st.write("Inference Result:", result)