tkitAutoTokenizerPosition.bio 源代码

"""
构建BIO结构数据集
"""


[文档]class autoBIO: """[summary] 用于构建bio结构数据集 """ def __init__(self) -> None: pass
[文档] def bulid(self,it): """[summary] it={'text': '急性胰腺炎@有研究显示,进行早期 ERCP (24 小时内)可以降低梗阻性胆总管结石患者的并发症发生率和死亡率; 但是,对于无胆总管梗阻的胆汁性急性胰腺炎患者,不需要进行早期 ERCP。', 'wordList': ['急', '性', '胰', '腺', '炎', '@', '有', '研', '究', '显', '示', ',', '进', '行', '早', '期', '[PAD]', 'er', '##cp', '[PAD]', '(', '24', '[PAD]', '小', '时', '内', ')', '可', '以', '降', '低', '梗', '阻', '性', '胆', '总', '管', '结', '石', '患', '者', '的', '并', '发', '症', '发', '生', '率', '和', '死', '亡', '率', ';', '[PAD]', '但', '是', ',', '对', '于', '无', '胆', '总', '管', '梗', '阻', '的', '胆', '汁', '性', '急', '性', '胰', '腺', '炎', '患', '者', ',', '不', '需', '要', '进', '行', '早', '期', '[PAD]', 'er', '##cp', '。'], 'tag': [{'start': 0, 'end': 5, 'type': '疾病'}, {'start': 69, 'end': 74, 'type': '疾病'}, {'start': 17, 'end': 19, 'type': '检查'}, {'start': 85, 'end': 87, 'type': '检查'}, 返回格式如下 {'text': '急性胰腺炎@有研究显示,进行早期 ERCP (24 小时内)可以降低梗阻性胆总管结石患者的并发症发生率和死亡率; 但是,对于无胆总管梗阻的胆汁性急性胰腺炎患者,不需要进行早期 ERCP。', 'wordList': ['急', '性', '胰', '腺', '炎', '@', '有', '研', '究', '显', '示', ',', '进', '行', '早', '期', '[PAD]', 'er', '##cp', '[PAD]', '(', '24', '[PAD]', '小', '时', '内', ')', '可', '以', '降', '低', '梗', '阻', '性', '胆', '总', '管', '结', '石', '患', '者', '的', '并', '发', '症', '发', '生', '率', '和', '死', '亡', '率', ';', '[PAD]', '但', '是', ',', '对', '于', '无', '胆', '总', '管', '梗', '阻', '的', '胆', '汁', '性', '急', '性', '胰', '腺', '炎', '患', '者', ',', '不', '需', '要', '进', '行', '早', '期', '[PAD]', 'er', '##cp', '。'], 'tag': [{'start': 0, 'end': 5, 'type': '疾病'}, {'start': 69, 'end': 74, 'type': '疾病'}, {'start': 17, 'end': 19, 'type': '检查'}, {'start': 85, 'end': 87, 'type': '检查'}], 'data': {'text': '急性胰腺炎@有研究显示,进行早期 ERCP (24 小时内)可以降低梗阻性胆总管结石患者的并发症发生率和死亡率; 但是,对于无胆总管梗阻的胆汁性急性胰腺炎患者,不需要进行早期 ERCP。', 'spo_list': [{'Combined': False, 'predicate': '影像学检查', 'subject': '急性胰腺炎', 'subject_type': '疾病', 'object': {'@value': 'ERCP'}, 'object_type': {'@value': '检查'}}]}, 'tagList': ['B-疾病', 'M-疾病', 'M-疾病', 'M-疾病', 'E-疾病', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-检查', 'E-检查', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-疾病', 'M-疾病', 'M-疾病', 'M-疾病', 'E-疾病', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'B-检查', 'E-检查', 'O']} """ # print(it) tags=["O"]*len(it["wordList"]) for w,t in zip(it["wordList"],tags): # print(w,t) for tse in it['tag']: # print(tse) for rid in range(tse['start'],tse['end']): if len(it["wordList"])>tse['start'] and len(it["wordList"])>tse['end']: if rid==tse['start']: tags[rid]="B-"+tse['type'] elif rid ==tse['end']-1: try: tags[rid]="E-"+tse['type'] except: # print(len(tags),tse['start'],tse['end']) pass else: tags[rid]="M-"+tse['type'] # for w,tag in zip(it["wordList"],tags): # print(w,tag) it['tagList']=tags return it