# 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的总宽度


```
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
idx at 0 =  0    1   1  0    1  0   1   0   1   0    1   2  0   1    0  1
idx at 1 =  0    0   0  0    0  1   1   1   1   0    0   0  0   0    2  2
idx         0    1   1  0    1 16  17  16  17   0    1   2  0   1   32 33


```
