| 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.") |
|
|