| import gradio as gr |
| import torch |
| import torch.nn.functional as F |
| from transformers import BertTokenizer, BertForSequenceClassification, pipeline |
|
|
| |
| |
| |
| model_name = "Omnia-cy/bert_model_1" |
|
|
| tokenizer = BertTokenizer.from_pretrained(model_name) |
| model = BertForSequenceClassification.from_pretrained(model_name) |
|
|
| model.eval() |
|
|
| |
| |
| |
| zero_shot = pipeline( |
| "zero-shot-classification", |
| model="facebook/bart-large-mnli" |
| ) |
|
|
| labels = [ |
| "This problem can be solved using software or AI", |
| "This problem cannot be solved using software or AI" |
| ] |
|
|
| |
| |
| |
| def analyze_problem(sector, subsector, ptype, target, description): |
|
|
| |
| text = ( |
| f"Sector: {sector}. " |
| f"Subsector: {subsector}. " |
| f"Type: {ptype}. " |
| f"Target Group: {target}. " |
| f"Description: {description}." |
| ) |
|
|
| |
| inputs = tokenizer( |
| text, |
| return_tensors="pt", |
| truncation=True, |
| padding=True, |
| max_length=256 |
| ) |
|
|
| with torch.no_grad(): |
| outputs = model(**inputs) |
|
|
| probs = F.softmax(outputs.logits, dim=1) |
| ai_prob = probs[0][1].item() |
|
|
| |
| threshold = 0.8 |
|
|
| if ai_prob >= threshold: |
| return f"✅ AI Probability: {ai_prob:.2f}\nResult: Solvable using AI" |
|
|
| else: |
| |
| result = zero_shot(text, candidate_labels=labels) |
|
|
| final_label = result["labels"][0] |
|
|
| return f""" |
| AI Probability: {ai_prob:.2f} |
| |
| Zero-Shot Result: |
| {final_label} |
| """ |
|
|
| |
| |
| |
| iface = gr.Interface( |
| fn=analyze_problem, |
| inputs=[ |
| gr.Textbox(label="Sector"), |
| gr.Textbox(label="Subsector"), |
| gr.Textbox(label="Type"), |
| gr.Textbox(label="Target Group"), |
| gr.Textbox(label="Problem Description") |
| ], |
| outputs=gr.Textbox(label="Result"), |
| title="AI Problem Analyzer", |
| description="Check if a problem can be solved using AI or software" |
| ) |
|
|
| iface.launch() |