hhh / utils /viz.py
github-actions[bot]
Deploy from GitHub Actions (commit: 8b247ffacd77c0672965b8378f1d52a7dcd187ae)
9366995
from typing import Dict, List
import streamlit as st
def create_radar_chart(scores: Dict[str, float], title: str):
import plotly.graph_objects as go
categories = list(scores.keys())
values = list(scores.values())
fig = go.Figure()
fig.add_trace(go.Scatterpolar(r=values, theta=categories, fill='toself', name=title, line_color='blue'))
fig.update_layout(polar=dict(radialaxis=dict(visible=True, range=[0, 2])), showlegend=True, title=title, font_size=12)
return fig
def display_utterance_results(results: List[Dict]):
st.subheader("Utterance-Level Results")
for i, result in enumerate(results):
with st.expander(f"Utterance {i+1}: {result['speaker']}"):
st.write(f"**Text:** {result['text']}")
# Collect all scores
all_scores = {}
# OpenAI scores
if result.get('openai_scores'):
all_scores['OpenAI'] = result['openai_scores']
# Empathy scores
empathy_scores = result.get('empathy_scores') or result.get('huggingface_scores')
if empathy_scores:
all_scores['Empathy'] = empathy_scores
# Talk Type scores
if result.get('talk_type_scores'):
all_scores['Talk Type'] = result['talk_type_scores']
# Display scores in columns
if all_scores:
cols = st.columns(len(all_scores))
for idx, (eval_name, scores) in enumerate(all_scores.items()):
with cols[idx]:
st.write(f"**{eval_name} Scores:**")
for metric, score in scores.items():
st.metric(metric.replace('_', ' ').title(), f"{float(score):.2f}/2")
else:
st.write("No scores available")