import gradio as gr import tensorflow as tf from transformers import AutoTokenizer import numpy as np # Load tokenizer dari Hugging Face repo tokenizer = AutoTokenizer.from_pretrained("jeanetrixsiee/javo_analisis_sentiment") # Load model dari file .h5 secara langsung (bukan pakai TFAutoModel) model = tf.keras.models.load_model("keras_model") # folder ini HARUS ada di root Spaces # Pastikan label2id cocok id2label = { 0: 'Negative', 1: 'Neutral', 2: 'Positive', 3: 'Very Negative', 4: 'Very Positive' } def predict_sentiment(text): inputs = tokenizer(text, return_tensors="tf", truncation=True, padding=True) outputs = model(inputs["input_ids"]) probs = tf.nn.softmax(outputs, axis=1).numpy()[0] predicted_index = int(np.argmax(probs)) predicted_label = id2label[predicted_index] prob_dict = {id2label[i]: round(float(probs[i]) * 100, 2) for i in range(len(probs))} sorted_probs = dict(sorted(prob_dict.items(), key=lambda x: x[1], reverse=True)) return f"Prediksi Sentimen: {predicted_label}", sorted_probs interface = gr.Interface( fn=predict_sentiment, inputs=gr.Textbox(label="Masukkan Komentar YouTube"), outputs=[ gr.Textbox(label="Hasil Prediksi"), gr.Label(label="Probabilitas Tiap Label (%)") ], title="🔍 Analisis Sentimen Komentar YouTube", description="Model ini memprediksi sentimen dari komentar YouTube dalam 5 kategori:\nVery Negative, Negative, Neutral, Positive, Very Positive." ) interface.launch()