File size: 1,234 Bytes
5b49530
 
 
 
c8c9751
9d28303
5b49530
9835fcd
c8c9751
9835fcd
fd77546
5b49530
c8c9751
19dfa14
 
4eeaf18
19dfa14
 
5b49530
 
fd77546
5b49530
 
1ef0a3c
5b49530
 
 
 
 
fd77546
c8c9751
fd77546
5b49530
c8c9751
 
5b49530
c8c9751
9d28303
5b49530
c8c9751
fd77546
5b49530
 
fd77546
39d538b
fd77546
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import streamlit as st
import tensorflow as tf
import numpy as np

# Load the trained model
model = tf.keras.models.load_model("news_classification_rnn1.h5")

# Load Preprocessing Function
import dill
with open("preprocessing1.pkl", "rb") as f:
    clean_text = dill.load(f)

# Load Text Vectorization Layer from SavedModel
import pickle

with open("vector.pkl", "rb") as f:
    vectorizer = pickle.load(f)


# Define News Categories
news_categories = ["Business", "Sci/Tech", "Sports", "World"]

# Streamlit UI
st.title("📰 News Classification with Simple RNN")
st.write("Enter a news headline to predict its category.")

user_input = st.text_area("Enter News Text:", "")

if st.button("Classify"):
    if user_input.strip():
        # Preprocess input
        processed_text = clean_text(user_input)

        # Convert text to integer sequence
        text_sequence = vectorizer([processed_text])

        # Convert to numpy array (model expects batch input)
        

        # Predict Category
        prediction = model.predict(text_sequence)
        category = np.argmax(prediction)

        st.success(f"Predicted Category: **{news_categories[category]}**")
    else: 
        st.warning("⚠ Please enter a news headline.")