import streamlit as st
import pandas as pd
entailment_html_messages = {
"entailment": 'The knowledge base seems to confirm your statement',
"contradiction": 'The knowledge base seems to contradict your statement',
"neutral": 'The knowledge base is neutral about your statement',
}
def set_state_if_absent(key, value):
if key not in st.session_state:
st.session_state[key] = value
# Small callback to reset the interface in case the text of the question changes
def reset_results(*args):
st.session_state.answer = None
st.session_state.results = None
st.session_state.raw_json = None
def highlight_cols(s):
coldict = {"con": "#FFA07A", "neu": "#E5E4E2", "ent": "#a9d39e"}
if s.name in coldict.keys():
return ["background-color: {}".format(coldict[s.name])] * len(s)
return [""] * len(s)
def create_df_for_relevant_snippets(docs):
rows = []
urls = {}
for doc in docs:
row = {
"Title": doc.meta["name"],
"Relevance": f"{doc.score:.3f}",
"con": f"{doc.meta['entailment_info']['contradiction']:.2f}",
"neu": f"{doc.meta['entailment_info']['neutral']:.2f}",
"ent": f"{doc.meta['entailment_info']['entailment']:.2f}",
"Content": doc.content,
}
urls[doc.meta["name"]] = doc.meta["url"]
rows.append(row)
df = pd.DataFrame(rows).style.apply(highlight_cols)
return df, urls