|
import gradio as gr |
|
import numpy as np |
|
import pandas as pd |
|
import tensorflow as tf |
|
from transformers import XLNetTokenizer, TFXLNetModel |
|
|
|
|
|
df = pd.read_csv("disaster_tweet.csv") |
|
|
|
|
|
text_data = df["text"] |
|
label_data = df["target"] |
|
|
|
|
|
xlnet_tokenizer = XLNetTokenizer.from_pretrained('xlnet-base-cased') |
|
xlnet_model = TFXLNetModel.from_pretrained('xlnet-base-cased') |
|
|
|
|
|
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 |
|
|
|
|
|
model = load_model_with_custom_objects() |
|
|
|
|
|
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) |
|
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" |
|
|
|
|
|
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)." |
|
) |
|
|
|
|
|
iface.launch(inline=False) |
|
|