File size: 3,750 Bytes
c8d36ae
 
 
597bf7d
 
7a75a86
 
597bf7d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f259527
597bf7d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"""
A very direct and interactive way to test your model is by providing it with a list of text inputs and then inspecting the model outputs. The application features a multiline text field so the user can input multiple texts separated by newlines. For each text, the app will show a data frame containing the tokenized string, token predictions, probabilities and a visual indicator for low probability predictions -- these are the ones you should inspect first for prediction errors.
"""
import streamlit as st

from src.subpages.page import Context, Page
from src.utils import device, tag_text

_DEFAULT_SENTENCES = """
Damit hatte er auf ihr letztes , völlig schiefgelaufenes Geschäftsessen angespielt .
Damit einher geht übrigens auch , dass Marcella , Collocinis Tochter , keine wie auch immer geartete strafrechtliche Verfolgung zu befürchten hat .
Nach dem Bell ’ schen Theorem , einer Physik jenseits der Quanten , ist die Welt , die wir für real halten , nicht objektivierbar .
Dazu muss man wiederum wissen , dass die Aussagekraft von Tests , neben der Sensitivität und Spezifität , ganz entscheidend von der Vortestwahrscheinlichkeit abhängt .
Haben Sie sich schon eingelebt ? « erkundigte er sich .
Das Auto ein Totalschaden , mein Beifahrer ein weinender Jammerlappen .
Seltsam , wunderte sie sich , dass das Stück nach mehr als eineinhalb Jahrhunderten noch so gut in Schuss ist .
Oder auf den Strich gehen , Strümpfe stricken , Geld hamstern .
Und Allah ist Allumfassend Allwissend .
Und Pedro Moacir redete weiter : » Verzicht , Pater Antonio , Verzicht , zu großer Schmerz über Verzicht , Sehnsucht , die sich nicht erfüllt , die sich nicht erfüllen kann , das sind Qualen , die ein Verstummen nach sich ziehen können , oder Härte .
Mama-San ging mittlerweile fast ausnahmslos nur mit Wei an ihrer Seite aus dem Haus , kaum je mit einem der Mädchen und niemals allein.
""".strip()
_DEFAULT_SENTENCES = """
Elon Musk’s Berghain humiliation — I know the feeling
Musk was also seen at a local spot called Sisyphos celebrating entrepreneur Adeo Ressi's birthday, according to The Times.
""".strip()


class ProbingPage(Page):
    name = "Probing"
    icon = "fonts"

    def _get_widget_defaults(self):
        return {"probing_textarea": _DEFAULT_SENTENCES}

    def render(self, context: Context):
        st.title("🔠 Interactive Probing")

        with st.expander("💡", expanded=True):
            st.write(
                "A very direct and interactive way to test your model is by providing it with a list of text inputs and then inspecting the model outputs. The application features a multiline text field so the user can input multiple texts separated by newlines. For each text, the app will show a data frame containing the tokenized string, token predictions, probabilities and a visual indicator for low probability predictions -- these are the ones you should inspect first for prediction errors."
            )

        sentences = st.text_area("Sentences", height=200, key="probing_textarea")
        if not sentences.strip():
            return
        sentences = [sentence.strip() for sentence in sentences.splitlines()]

        for sent in sentences:
            sent = sent.replace(",", "").replace("  ", " ")
            with st.expander(sent):
                tagged = tag_text(sent, context.tokenizer, context.model, device)
                tagged = tagged.astype(str)
                tagged["probs"] = tagged["probs"].apply(lambda x: x[:-2])
                tagged["check"] = tagged["probs"].apply(
                    lambda x: "✅ ✅" if int(x) < 100 else "✅" if int(x) < 1000 else ""
                )
                st.dataframe(tagged.drop("hidden_states", axis=1).T)