ISAA / app.py
BigRatz's picture
Update app.py
8c937b1
Raw
History Blame Contribute Delete
1.74 kB
import json
import torch
from transformers import DistilBertTokenizer, DistilBertForSequenceClassification
import numpy as np
categories = ["Very Safe", "Safe", "Slightly Risky", "Moderate", "Risky", "Very Risky", "Highly Dangerous"]
# Load pre-trained DistilBERT model and tokenizer
# Load pre-trained DistilBERT model and tokenizer
model_name = "distilbert-base-uncased"
tokenizer = DistilBertTokenizer.from_pretrained(model_name)
model = DistilBertForSequenceClassification.from_pretrained(model_name, num_labels=len(categories))
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
# Function to classify a single description
def classify_description(model, tokenizer, device, description):
inputs = tokenizer(description, padding=True, truncation=True, return_tensors="pt")
input_ids = inputs["input_ids"].to(device)
with torch.no_grad():
outputs = model(input_ids)
logits = outputs.logits
# Simulating a more granular classification (for illustration)
predicted_label = np.random.choice(len(categories)) # Replace with actual model logic
return categories[predicted_label]
# Streamlit app to upload JSON and display results
st.title("HTML Content Classifier")
uploaded_file = st.file_uploader("Upload JSON file", type=["json"])
if uploaded_file is not None:
# Read the file
json_data = json.load(uploaded_file)
# Display results
for item in json_data:
classification = classify_description(item["description"])
st.write(f"Title: {item['title']}")
st.write(f"Link: {item['link']}")
st.write(f"Description: {item['description']}")
st.write(f"Classification: {classification}")
st.write("------")