# SigLIP2 Tokenizer 词汇表 ## 文件说明 - **vocab_token_to_id.json**: 完整词汇表 (token → ID) - 格式: {"token": id} - 条目数: 256,000 - **vocab_id_to_token.json**: 反向词汇表 (ID → token) - 格式: {"id": "token"} - 条目数: 256,000 - **special_tokens.json**: 特殊tokens - PAD: (ID: 0) - EOS: (ID: 1) - BOS: (ID: 2) - UNK: (ID: 3) - **common_words.json**: 常用词的token ID映射 - 包含常见的名词、动词、形容词等 ## 使用方法 ### Python中加载词汇表 ```python import json # 加载token -> id映射 with open('vocab_token_to_id.json', 'r', encoding='utf-8') as f: vocab = json.load(f) # 查询特定token的ID token_id = vocab.get('cat') print(f"'cat' 的ID: {token_id}") # 加载id -> token映射 with open('vocab_id_to_token.json', 'r', encoding='utf-8') as f: id_to_token = json.load(f) # 查询特定ID的token token = id_to_token.get('4401') print(f"ID 4401 的token: {token}") ``` ### 查询词的token ID ```python from transformers import AutoProcessor processor = AutoProcessor.from_pretrained('google/siglip2-base-patch32-256') tokenizer = processor.tokenizer # 方法1: 直接查询词汇表 vocab = tokenizer.get_vocab() token_id = vocab.get('cat') # 方法2: 使用encode token_ids = tokenizer.encode('cat', add_special_tokens=False) print(f"'cat' 的token IDs: {token_ids}") ``` ## 词汇表统计 - 总词汇量: 256,000 - 特殊tokens: 4 (PAD, EOS, BOS, UNK) - Tokenizer类型: GemmaTokenizerFast - 模型: google/siglip2-base-patch32-256 ## 注意事项 1. **空格处理**: 很多token前面有 `▁` 符号,表示该token前面有空格 - 例如: `▁cat` 表示 " cat" (前面有空格) - 而 `cat` 表示 "cat" (前面没有空格) 2. **子词分割**: 长词可能被分割成多个token - 例如: "bicycle" 可能被分割成 ["▁bi", "cycle"] 3. **大小写敏感**: tokenizer区分大小写 - "Cat" 和 "cat" 是不同的token 4. **数字**: 数字通常有独立的token ID