Update app.py
Browse files
app.py
CHANGED
|
@@ -62,6 +62,12 @@ def load_embedder(model_name, pool_strat):
|
|
| 62 |
pooling_mode_max_tokens=("max" in pool_strat),
|
| 63 |
pooling_mode_cls_token=("cls" in pool_strat)
|
| 64 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
return SentenceTransformer(modules=[word_emb, pool_model])
|
| 66 |
|
| 67 |
# ==========================================
|
|
@@ -105,6 +111,7 @@ st.header("⚙️ Model Configuration")
|
|
| 105 |
with st.expander("1️⃣ Semantic Layer (Embeddings & Pooling)", expanded=True):
|
| 106 |
ui_embedding = st.selectbox("Embedding Model", list(EMBEDDING_MAP.keys()))
|
| 107 |
ui_pooling = st.selectbox("Pooling Strategy", list(POOLING_MAP.keys()))
|
|
|
|
| 108 |
|
| 109 |
with st.expander("2️⃣ Geometry Layer (Dimensionality Reduction)", expanded=True):
|
| 110 |
ui_algo = st.selectbox("Algorithm", ["UMAP (Complex geometry)", "PCA (Fast/Deterministic)"])
|
|
@@ -171,7 +178,9 @@ if st.button("🚀 Run Topic Modeling Pipeline", type="primary", use_container_w
|
|
| 171 |
|
| 172 |
vectorizer_model = CountVectorizer(stop_words=stop_w, ngram_range=ngram_range, max_df=0.85 if auto_noise and dataset_size > 10 else 1.0)
|
| 173 |
|
| 174 |
-
custom_embedder = load_embedder(EMBEDDING_MAP[ui_embedding], POOLING_MAP[ui_pooling])
|
|
|
|
|
|
|
| 175 |
embeddings = custom_embedder.encode(sentences)
|
| 176 |
|
| 177 |
# Fallback Logic (Step 3 representation in code)
|
|
|
|
| 62 |
pooling_mode_max_tokens=("max" in pool_strat),
|
| 63 |
pooling_mode_cls_token=("cls" in pool_strat)
|
| 64 |
)
|
| 65 |
+
|
| 66 |
+
modules = [word_emb, pool_model]
|
| 67 |
+
|
| 68 |
+
# NEW MATH STEP: If user checked the box, append the Normalization layer!
|
| 69 |
+
if apply_normalization:
|
| 70 |
+
modules.append(models.Normalize())
|
| 71 |
return SentenceTransformer(modules=[word_emb, pool_model])
|
| 72 |
|
| 73 |
# ==========================================
|
|
|
|
| 111 |
with st.expander("1️⃣ Semantic Layer (Embeddings & Pooling)", expanded=True):
|
| 112 |
ui_embedding = st.selectbox("Embedding Model", list(EMBEDDING_MAP.keys()))
|
| 113 |
ui_pooling = st.selectbox("Pooling Strategy", list(POOLING_MAP.keys()))
|
| 114 |
+
ui_normalize = st.checkbox("Apply L2 Normalization (Recommended)", value=True, help="Forces all vectors to have a length of 1.0 so length doesn't bias the clustering.")
|
| 115 |
|
| 116 |
with st.expander("2️⃣ Geometry Layer (Dimensionality Reduction)", expanded=True):
|
| 117 |
ui_algo = st.selectbox("Algorithm", ["UMAP (Complex geometry)", "PCA (Fast/Deterministic)"])
|
|
|
|
| 178 |
|
| 179 |
vectorizer_model = CountVectorizer(stop_words=stop_w, ngram_range=ngram_range, max_df=0.85 if auto_noise and dataset_size > 10 else 1.0)
|
| 180 |
|
| 181 |
+
#custom_embedder = load_embedder(EMBEDDING_MAP[ui_embedding], POOLING_MAP[ui_pooling])
|
| 182 |
+
# Ensure you pass the new variable into the function!
|
| 183 |
+
custom_embedder = load_embedder(EMBEDDING_MAP[ui_embedding], POOLING_MAP[ui_pooling], ui_normalize)
|
| 184 |
embeddings = custom_embedder.encode(sentences)
|
| 185 |
|
| 186 |
# Fallback Logic (Step 3 representation in code)
|