ElizabethSrgh commited on
Commit
23345b6
·
verified ·
1 Parent(s): 65d9298

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -9
app.py CHANGED
@@ -3,7 +3,6 @@ import torch.nn as nn
3
  from transformers import AutoTokenizer, AutoModel
4
  import gradio as gr
5
 
6
- # Model multitask dengan token_type_ids support
7
  class MultiTaskModel(nn.Module):
8
  def __init__(self, base_model_name, num_topic_classes, num_sentiment_classes):
9
  super(MultiTaskModel, self).__init__()
@@ -23,13 +22,11 @@ class MultiTaskModel(nn.Module):
23
  sentimen_logits = self.sentiment_classifier(pooled_output)
24
  return topik_logits, sentimen_logits
25
 
26
- # Load tokenizer & model
27
  tokenizer = AutoTokenizer.from_pretrained("tokenizer")
28
  model = MultiTaskModel("indobenchmark/indobert-base-p1", num_topic_classes=5, num_sentiment_classes=3)
29
  model.load_state_dict(torch.load("model.pt", map_location=torch.device("cpu")))
30
  model.eval()
31
 
32
- # Label mapping
33
  topik_labels = ["Produk", "Layanan", "Pengiriman", "Pembatalan", "Lainnya"]
34
  sentimen_labels = ["Negatif", "Netral", "Positif"]
35
 
@@ -37,12 +34,14 @@ def klasifikasi(text):
37
  inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
38
  with torch.no_grad():
39
  topik_logits, sentimen_logits = model(**inputs)
40
- topik_probs = torch.softmax(topik_logits, dim=-1).squeeze()
41
- sentimen_probs = torch.softmax(sentimen_logits, dim=-1).squeeze()
42
 
43
- topik_result = {label: float(prob) for label, prob in zip(topik_labels, topik_probs)}
44
- sentimen_result = {label: float(prob) for label, prob in zip(sentimen_labels, sentimen_probs)}
45
- return {"Topik": topik_result, "Sentimen": sentimen_result}
46
 
47
- demo = gr.Interface(fn=klasifikasi, inputs="text", outputs="json", title="Klasifikasi Topik dan Sentimen Pelanggan")
 
 
48
  demo.launch()
 
3
  from transformers import AutoTokenizer, AutoModel
4
  import gradio as gr
5
 
 
6
  class MultiTaskModel(nn.Module):
7
  def __init__(self, base_model_name, num_topic_classes, num_sentiment_classes):
8
  super(MultiTaskModel, self).__init__()
 
22
  sentimen_logits = self.sentiment_classifier(pooled_output)
23
  return topik_logits, sentimen_logits
24
 
 
25
  tokenizer = AutoTokenizer.from_pretrained("tokenizer")
26
  model = MultiTaskModel("indobenchmark/indobert-base-p1", num_topic_classes=5, num_sentiment_classes=3)
27
  model.load_state_dict(torch.load("model.pt", map_location=torch.device("cpu")))
28
  model.eval()
29
 
 
30
  topik_labels = ["Produk", "Layanan", "Pengiriman", "Pembatalan", "Lainnya"]
31
  sentimen_labels = ["Negatif", "Netral", "Positif"]
32
 
 
34
  inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
35
  with torch.no_grad():
36
  topik_logits, sentimen_logits = model(**inputs)
37
+ topik_idx = torch.argmax(topik_logits, dim=-1).item()
38
+ sentimen_idx = torch.argmax(sentimen_logits, dim=-1).item()
39
 
40
+ topik = topik_labels[topik_idx]
41
+ sentimen = sentimen_labels[sentimen_idx]
42
+ ringkasan = f"Pelanggan: {text}\nCS: Kami senang dapat membantu Anda."
43
 
44
+ return f"HASIL ANALISIS\nTopik: {topik}\nSentimen: {sentimen}\nRingkasan: {ringkasan}"
45
+
46
+ demo = gr.Interface(fn=klasifikasi, inputs="text", outputs="text", title="Klasifikasi Topik dan Sentimen Pelanggan")
47
  demo.launch()