File size: 2,106 Bytes
751936e
a1b0cd0
 
f4973d4
 
 
751936e
 
 
 
 
 
 
 
 
 
 
 
 
 
d10ecd7
751936e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
814ee6b
 
 
 
 
 
 
 
751936e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2bd606a
751936e
 
 
 
 
 
 
 
 
2bd606a
 
751936e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d10ecd7
 
814ee6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
751936e
 
 
 
814ee6b
 
9495a4f
 
814ee6b
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

https://arxiv.org/abs/2308.16692 SpeechTokenizer

对于OpenAI的模型而言,英文的Token效率是中文的8-12倍,
之前三百字中文以上时Turbo 3.5 16k就会出现逻辑颠倒问题,提示词换成英文后该问题没有出现过。

## 词典构建

bert词典
gpt词典
gpt-neox词典

## encode


## decode

bert词典有个特殊字符 #

gpt-neox词典呢?
  - _开头表示空格或句首


## 关于分词粒度


## ss



bert-chinese  vocab_size: 21128
bert-en
clue
glm
chatglm
bloom


## 最小词典

mobilenet


## ss


## bert

```
[PAD]
...
[unused99]
[UNK]
[CLS]
[SEP]
[MASK]
<S>
<T>
!
...

big
##ut
ftp
carol
##vi
```


## @@

https://github.com/pytorch/fairseq/blob/master/tests/test_noising.py#L37

```
"he@@", "llo", "n@@", "ew", "y@@", "or@@", "k"
```

跟BERT类似,只不过BERT是词后缀,这里是词前缀。

这种应该是 https://github.com/rsennrich/subword-nmt


## GPT2

词典见:https://huggingface.co/gpt2/raw/main/vocab.json


```
['What', "'s", 'Ġup', 'Ġwith', 'Ġthe', 'Ġtoken', 'izer', '?']
```
跟BERT不同,BERT用特殊符号表示 “连接”,GPT2用特殊符号表示 “空格”。

详见 gpt2/README.md

- 功能符号: `<|endoftext|>` 表示换行。tab? 空格?
- 很多数字独立编码,几乎上千个。

- 类似的还有:moss


### Ġ是什么

It's a feature of byte-level BPE(an encoded space character). 
Ġ 表示空格,有的版本用Ä代替Ġ。


```sh
What's up with the tokenizer?
# BPE后
['What', "'s", 'Ġup', 'Ġwith', 'Ġthe', 'Ġtoken', 'izer', '?']
# 经过vocab.json编码后
[ 2061,   338,  510,    351,    262,    11241,    7509,   30]
# 经过dict.txt编码后(fairseq特有)
[           其他数字                                         ]
```
<>
疑问:up会加Ġ,为什么what不加Ġ,因为有个pre

- https://github.com/pytorch/fairseq/issues/1716
- https://github.com/huggingface/transformers/issues/1083


## 空格、tab、换行 





## reversible and lossless

It's reversible and lossless, so you can convert tokens back into the original text


## diff