egumasa's picture
push
eca7f4a
import re
import spacy_streamlit
from spacy_streamlit import visualize_parser
from collections import Counter
import spacy
import streamlit as st
# try:
# from .scripts.custom_functions import build_mean_max_reducer1, build_mean_max_reducer2, build_mean_max_reducer3
# except ImportError:
# from pipeline.custom_functions import build_mean_max_reducer1, build_mean_max_reducer2, build_mean_max_reducer3
from spacy.tokens import Doc
from spacy.cli._util import import_code
from utils.visualize import visualize_spans
from utils.utility import preprocess, delete_overlapping_span, cleanup_justify
from resources.text_list import TEXT_LIST
from resources.text_list_BAWE import TEXT_LIST_BAWE
from resources.template_list import TPL_SPAN, TPL_SPAN_SLICE, TPL_SPAN_START
from resources.colors import COLORS_1
import_code("pipeline/custom_functions.py")
st.set_page_config(page_title='Engagement model comparaer', layout="wide")
# spacy.prefer_gpu()
MODEL_LIST =['en_engagement_LSTM', 'en_engagement_LSTM']
# MODEL_LIST = [
# 'en_engagement_three_RoBERTa_base_LSTM384-0.9.2/en_engagement_three_RoBERTa_base_LSTM384/en_engagement_three_RoBERTa_base_LSTM384-0.9.2',
# 'en_engagement_three_RoBERTa_acad3_db-0.9.2/en_engagement_three_RoBERTa_acad3_db/en_engagement_three_RoBERTa_acad3_db-0.9.2',
# 'silver-sweep-34/model-best',
# 'expert-sweep-4/model-best',
# 'confused-sweep-6/model-best',
# 'warm-sweep-20/model-best',
# "en_engagement_three_RoBERTa_base-1.10.0/en_engagement_three_RoBERTa_base/en_engagement_three_RoBERTa_base-1.10.0",
# "en_engagement_three_RoBERTa_acad_db-1.10.0/en_engagement_three_RoBERTa_acad_db/en_engagement_three_RoBERTa_acad_db-1.10.0",
# "en_engagement_para_RoBERTa_acad_db3-0.9.0/en_engagement_para_RoBERTa_acad_db3/en_engagement_para_RoBERTa_acad_db3-0.9.0",
# "en_engagement_para_RoBERTa_acad_LSTM2-0.9.0/en_engagement_para_RoBERTa_acad_LSTM2/en_engagement_para_RoBERTa_acad_LSTM2-0.9.0",
# "en_engagement_three_RoBERTa_acad_db3-0.9.1/en_engagement_three_RoBERTa_acad_db3/en_engagement_three_RoBERTa_acad_db3-0.9.1",
# "en_engagement_three_RoBERTa_acad_LSTM2-0.9.1/en_engagement_three_RoBERTa_acad_LSTM2/en_engagement_three_RoBERTa_acad_LSTM2-0.9.1",
# "en_engagement_three_RoBERTa_acad_db3-0.9.2/en_engagement_three_RoBERTa_acad_db3/en_engagement_three_RoBERTa_acad_db3-0.9.2",
# 'en_engagement_spl_RoBERTa_acad_db-0.7.4/en_engagement_spl_RoBERTa_acad_db/en_engagement_spl_RoBERTa_acad_db-0.7.4',
# 'en_engagement_spl_RoBERTa_acad_db3-0.9.0/en_engagement_spl_RoBERTa_acad_db3/en_engagement_spl_RoBERTa_acad_db3-0.9.0',
# 'en_engagement_spl_RoBERTa_acad_LSTM-0.7.2/en_engagement_spl_RoBERTa_acad_LSTM/en_engagement_spl_RoBERTa_acad_LSTM-0.7.2',
# 'en_engagement_spl_RoBERTa_acad_512',
# 'en_engagement_spl_RoBERTa_acad',
# 'en_engagement_spl_RoBERTa_exp-0.6.5/en_engagement_spl_RoBERTa_exp/en_engagement_spl_RoBERTa_exp-0.6.5',
# # 'en_engagement_spl_RoBERTa_acad-0.3.4.1221/en_engagement_spl_RoBERTa_acad/en_engagement_spl_RoBERTa_acad-0.3.4.1221',
# # 'en_engagement_spl_RoBERTa_acad-0.2.2.1228/en_engagement_spl_RoBERTa_acad/en_engagement_spl_RoBERTa_acad-0.2.2.1228',
# # 'en_engagement_spl_RoBERTa_acad-0.2.1.1228/en_engagement_spl_RoBERTa_acad/en_engagement_spl_RoBERTa_acad-0.2.1.1228',
# # 'en_engagement_spl_RoBERTa_acad-0.2.2.1220/en_engagement_spl_RoBERTa_acad/en_engagement_spl_RoBERTa_acad-0.2.2.1220',
# # 'en_engagement_spl_RoBERTa2-0.2.2.1210/en_engagement_spl_RoBERTa2/en_engagement_spl_RoBERTa2-0.2.2.1210',
# # 'en_engagement_spl_RoBERTa-0.2.2.1210/en_engagement_spl_RoBERTa/en_engagement_spl_RoBERTa-0.2.2.1210',
# # 'en_engagement_spl_RoBERTa_acad_max1_do02',
# # 'en_engagement_spl_RoBERTa2-0.2.2.1210/en_engagement_spl_RoBERTa2/en_engagement_spl_RoBERTa2-0.2.2.1210',
# # 'en_engagement_spl_RoBERTa_acad-0.2.3.1210/en_engagement_spl_RoBERTa_acad/en_engagement_spl_RoBERTa_acad-0.2.3.1210',
# # 'en_engagement_spl_RoBERTa_acad_max1_do02',
# # 'en_engagement_spl_RoBERTa_sqbatch_RAdam-20221202_0.1.5/en_engagement_spl_RoBERTa_sqbatch_RAdam/en_engagement_spl_RoBERTa_sqbatch_RAdam-20221202_0.1.5',
# # 'en_engagement_spl_RoBERTa_context_flz-20221130_0.1.4/en_engagement_spl_RoBERTa_context_flz/en_engagement_spl_RoBERTa_context_flz-20221130_0.1.4',
# # 'en_engagement_spl_RoBERTa_cx_max1_do2-20221202_0.1.5/en_engagement_spl_RoBERTa_cx_max1_do2/en_engagement_spl_RoBERTa_cx_max1_do2-20221202_0.1.5',
# # 'en_engagement_spl_RoBERTa_context_flz-20221125_0.1.4/en_engagement_spl_RoBERTa_context_flz/en_engagement_spl_RoBERTa_context_flz-20221125_0.1.4',
# # 'en_engagement_RoBERTa_context_flz-20221125_0.1.4/en_engagement_RoBERTa_context_flz/en_engagement_RoBERTa_context_flz-20221125_0.1.4',
# # 'en_engagement_RoBERTa_context_flz-20221117_0.1.3/en_engagement_RoBERTa_context_flz/en_engagement_RoBERTa_context_flz-20221117_0.1.3',
# # 'en_engagement_spl_RoBERTa_acad_context_flz-20221117_0.1.3/en_engagement_spl_RoBERTa_acad_context_flz/en_engagement_spl_RoBERTa_acad_context_flz-20221117_0.1.3',
# # 'en_engagement_RoBERTa_context_flz-Batch2_0.1.1/en_engagement_RoBERTa_context_flz/en_engagement_RoBERTa_context_flz-Batch2_0.1.1',
# # 'en_engagement_RoBERTa_context_flz-20221113_0.1.3/en_engagement_RoBERTa_context_flz/en_engagement_RoBERTa_context_flz-20221113_0.1.3',
# # 'en_engagement_RoBERTa_context_flz-20221113_0.1.1/en_engagement_RoBERTa_context_flz/en_engagement_RoBERTa_context_flz-20221113_0.1.1',
# # 'en_engagement_RoBERTa-0.0.2/en_engagement_RoBERTa/en_engagement_RoBERTa-0.0.2',
# # 'en_engagement_RoBERTa_combined-Batch2Eng_0.2/en_engagement_RoBERTa_combined/en_engagement_RoBERTa_combined-Batch2Eng_0.2',
# # 'en_engagement_RoBERTa_acad-0.2.1/en_engagement_RoBERTa_acad/en_engagement_RoBERTa_acad-0.2.1',
# # # 'en_engagement_BERT-0.0.2/en_engagement_BERT/en_engagement_BERT-0.0.2',
# # # 'en_engagement_BERT_acad-0.0.2/en_engagement_BERT_acad/en_engagement_BERT_acad-0.0.2',
# # # 'en_engagement_RoBERTa_acad-0.0.2/en_engagement_RoBERTa_acad/en_engagement_RoBERTa_acad-0.0.2',
# # 'en_engagement_RoBERTa-0.0.1/en_engagement_RoBERTa/en_engagement_RoBERTa-0.0.1',
# # # ' en_engagement_RoBERTa_sent-0.0.1_null/en_engagement_RoBERTa_sent/en_engagement_RoBERTa_sent-0.0.1_null',
# # # 'en_engagement_RoBERTa_combined-0.0.1/en_engagement_RoBERTa_combined/en_engagement_RoBERTa_combined-0.0.1',
# # 'en_engagement_RoBERTa-ME_AtoE/en_engagement_RoBERTa/en_engagement_RoBERTa-ME_AtoE',
# # 'en_engagement_RoBERTa-AtoI_0.0.3/en_engagement_RoBERTa/en_engagement_RoBERTa-AtoI_0.0.3',
# # 'en_engagement_RoBERTa-AtoI_0.0.3/en_engagement_RoBERTa/en_engagement_RoBERTa-AtoI_0.0.2'
# ]
multicol = st.checkbox("Compare two models", value=False, key=None, help=None)
model1 = st.selectbox('Select model option 1', MODEL_LIST, index=0)
model2 = st.selectbox('Select model option 2', MODEL_LIST, index=1)
if '/' in model1:
model1 = "packages/" + model1
if '/' in model2:
model2 = "packages/" + model2
@st.cache(allow_output_mutation=True)
def load_model(spacy_model):
# source = spacy.blank("en")
nlp = spacy.load(spacy_model) #, vocab=nlp_to_copy.vocab
nlp.add_pipe('sentencizer')
return (nlp)
# source = spacy.blank("en")
nlp = load_model(model1)
if multicol:
nlp2 = load_model(model2)
text = st.selectbox('select sent to debug', TEXT_LIST_BAWE)
input_text = st.text_area("", height=200)
# Dependency parsing
st.header("Text", "text")
if len(input_text.split(" ")) > 1:
doc = nlp(preprocess(input_text))
if multicol:
doc2 = nlp2(preprocess(input_text))
# st.markdown("> " + input_text)
else:
doc = nlp(preprocess(text))
if multicol:
doc2 = nlp2(preprocess(text))
# st.markdown("> " + text)
clearjustify = st.checkbox(
"Clear problematic JUSTIFYING spans", value=True, key=None, help=None)
delete_overlaps = st.checkbox(
"Delete overlaps", value=True, key=None, help=None)
# combine = st.checkbox(
# "Combine", value=False, key=None, help=None)
# import copy
# def combine_spangroups(doc1, doc2):
# # new_doc = Doc.from_docs([doc1, doc2], ensure_whitespace=True)
# new_doc = copy.deepcopy(doc1)
# # type()
# new_doc.spans['sc'].extend(doc2.spans['sc'])
# return new_doc
# if combine:
# new_doc = combine_spangroups(doc, doc2)
# visualize_spans(new_doc,
# spans_key="sc",
# title='Combined spans:',
# displacy_options={
# 'template': {
# "span": TPL_SPAN,
# 'slice': TPL_SPAN_SLICE,
# 'start': TPL_SPAN_START,
# },
# "colors": COLORS_1,
# },
# simple=False)
if clearjustify:
cleanup_justify(doc, doc.spans['sc'])
if delete_overlaps:
delete_overlapping_span(doc.spans['sc'])
if multicol:
delete_overlapping_span(doc2.spans['sc'])
if not multicol:
visualize_spans(doc,
spans_key="sc",
title='Engagement Span Anotations 1',
displacy_options={
'template': {
"span": TPL_SPAN,
'slice': TPL_SPAN_SLICE,
'start': TPL_SPAN_START,
},
"colors": COLORS_1,
},
simple=False)
else:
col1, col2 = st.columns(2)
with col1:
visualize_spans(doc,
spans_key="sc",
title='Engagement Span Anotations 1',
displacy_options={
'template': {
"span": TPL_SPAN,
'slice': TPL_SPAN_SLICE,
'start': TPL_SPAN_START,
},
"colors": COLORS_1,
},
simple=False)
with col2:
visualize_spans(doc2,
spans_key="sc",
title='Engagement Span Anotations 2',
displacy_options={
'template': {
"span": TPL_SPAN,
'slice': TPL_SPAN_SLICE,
'start': TPL_SPAN_START,
},
"colors": COLORS_1,
},
simple=False)
dep_options = {"fine_grained": True, "distance": 120}
visualize_parser(doc, displacy_options=dep_options)