temmie74's picture
Update app.py
4ce9a7a verified
import streamlit as st
import requests
BOW_API_ENDPOINT = "http://cps.bow.hifeyinc.com/predict"
SEMANTIC_API_ENDPOINT = "http://cps.hifeyinc.com/predict"
st.title("CPS UseCase Text Classification App")
st.markdown(
"""
The app was trained to predict the type of headline a post is.
Predictions are made by two models: a bag-of-words model and a semantic model.
Examples of inputs you can provide are:
- Authors: David
- Headline: Find a nice summer vacation destination.
"""
)
author = st.text_input("Enter Author")
headline = st.text_area("Enter Headline")
if st.button("Predict"):
if author and headline:
bow_payload = {
"data": [{"headline": headline, "authors": author}]
}
semantic_payload = {
"data": [{"headline": headline, "authors": author}]
}
bow_response = requests.post(BOW_API_ENDPOINT, json=bow_payload)
semantic_response = requests.post(SEMANTIC_API_ENDPOINT, json=semantic_payload)
if bow_response.status_code == 200 and semantic_response.status_code == 200:
bow_result = bow_response.json()
semantic_result = semantic_response.json()
bow_predictions = bow_result.get("predictions", [])
semantic_predictions = semantic_result.get("predictions", [])
if bow_predictions and semantic_predictions:
st.success("Predictions:")
prediction_data = {
"Model": ["Bag of Words", "Semantic"],
"Prediction": [bow_predictions[0], semantic_predictions[0]]
}
st.table(prediction_data)
else:
st.warning("No predictions available.")
else:
st.error("Error occurred while making predictions.")
else:
st.warning("Please enter both author and headline.")