NewsClassifier / app.py
Arsalan8's picture
Update app.py
87ff4fe verified
import tensorflow as tf
import gradio as gr
from keras import backend as K
from sklearn.preprocessing import LabelBinarizer
# Load model
model = tf.keras.models.load_model('news_classifier_optimized')
label_binarizer = LabelBinarizer()
label_binarizer.fit(['U.S. NEWS', 'COMEDY', 'PARENTING', 'WORLD NEWS', 'CULTURE & ARTS', 'TECH',
'SPORTS', 'ENTERTAINMENT', 'POLITICS', 'WEIRD NEWS', 'ENVIRONMENT',
'EDUCATION', 'CRIME', 'SCIENCE', 'WELLNESS', 'BUSINESS', 'STYLE & BEAUTY',
'FOOD & DRINK', 'MEDIA', 'QUEER VOICES', 'HOME & LIVING', 'WOMEN',
'BLACK VOICES', 'TRAVEL', 'MONEY', 'RELIGION', 'LATINO VOICES', 'IMPACT',
'WEDDINGS', 'COLLEGE', 'PARENTS', 'ARTS & CULTURE', 'STYLE', 'GREEN', 'TASTE',
'HEALTHY LIVING', 'THE WORLDPOST', 'GOOD NEWS', 'WORLDPOST', 'FIFTY', 'ARTS',
'DIVORCE'])
def predict_news(headline):
pred_prob = model.predict([headline])[0]
predicted_label = label_binarizer.classes_[pred_prob.argmax()]
return f"Predicted Category: {predicted_label}"
# Create Gradio Interface
iface = gr.Interface(
fn=predict_news,
inputs="text",
outputs="text",
title="News Classifier",
description="A News Classifier created using TensorFlow. Input a headline and see the predicted category!",
)
iface.launch(share=True)