chencyr's picture
Add application
2a5a80c
Raw History Blame Contribute Delete
1.47 kB
import gradio as gr
from transformers import AutoTokenizer, AutoModel, pipeline
import torch
MODEL_NAME = "microsoft/codebert-base"
# ๅˆๅง‹ๅŒ– tokenizer ๅ’Œ model
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModel.from_pretrained(MODEL_NAME)
# ๅปบ็ซ‹ไธ€ๅ€‹ feature-extraction pipeline
feature_extractor = pipeline(
task="feature-extraction",
model=model,
tokenizer=tokenizer,
return_tensors=True, # ่ฎ“่ผธๅ‡บไฟๆŒ tensor ๅฝขๅผ
framework="pt" # ๆŒ‡ๅฎš PyTorch
)
def embed_text(input_text):
# pipeline ้ ่จญ่ผธๅ‡บ็š„ๆ˜ฏ List[List[List[float]]] ็š„ไธ‰็ถญ้™ฃๅˆ—
# ๅฏไพ้œ€ๆฑ‚ๅš pooling
outputs = feature_extractor(input_text)
# ๅ‡่จญๅชๅ–็ฌฌไธ€ๅ€‹ batch ไธฆๅšๅนณๅ‡ๆฑ ๅŒ–
# outputs[0] => List[List[float]]
# ๅ…ถไธญๆฏๅ€‹ token ้ƒฝๆ˜ฏไธ€ๅ€‹ๅ‘้‡
token_embeddings = torch.tensor(outputs[0])
embedding = torch.mean(token_embeddings, dim=0) # ๅ–ๆ‰€ๆœ‰ token ็š„ๅนณๅ‡
return embedding.tolist()
# ็”จ Gradio ๅปบ็ซ‹ไธ€ๅ€‹ไป‹้ข
with gr.Blocks():
gr.Markdown("# Feature Extraction Demo with CodeBERT")
text_input = gr.Textbox(label="Enter text here")
output = gr.JSON(label="Vector Embedding")
btn = gr.Button("Compute Embedding")
btn.click(embed_text, inputs=text_input, outputs=output)
gr.Examples(
examples=["def hello_world(): print('Hello World!')", "print('test')"],
inputs=text_input,
outputs=output
)
gr.launch()