src.subpages.faiss

 1import streamlit as st
 2from datasets import Dataset
 3
 4from src.subpages.page import Context, Page  # type: ignore
 5from src.utils import device, explode_df, htmlify_labeled_example, tag_text
 6
 7
 8class FaissPage(Page):
 9    name = "Bla"
10    icon = "x-octagon"
11
12    def render(self, context: Context):
13        dd = Dataset.from_pandas(context.df_tokens_merged, preserve_index=False)  # type: ignore
14
15        dd.add_faiss_index(column="hidden_states", index_name="token_index")
16        token_id, text = (
17            6,
18            "Die Wissenschaft ist eine wichtige Grundlage für die Entwicklung von neuen Technologien.",
19        )
20        token_id, text = (
21            15,
22            "Außer der unbewussten Beeinflussung eines Resultats gibt es auch noch andere Motive die das reine strahlende Licht der Wissenschaft etwas zu trüben vermögen.",
23        )
24        token_id, text = (
25            3,
26            "Mit mehr Instrumenten einer besseren präziseren Datenbasis ist auch ein viel besseres smarteres Risikomanagement möglich.",
27        )
28        token_id, text = (
29            7,
30            "Es gilt die akademische Viertelstunde das heißt Beginn ist fünfzehn Minuten später.",
31        )
32        token_id, text = (
33            7,
34            "Damit einher geht übrigens auch dass Marcella Collocinis Tochter keine wie auch immer geartete strafrechtliche Verfolgung zu befürchten hat.",
35        )
36        token_id, text = (
37            16,
38            "After Steve Jobs met with Bill Gates of Microsoft back in 1993, they went to Cupertino and made the deal.",
39        )
40
41        tagged = tag_text(text, context.tokenizer, context.model, device)
42        hidden_states = tagged["hidden_states"]
43        # tagged.drop("hidden_states", inplace=True, axis=1)
44        # hidden_states_vec = svd.transform([hidden_states[token_id]])[0].astype(np.float32)
45        hidden_states_vec = hidden_states[token_id]
46        tagged = tagged.astype(str)
47        tagged["probs"] = tagged["probs"].apply(lambda x: x[:-2])
48        tagged["check"] = tagged["probs"].apply(
49            lambda x: "✅ ✅" if int(x) < 100 else "✅" if int(x) < 1000 else ""
50        )
51        st.dataframe(tagged.drop("hidden_states", axis=1).T)
52        results = dd.get_nearest_examples("token_index", hidden_states_vec, k=10)
53        for i, (dist, idx, token) in enumerate(
54            zip(results.scores, results.examples["ids"], results.examples["tokens"])
55        ):
56            st.code(f"{dist:.3f} {token}")
57            sample = context.df_tokens_merged.query(f"ids == '{idx}'")
58            st.write(f"[{i};{idx}] " + htmlify_labeled_example(sample), unsafe_allow_html=True)
class FaissPage(src.subpages.page.Page):
 9class FaissPage(Page):
10    name = "Bla"
11    icon = "x-octagon"
12
13    def render(self, context: Context):
14        dd = Dataset.from_pandas(context.df_tokens_merged, preserve_index=False)  # type: ignore
15
16        dd.add_faiss_index(column="hidden_states", index_name="token_index")
17        token_id, text = (
18            6,
19            "Die Wissenschaft ist eine wichtige Grundlage für die Entwicklung von neuen Technologien.",
20        )
21        token_id, text = (
22            15,
23            "Außer der unbewussten Beeinflussung eines Resultats gibt es auch noch andere Motive die das reine strahlende Licht der Wissenschaft etwas zu trüben vermögen.",
24        )
25        token_id, text = (
26            3,
27            "Mit mehr Instrumenten einer besseren präziseren Datenbasis ist auch ein viel besseres smarteres Risikomanagement möglich.",
28        )
29        token_id, text = (
30            7,
31            "Es gilt die akademische Viertelstunde das heißt Beginn ist fünfzehn Minuten später.",
32        )
33        token_id, text = (
34            7,
35            "Damit einher geht übrigens auch dass Marcella Collocinis Tochter keine wie auch immer geartete strafrechtliche Verfolgung zu befürchten hat.",
36        )
37        token_id, text = (
38            16,
39            "After Steve Jobs met with Bill Gates of Microsoft back in 1993, they went to Cupertino and made the deal.",
40        )
41
42        tagged = tag_text(text, context.tokenizer, context.model, device)
43        hidden_states = tagged["hidden_states"]
44        # tagged.drop("hidden_states", inplace=True, axis=1)
45        # hidden_states_vec = svd.transform([hidden_states[token_id]])[0].astype(np.float32)
46        hidden_states_vec = hidden_states[token_id]
47        tagged = tagged.astype(str)
48        tagged["probs"] = tagged["probs"].apply(lambda x: x[:-2])
49        tagged["check"] = tagged["probs"].apply(
50            lambda x: "✅ ✅" if int(x) < 100 else "✅" if int(x) < 1000 else ""
51        )
52        st.dataframe(tagged.drop("hidden_states", axis=1).T)
53        results = dd.get_nearest_examples("token_index", hidden_states_vec, k=10)
54        for i, (dist, idx, token) in enumerate(
55            zip(results.scores, results.examples["ids"], results.examples["tokens"])
56        ):
57            st.code(f"{dist:.3f} {token}")
58            sample = context.df_tokens_merged.query(f"ids == '{idx}'")
59            st.write(f"[{i};{idx}] " + htmlify_labeled_example(sample), unsafe_allow_html=True)

Base class for all pages.

FaissPage()
name: str = 'Bla'
icon: str = 'x-octagon'
def render(self, context: src.subpages.page.Context)
13    def render(self, context: Context):
14        dd = Dataset.from_pandas(context.df_tokens_merged, preserve_index=False)  # type: ignore
15
16        dd.add_faiss_index(column="hidden_states", index_name="token_index")
17        token_id, text = (
18            6,
19            "Die Wissenschaft ist eine wichtige Grundlage für die Entwicklung von neuen Technologien.",
20        )
21        token_id, text = (
22            15,
23            "Außer der unbewussten Beeinflussung eines Resultats gibt es auch noch andere Motive die das reine strahlende Licht der Wissenschaft etwas zu trüben vermögen.",
24        )
25        token_id, text = (
26            3,
27            "Mit mehr Instrumenten einer besseren präziseren Datenbasis ist auch ein viel besseres smarteres Risikomanagement möglich.",
28        )
29        token_id, text = (
30            7,
31            "Es gilt die akademische Viertelstunde das heißt Beginn ist fünfzehn Minuten später.",
32        )
33        token_id, text = (
34            7,
35            "Damit einher geht übrigens auch dass Marcella Collocinis Tochter keine wie auch immer geartete strafrechtliche Verfolgung zu befürchten hat.",
36        )
37        token_id, text = (
38            16,
39            "After Steve Jobs met with Bill Gates of Microsoft back in 1993, they went to Cupertino and made the deal.",
40        )
41
42        tagged = tag_text(text, context.tokenizer, context.model, device)
43        hidden_states = tagged["hidden_states"]
44        # tagged.drop("hidden_states", inplace=True, axis=1)
45        # hidden_states_vec = svd.transform([hidden_states[token_id]])[0].astype(np.float32)
46        hidden_states_vec = hidden_states[token_id]
47        tagged = tagged.astype(str)
48        tagged["probs"] = tagged["probs"].apply(lambda x: x[:-2])
49        tagged["check"] = tagged["probs"].apply(
50            lambda x: "✅ ✅" if int(x) < 100 else "✅" if int(x) < 1000 else ""
51        )
52        st.dataframe(tagged.drop("hidden_states", axis=1).T)
53        results = dd.get_nearest_examples("token_index", hidden_states_vec, k=10)
54        for i, (dist, idx, token) in enumerate(
55            zip(results.scores, results.examples["ids"], results.examples["tokens"])
56        ):
57            st.code(f"{dist:.3f} {token}")
58            sample = context.df_tokens_merged.query(f"ids == '{idx}'")
59            st.write(f"[{i};{idx}] " + htmlify_labeled_example(sample), unsafe_allow_html=True)

This function renders the page.