import streamlit as st import numpy as np import pandas as pd # import plotly.express as px # from plotly.subplots import make_subplots import json # Reference: https://huggingface.co/spaces/team-zero-shot-nli/zero-shot-nli/blob/main/utils.py # def plot_result(top_topics, scores): # top_topics = np.array(top_topics) # scores = np.array(scores) # scores *= 100 # fig = px.bar(x=np.around(scores,2), y=top_topics, orientation='h', # labels={'x': 'Confidence Score', 'y': 'Label'}, # text=scores, # range_x=(0,115), # title='Predictions', # color=np.linspace(0,1,len(scores)), # color_continuous_scale='GnBu') # fig.update(layout_coloraxis_showscale=False) # fig.update_traces(texttemplate='%{text:0.1f}%', textposition='outside') # st.plotly_chart(fig) # def plot_dual_bar_chart(topics_summary, scores_summary, topics_text, scores_text): # data1 = pd.DataFrame({'label': topics_summary, 'scores on summary': scores_summary}) # data2 = pd.DataFrame({'label': topics_text, 'scores on full text': scores_text}) # data = pd.merge(data1, data2, on = ['label']) # data.sort_values('scores on summary', ascending = True, inplace = True) # fig = make_subplots(rows=1, cols=2, # subplot_titles=("Predictions on Summary", "Predictions on Full Text"), # ) # fig1 = px.bar(x=round(data['scores on summary']*100, 2), y=data['label'], orientation='h', # text=round(data['scores on summary']*100, 2), # ) # fig2 = px.bar(x=round(data['scores on full text']*100,2), y=data['label'], orientation='h', # text=round(data['scores on full text']*100,2), # ) # fig.add_trace(fig1['data'][0], row=1, col=1) # fig.add_trace(fig2['data'][0], row=1, col=2) # fig.update_traces(texttemplate='%{text:0.1f}%', textposition='outside') # fig.update_layout(height=600, width=700) #, title_text="Predictions for") # fig.update_xaxes(range=[0,115]) # fig.update_xaxes(matches='x') # fig.update_yaxes(showticklabels=False) # hide all the xticks # fig.update_yaxes(showticklabels=True, row=1, col=1) # st.plotly_chart(fig) # def plot_dual_bar_chart(topics_summary, scores_summary, topics_text, scores_text): # data1 = pd.DataFrame({'label': topics_summary, 'scores': scores_summary}) # data1['classification_on'] = 'summary' # data2 = pd.DataFrame({'label': topics_text, 'scores': scores_text}) # data2['classification_on'] = 'full text' # data = pd.concat([data1, data2]) # data['scores'] = round(data['scores']*100,2) # fig = px.bar( # data, x="scores", y="label", #orientation = 'h', # labels={'x': 'Confidence Score', 'y': 'Label'}, # text=data['scores'], # range_x=(0,115), # color="label", barmode="group", # facet_col="classification_on", # category_orders={"classification_on": ["summary", "full text"]} # ) # fig.update_traces(texttemplate='%{text:0.1f}%', textposition='outside') # st.plotly_chart(fig) def examples_load(): with open("examples.json") as f: data=json.load(f) return data['text'], data['long_text_license'], data['labels'], data['ground_labels'] def example_long_text_load(): with open("example_long_text.txt", "r") as f: text_data = f.read() return text_data