Spaces:
Sleeping
Sleeping
import os | |
import gradio as gr | |
import pandas as pd | |
from gradio.themes import colors | |
from transformers import AutoTokenizer | |
os.environ['TOKENIZERS_PARALLELISM'] = "false" | |
# Function to map tokenized text to IDs | |
def inference( | |
text="", | |
model_id="openai/clip-vit-large-patch14", | |
progress=gr.Progress() | |
) -> (list[str, str], list[str, str], pd.DataFrame): | |
if text == "": | |
return [], [], pd.DataFrame() | |
progress(0, desc='Loading tokenizer...') | |
tokenizer = AutoTokenizer.from_pretrained(model_id) | |
# Use tokenizer to tokenize the text | |
progress(0.5, desc='Tokenizing text...') | |
text_inputs = tokenizer(text, return_tensors='pt') | |
input_ids = text_inputs['input_ids'].tolist()[0] # Convert tensor to list | |
# Create pairs of tokens and IDs | |
tokens = [tokenizer.decode([id_]) for id_ in input_ids] | |
token_pairs = [] | |
for token, id_ in zip(tokens, input_ids): | |
token_pairs.append((token, str(id_))) | |
# Count the number of characters and tokens | |
pos_count = pd.DataFrame({ | |
"Char Count": [len(text)], | |
"Token Count": [len(token_pairs)] | |
}) | |
# Create list of special tokens | |
special_tokens = [] | |
for k, v in tokenizer.special_tokens_map.items(): | |
if k == 'additional_special_tokens': | |
continue | |
sp_token_map = [str(k), str(v)] | |
special_tokens.append(sp_token_map) | |
return token_pairs, special_tokens, pos_count | |
if __name__ == '__main__': | |
iface = gr.Interface( | |
fn=inference, | |
inputs=[ | |
gr.Textbox(label="Text"), | |
gr.Dropdown( | |
label="Model", | |
choices=[ | |
"openai/clip-vit-large-patch14", | |
"google/gemma-7b", | |
"google-bert/bert-base-uncased", | |
"google/flan-t5-base", | |
"openai-community/gpt2", | |
"rinna/japanese-gpt-1b", | |
"cyberagent/open-calm-7b", | |
], | |
value="openai/clip-vit-large-patch14" | |
), | |
], | |
outputs=[ | |
gr.Highlightedtext(label="Highlighted Text"), | |
gr.Highlightedtext(label="Special Tokens", combine_adjacent=True, adjacent_separator=' / '), | |
gr.Dataframe(label="Position Count"), | |
], | |
examples=[ | |
["When I told my computer I needed a break, it froze.", "openai/clip-vit-large-patch14"], | |
["Yesterday, I thought my cat was studying for her degree in philosophy because she sat on my book, " | |
"but turns out she was just trying to hatch a plot to steal my dinner.", "openai/clip-vit-large-patch14"], | |
["The square root of x is the cube root of y. What is y to the power of 2, if x = 4?", | |
"google/flan-t5-base"], | |
["In my home country, it's a custom to say 'いただきマサチューセッツ' before we start eating a meal.", | |
"google/gemma-7b"], | |
["日本で一番高い山は富士山ですが、二番目に高い山は何ですか?", "rinna/japanese-gpt-1b"], | |
], | |
cache_examples=True, | |
title="TokenVisor 👀", | |
description="Visualize how the Tokenizer used in Hugging Face's Transformers library tokenizes text.", | |
theme=gr.Theme(primary_hue=colors.green, secondary_hue=colors.yellow), | |
allow_flagging="never", | |
) | |
iface.queue().launch() | |