文件标注工作基于brat软件,http://brat.nlplab.org/。其中.txt文件为原始文档,.ann文件为标注信息,标注实体以T开头,后接实体序号,实体类别,起始位置和实体对应的文档中的词。如果需要在brat软件中查看标注结果,需要添加.conf文件。 第一赛季大赛主办方提供与糖尿病相关的学术论文以及糖尿病临床指南,要求选手在学术论文和临床指南的基础上,做实体的标注。实体类别共十五类。
完整代码获取方式:
关注微信公众号 datayx 然后回复 关系抽取 即可获取。
类别名称和定义 疾病相关: 1、疾病名称 (Disease),如I型糖尿病。 2、病因(Reason),疾病的成因、危险因素及机制。比如“糖尿病是由于胰岛素抵抗导致”,胰岛素抵抗是属于病因。 3、临床表现 (Symptom),包括症状、体征,病人直接表现出来的和需要医生进行查体得出来的判断。如"头晕" "便血" 等。 4、检查方法(Test),包括实验室检查方法,影像学检查方法,辅助试验,对于疾病有诊断及鉴别意义的项目等,如甘油三酯。 5、检查指标值(Test_Value),指标的具体数值,阴性阳性,有无,增减,高低等,如”>11.3 mmol/L”。 治疗相关: 6、药品名称(Drug),包括常规用药及化疗用药,比如胰岛素。 7、用药频率(Frequency),包括用药的频率和症状的频率,比如一天两次。 8、用药剂量(Amount),比如500mg/d。 9、用药方法(Method):比如早晚,餐前餐后,口服,静脉注射,吸入等。 10、非药治疗(Treatment),在医院环境下进行的非药物性治疗,包括放疗,中医治疗方法等,比如推拿、按摩、针灸、理疗,不包括饮食、运动、营养等。 11、手术(Operation),包括手术名称,如代谢手术等。 12、不良反应(SideEff),用药后的不良反应。 常规实体: 13、部位(Anatomy),包括解剖部位和生物组织,比如人体各个部位和器官,胰岛细胞。 14、程度(level),包括病情严重程度,治疗后缓解程度等。 15、持续时间(Duration),包括症状持续时间,用药持续时间,如“头晕一周”的“一周”。 第二赛季大赛主办方瑞金提供与糖尿病相关的学术论文以及糖尿病临床指南。选手从中抽取实体之间的关系。实体之间关系共十类。
模型
构建训练样本
之前没有做 Relation Extraction 的经验,最直觉的想法是当成一个二分类问题来做。先生成 Candidate Entity Pairs,做一些简单的过滤,然后利用训练集中的 Relation 数据给 Candidate Entity Pairs 打 0 或者 1 的标签。
用中文句号 (。) 做句子切分,选取 size=2
, step=1
的滑动窗口来生成句子。即每个句子包含原始文章中的2句话。接着把每个句子中出现的 entities 做个排列组合,把不存在于比赛要求的 10 个 relation type 中的组合过滤掉,作为 candidate entity pairs。
向量化
对每个样本进行向量化,提取 5 个向量作为模型的输入。
char id sequence
为转化为字符id后的句子文本序列entity labels vector
为代表 entity 类别的向量from entity mask
用 [1] 标记出 from_entity 的位置,剩余位置补 [0]to entity mask
用 [1] 标记出 to_entity 的位置,剩余位置补 [0]entity distance
为一个带符号的实数,用来表示两个 entity 的距离
神经网络结构
效果评估
复赛采用 F1-Score 来衡量模型效果。最终这个 baseline model 线上的成绩为 0.733