review_analysis / app.py
jinchenliuljc's picture
Update app.py
6e1bde4 verified
import streamlit as st
from transformers import pipeline
import pandas as pd
@st.cache_resource
def load_sentiment_model():
return pipeline("text-classification", model="jinchenliuljc/ecommerce-sentiment-analysis")
@st.cache_resource
def load_ner_model():
return pipeline("ner", model="jinchenliuljc/ecom_ner_model")
def extract_products(ner_result):
products = []
current_product = None
for entity in ner_result:
if entity['entity'] == 'B-HCCX':
if current_product is not None:
products.append(current_product)
current_product = {
'start': entity['start'],
'end': entity['end'],
'text': entity['word']
}
elif entity['entity'] == 'I-HCCX' and current_product is not None:
current_product['end'] = entity['end']
current_product['text'] += entity['word']
if current_product is not None:
products.append(current_product)
return [p['text'] for p in products]
if 'records' not in st.session_state:
st.session_state.records = []
st.title("DTC Customer Review Analysis System")
col1, col2 = st.columns(2)
with col1:
user_input = st.text_input("Enter customer review:", key="input")
if user_input:
sentiment_classifier = load_sentiment_model()
sentiment_result = sentiment_classifier(user_input)[0]['label']
if sentiment_result == 'LABEL_1':
st.success("Thank you for your positive feedback! :)")
else:
ner_pipe = load_ner_model()
ner_result = ner_pipe(user_input)
products = extract_products(ner_result)
# Extract products
products = extract_products(ner_result)
if products:
# Add to records
for product in products:
new_record = {
'Product Category': product,
'Review Content': user_input
}
st.session_state.records.append(new_record)
with col2:
if st.session_state.records:
df = pd.DataFrame(st.session_state.records)
st.dataframe(
df,
column_config={
"Product Category": "Affected Product",
"Review Content": "Related Review"
},
hide_index=True,
use_container_width=True
)
else:
st.info("No feedback records yet")