# meaning dataset

meaning数据集是一个模仿自然语言，以及抽象表达的数据集。

## 概念

1. token表示最终体现的基本数据表达，类似单词。vocab_size表示代表token的数量。
2. meaning表示一种语义（符号），所有的meaning都由一个编号表达，编号越大表示语义越复杂
3. 所有的meaning都可以由更低标号表达
4. 从0到(vocab_size-1)的编号表示基本meaning，是不能被拆解的，也就是token
5. meaning通过一层层的向低编号的meaning进行组合替换，最终形成一个最底层是token的树形数据
6. level表示当前token相对于root meaning的距离
7. rank
8. rank_idx表示当前token在不同层的排序编号，每4位表示在一层里面的编号，低4位表示最低层级的rank_idx，高位无用的位用1填充
9. rank_all表示当前token所在的不同层的总的分支个数，每4位表示在一层里面的个数，低4位表示最低层级的rank_all，高位无用的位用1填充
10. tree用于存储每个meaning的拆解的数据，使用字典表达一个树形结构
11. get_seq_mask返回一个sequence每个token在对应level是不是对应的index,level=0:最底层，index=-1:最后一个，index=0:第一个
12. meaning_height 当前meaning的总高度
13. meaning_weight 当前meaning的总宽度
14. val_mask_level val_mask_idx: 表示用于训练的token的mask,val_mask_level=[0, 1, 2] val_mask_idx=[0, 0, -1]表示只有是第0层第0个,而且是第1层第0个,第2层最后一个的token,才参与训练
15. with_tree 表示每个meaning的拆分都以当前meaning编号结束，sequence会插入很多枝节点，而不仅仅是叶节点
16. ms_level 大于255表示这个token是tree（level 0用255表示），大于511表示这个token是stride（level 0用511表示），生成val mask的时候是False
17. ms_map 表示每个meaning拆解的sub meaning
18. index must < 15，level must < 8

## code

```
vocab = config.model_config.vocab_size
start 数据集的样本开始meaning
size 数据集的样本个数
```

```
vocab_size = 256 meaning = 115200

                         115200
                /          |           \
           10240          1100           12322
        /    |   \        /  \        /     |   \
    512     32   1201   245  233   3214    532    324
    / \          /   \             /  \     |     / \
  123 42      320     500        1231  23  324   93  176
              / \     / \        / \       / \
            176 11  255 129    129  99   211 111

sequence = 123  42  32 176  11  255 129 245 233 129  99  23 211 111  93  176
level    =  3    3   2  4    4   4   4   2   2   4    4   3  4   4    3    3

rank_idx =  0    1   1  0    1  16  17  16  17   0    1   2  0   1   32   33
 idx at0 =  0    1   1  0    1   0   1   0   1   0    1   2  0   1    0    1
 idx at1 =  0    0   0  0    0   1   1   1   1   0    0   0  0   0    2    2

rank_all =

```
