File size: 2,203 Bytes
98c0f54
0172e31
98c0f54
 
f4067be
0172e31
 
 
 
98c0f54
0172e31
98c0f54
 
44e21a6
2bb61b8
0172e31
 
2bb61b8
12b0ed7
95d05cb
8cb1867
 
1aa90a2
98c0f54
 
 
 
 
 
 
 
 
 
 
 
 
 
1aa90a2
95d05cb
98c0f54
 
95d05cb
367a8a1
95d05cb
 
 
 
 
 
12b0ed7
 
 
 
fcf7672
98c0f54
f4067be
bcb2ab6
12b0ed7
 
 
0172e31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as F

# Load the pre-trained model and tokenizer using gr.load
model = gr.load("models/Ahmed235/roberta_classification")

# Tokenizer can be loaded using transformers directly
tokenizer = AutoTokenizer.from_pretrained("Ahmed235/roberta_classification")

device = torch.device("cpu")
model = model.to(device)  # Move the model to the CPU

def extract_text_from_pptx(file_path):
    # Assume your implementation for text extraction remains the same
    pass

def predict_pptx_content(file_path):
    try:
        extracted_text = extract_text_from_pptx(file_path)
        cleaned_text = re.sub(r'\s+', ' ', extracted_text)

        # Tokenize and encode the cleaned text
        input_encoding = tokenizer(cleaned_text, truncation=True, padding=True, return_tensors="pt")
        input_encoding = {key: val.to(device) for key, val in input_encoding.items()}  # Move input tensor to CPU

        # Perform inference
        with torch.no_grad():
            outputs = model(**input_encoding)
            logits = outputs.logits

        probabilities = F.softmax(logits, dim=1)

        predicted_label_id = torch.argmax(logits, dim=1).item()
        predicted_label = model.config.id2label[predicted_label_id]
        predicted_probability = probabilities[0][predicted_label_id].item()

        prediction = {
            "Predicted Label": predicted_label,
            "Evaluation": f"Evaluate the topic according to {predicted_label} is: {predicted_probability}",
        }

        return prediction

    except Exception as e:
        # Log the error details
        print(f"Error in predict_pptx_content: {e}")
        return {"error": str(e)}

# Define the Gradio interface
iface = gr.Interface(
    fn=predict_pptx_content,
    inputs=gr.File(type="filepath", label="Upload PowerPoint (.pptx) file"),
    outputs=["text", "text"],  # Predicted Label, Evaluation
    live=False,  # Change to True for one-time analysis
    title="<h1 style='color: lightgreen; text-align: center;'>HackTalk Analyzer</h1>",
)

# Deploy the Gradio interface
iface.launch(share=True)