| 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"] |
|
|
|
|
| |
| |
| 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) |
|
|
| |
| 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 |
|
|
| |
| predicted_label = np.random.choice(len(categories)) |
| return categories[predicted_label] |
|
|
| |
| st.title("HTML Content Classifier") |
|
|
| uploaded_file = st.file_uploader("Upload JSON file", type=["json"]) |
| if uploaded_file is not None: |
| |
| json_data = json.load(uploaded_file) |
|
|
| |
| 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("------") |
|
|