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)
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.
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.