import json


def load_data(filename):
    """加载数据
    单条格式：[text, (start, end, label), (start, end, label), ...]，
              意味着text[start:end + 1]是类型为label的实体。
    """
    categories=set() #所有的实体类别集合
    D = [] #所有的数据
    with open(filename, encoding='utf-8') as f:
        for l in f:
            l = json.loads(l) #str -> dic
            d = [l['text']]
            for k, v in l['label'].items(): #把字段转化为 [(k,v)]的形式  k:实体类型
                categories.add(k) #集合去重
                for spans in v.values(): #{'CSOL':[[4,7],[12,15]]}
                    for start, end in spans:
                        d.append((start, end, k)) #（实体开始位置，实体结束位置，实体类型）
            D.append(d)
    return D,categories