Files
HomeAgent/internal/memory/qwen/testdata/qwen_tokenizer_reference.json
JianFeeeee e985151da9 feat(memory): 千问字节级 BPE 分词器 + 与上游逐条对齐的回归测试
为「千问嵌入模型导出 ONNX 并内嵌」的 Go 侧准备。CLIP 那套 tokenizer 不能复用:
CLIP 是「小写化 + 空白规整 + 词表 BPE」,千问是 **GPT-2 式字节级 BPE**
(先按字节映射到安全 unicode,再对映射结果做合并),中文与空白输入的切分
完全不同。

实现中撞到两个与上游对齐的坑,都由测试暴露:

1. **`\s+(?!\S)` 的语义依赖正则回溯**,不是「等价于 `\s+`」。
   `\s+` 先贪婪吃完整段空白,发现后面是非空白导致 `(?!\S)` 失败,于是回退
   一个字符,**正好留下末尾一个空白**给前面以 ` ?` / `[^…]?` 开头的分支合并。
   这直接决定切分点:`"   leading"` 会切成 `"  "` + `" leading"`,
   而不是 `"   "` + `"leading"`。RE2 不支持 lookaround,近似改写必然对不上,
   所以改成按分支顺序**显式实现**(含 `\s*[\r\n]+` 的回溯语义)。
   实测:近似改写时 26 条里错 3 条,全部是空白串用例。

2. **Go 的 `\s` 只有 ASCII,且 regexp 不支持二进制属性 `\p{White_Space}`**
   (只支持 script/category,直接写会报 invalid character class range)。
   而上游 Rust regex 的 `\s` 正是 White_Space。改用 `unicode.IsSpace` 作为
   唯一判据,避免全角空格/NBSP/行分隔符的切分点漂移。

另外特殊 token(`<|im_start|>` 等 24 个 AddedToken)必须**整体优先匹配**并
按长度降序,否则会被 BPE 拆成子 token,模型收到的输入就变了——且不会报任何错。

验证:`testdata/qwen_tokenizer_reference.json` 由 HuggingFace 真实 tokenizer
生成(26 条用例,覆盖中/英/中英混排/数字/各类空白形态/标点/emoji/特殊 token/
长文本/空串/单字符边界),Go 实现逐条精确对齐。字节↔unicode 映射另测双射性
(有碰撞会让不同字节编成同一 token,静默产生错误输入)。
2026-09-11 00:11:58 +08:00

1376 lines
22 KiB
JSON

{
"model_dir": "/home/newqqagent/models/models/qwen--Qwen3-VL-Embedding-2B/snapshots/master",
"vocab_size": 151643,
"added_tokens": [
{
"content": "<|endoftext|>",
"id": 151643,
"special": true
},
{
"content": "<|im_start|>",
"id": 151644,
"special": true
},
{
"content": "<|im_end|>",
"id": 151645,
"special": true
},
{
"content": "<|object_ref_start|>",
"id": 151646,
"special": true
},
{
"content": "<|object_ref_end|>",
"id": 151647,
"special": true
},
{
"content": "<|box_start|>",
"id": 151648,
"special": true
},
{
"content": "<|box_end|>",
"id": 151649,
"special": true
},
{
"content": "<|quad_start|>",
"id": 151650,
"special": true
},
{
"content": "<|quad_end|>",
"id": 151651,
"special": true
},
{
"content": "<|vision_start|>",
"id": 151652,
"special": true
},
{
"content": "<|vision_end|>",
"id": 151653,
"special": true
},
{
"content": "<|vision_pad|>",
"id": 151654,
"special": true
},
{
"content": "<|image_pad|>",
"id": 151655,
"special": true
},
{
"content": "<|video_pad|>",
"id": 151656,
"special": true
},
{
"content": "<tool_call>",
"id": 151657,
"special": false
},
{
"content": "</tool_call>",
"id": 151658,
"special": false
},
{
"content": "<|fim_prefix|>",
"id": 151659,
"special": false
},
{
"content": "<|fim_middle|>",
"id": 151660,
"special": false
},
{
"content": "<|fim_suffix|>",
"id": 151661,
"special": false
},
{
"content": "<|fim_pad|>",
"id": 151662,
"special": false
},
{
"content": "<|repo_name|>",
"id": 151663,
"special": false
},
{
"content": "<|file_sep|>",
"id": 151664,
"special": false
},
{
"content": "<tool_response>",
"id": 151665,
"special": false
},
{
"content": "</tool_response>",
"id": 151666,
"special": false
},
{
"content": "<think>",
"id": 151667,
"special": false
},
{
"content": "</think>",
"id": 151668,
"special": false
}
],
"cases": [
{
"text": "今天天气怎么样",
"ids": [
100644,
104307,
104472
],
"tokens": [
"ä»Ĭ天",
"天æ°Ķ",
"æĢİä¹Īæł·"
]
},
{
"text": "如何申请年假",
"ids": [
100007,
101915,
7948,
99436
],
"tokens": [
"å¦Ĥä½ķ",
"çĶ³è¯·",
"å¹´",
"åģĩ"
]
},
{
"text": "邮件代理是否已经成功接入",
"ids": [
102955,
101259,
64471,
99461,
19108,
109159
],
"tokens": [
"éĤ®ä»¶",
"代çIJĨ",
"æĺ¯åIJ¦",
"å·²ç»ı",
"æĪIJåĬŁ",
"æİ¥åħ¥"
]
},
{
"text": "hello world",
"ids": [
14990,
1879
],
"tokens": [
"hello",
"Ġworld"
]
},
{
"text": "How do I apply for annual leave?",
"ids": [
4340,
653,
358,
3796,
369,
9775,
5274,
30
],
"tokens": [
"How",
"Ġdo",
"ĠI",
"Ġapply",
"Ġfor",
"Ġannual",
"Ġleave",
"?"
]
},
{
"text": "GPT-4 的上下文窗口是 128000 tokens",
"ids": [
38,
2828,
12,
19,
43589,
102285,
16744,
105271,
20412,
220,
16,
17,
23,
15,
15,
15,
11211
],
"tokens": [
"G",
"PT",
"-",
"4",
"ĠçļĦ",
"ä¸Ĭä¸ĭ",
"æĸĩ",
"çªĹåı£",
"æĺ¯",
"Ġ",
"1",
"2",
"8",
"0",
"0",
"0",
"Ġtokens"
]
},
{
"text": "版本 v1.5.3 修复了 3 个 bug",
"ids": [
71109,
348,
16,
13,
20,
13,
18,
220,
104749,
34187,
220,
18,
220,
18947,
9876
],
"tokens": [
"çīĪæľ¬",
"Ġv",
"1",
".",
"5",
".",
"3",
"Ġ",
"ä¿®å¤į",
"äºĨ",
"Ġ",
"3",
"Ġ",
"个",
"Ġbug"
]
},
{
"text": "trailing space ",
"ids": [
376,
14277,
3550,
262
],
"tokens": [
"tr",
"ailing",
"Ġspace",
"ĠĠĠ"
]
},
{
"text": " leading",
"ids": [
256,
6388
],
"tokens": [
"ĠĠ",
"Ġleading"
]
},
{
"text": "a b\tc\nd",
"ids": [
64,
256,
293,
1444,
198,
67
],
"tokens": [
"a",
"ĠĠ",
"Ġb",
"ĉc",
"Ċ",
"d"
]
},
{
"text": "tab\there",
"ids": [
6192,
197,
6739
],
"tokens": [
"tab",
"ĉ",
"here"
]
},
{
"text": "newline\n\nhere",
"ids": [
89202,
271,
6739
],
"tokens": [
"newline",
"ĊĊ",
"here"
]
},
{
"text": " mixed spaces mid ",
"ids": [
9519,
262,
12621,
220,
5099,
220
],
"tokens": [
"Ġmixed",
"ĠĠĠ",
"Ġspaces",
"Ġ",
"Ġmid",
"Ġ"
]
},
{
"text": "你好,世界!",
"ids": [
108386,
3837,
99489,
6313
],
"tokens": [
"ä½łå¥½",
"ï¼Į",
"ä¸ĸçķĮ",
"ï¼ģ"
]
},
{
"text": "a,b;c:d",
"ids": [
64,
8402,
78632,
40422
],
"tokens": [
"a",
",b",
";c",
":d"
]
},
{
"text": "!!!???",
"ids": [
12069,
33015
],
"tokens": [
"!!!",
"???"
]
},
{
"text": "emoji 😀🎉 test",
"ids": [
37523,
90316,
144841,
1273
],
"tokens": [
"emoji",
"ĠðŁĺĢ",
"ðŁİī",
"Ġtest"
]
},
{
"text": "括号(全角)与 [半角]",
"ids": [
100139,
17992,
9909,
35987,
63836,
7552,
57218,
508,
99369,
63836,
60
],
"tokens": [
"æĭ¬",
"åı·",
"ï¼Ī",
"åħ¨",
"è§Ĵ",
"ï¼ī",
"ä¸İ",
"Ġ[",
"åįĬ",
"è§Ĵ",
"]"
]
},
{
"text": "<|im_start|>system\nRepresent the user's input.<|im_end|>\n<|im_start|>user\n你好<|im_end|>\n<|im_start|>assistant\n",
"ids": [
151644,
8948,
198,
65743,
279,
1196,
594,
1946,
13,
151645,
198,
151644,
872,
198,
108386,
151645,
198,
151644,
77091,
198
],
"tokens": [
"<|im_start|>",
"system",
"Ċ",
"Represent",
"Ġthe",
"Ġuser",
"'s",
"Ġinput",
".",
"<|im_end|>",
"Ċ",
"<|im_start|>",
"user",
"Ċ",
"ä½łå¥½",
"<|im_end|>",
"Ċ",
"<|im_start|>",
"assistant",
"Ċ"
]
},
{
"text": "<|endoftext|>",
"ids": [
151643
],
"tokens": [
"<|endoftext|>"
]
},
{
"text": "记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆记忆",
"ids": [
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376,
101376
],
"tokens": [
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ",
"è®°å¿Ĩ"
]
},
{
"text": "",
"ids": [],
"tokens": []
},
{
"text": "a",
"ids": [
64
],
"tokens": [
"a"
]
},
{
"text": "中",
"ids": [
15946
],
"tokens": [
"ä¸Ń"
]
},
{
"text": "1",
"ids": [
16
],
"tokens": [
"1"
]
},
{
"text": " ",
"ids": [
220
],
"tokens": [
"Ġ"
]
}
]
}