File size: 1,356 Bytes
276a3be 62288be 276a3be 62288be 276a3be 62288be 276a3be 62288be 276a3be 62288be 276a3be 62288be 276a3be 62288be | 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 | import gradio as gr
import pandas as pd
from sentence_transformers import SentenceTransformer
# 1) Load a small, fast, well-known model
model = SentenceTransformer("all-MiniLM-L6-v2")
def clean_and_embed(text: str):
# 2) Clean: keep ASCII only & lowercase
clean = text.encode("ascii", "ignore").decode().lower()
# 3) Tokenize via the model’s tokenizer (quick peek at tokenization)
tokens = model.tokenizer.tokenize(clean)
# 4) Get the sentence embedding (as numpy array)
emb = model.encode(clean, convert_to_numpy=True)
# 5) Build a DataFrame: one row (the sentence) × embedding dims
df = pd.DataFrame(
[emb],
index=["sentence_embedding"],
columns=[f"dim_{i}" for i in range(emb.shape[0])]
)
return " ".join(tokens), df
# 6) Gradio interface
iface = gr.Interface(
fn=clean_and_embed,
inputs=gr.Textbox(lines=2, placeholder="Type your text here…"),
outputs=[
gr.Textbox(label="Tokens"),
gr.Dataframe(label="Sentence Embedding Vector")
],
title="ASCII-Clean + SentenceTransformer",
description="Cleans input, tokenizes with a SentenceTransformer tokenizer, and shows the sentence embedding."
)
if __name__ == "__main__":
# Important for running inside Docker (expose to the host)
iface.launch(server_name="0.0.0.0", server_port=7860)
|