jarif's picture
Update app.py
cc84955 verified
import gradio as gr
import numpy as np
import pandas as pd
import tensorflow as tf
from transformers import XLNetTokenizer, TFXLNetModel
# Load your data from disaster_tweet.csv
df = pd.read_csv("disaster_tweet.csv") # Update the filename here
# Extract text and label columns
text_data = df["text"]
label_data = df["target"]
# Load XLNet tokenizer and model
xlnet_tokenizer = XLNetTokenizer.from_pretrained('xlnet-base-cased')
xlnet_model = TFXLNetModel.from_pretrained('xlnet-base-cased')
# Define custom object scope for TFXLNetModel
def load_model_with_custom_objects():
with tf.keras.utils.custom_object_scope({"TFXLNetModel": TFXLNetModel}):
model = tf.keras.models.load_model("xlnet_model.h5")
return model
# Load the saved model within custom object scope
model = load_model_with_custom_objects()
# Define function to predict disaster tweet
def predict_disaster_tweet(text):
input_ids = xlnet_tokenizer.encode(text, add_special_tokens=True, max_length=100, padding='max_length', return_tensors="tf")
attention_masks = tf.ones_like(input_ids) # Assuming all tokens are relevant
pred = model.predict([input_ids, attention_masks])
final_pred = np.where(pred >= 0.5, 1, 0)
if final_pred == 1:
return "Disaster"
elif final_pred == 0:
return "Non-Disaster"
else:
return "Uncertain"
# Define Gradio interface
iface = gr.Interface(
fn=predict_disaster_tweet,
inputs="text",
outputs="text",
title="Disaster Tweet Prediction",
description="Enter a tweet and get prediction whether it's a (Disaster, Non-Disaster, or Uncertain)."
)
# Launch the Gradio interface
iface.launch(inline=False)