目录
前言
为了规范多个模型的输出样式,在接入前后端系统后更方便表格化处理,我们需要定义一种标准的输出形式。在初期的数据处理和表格化展示过程中遇到了一些阻力,但通过使用组员by设计的新的BRAT的conf文件表示形式,该文件引入了event链接entity的方式来处理outcome和对应数值的关系,我重新标注了部分数据集,使输出的ann文件内更有逻辑。在此基础上,我区分了固定数据和可变数据,在此基础上设定了组内多个模型通用的json串格式作为模型的输出格式和前后端传送的格式,使得最终的json格式可以直接生成期望的数据表格。
固定数据与可变数据
固定数据: 固定数据的关系更独立,例如total-participants
一篇文章只有一个,且不与任何数据有关系,所以单独一列就可以表示。固定数据通常包括总参与者数、干预组参与者数、对照组参与者数等。这些数据在每篇文章中通常只出现一次,因此可以作为单独的字段来处理。
可变数据: 可变数据通常是结果(outcome)和它对应的一些数值型参数,因为文章可能存在多组outcome-参数对,所以要采用可变数组来存储数据。可变数据包括不同的结果测量及其相关参数(如iv-bin-abs
、cv-bin-abs
等),这些数据在一篇文章中可能会多次出现,因此需要灵活的结构来存储。
JSON格式
固定数据与可变数据的JSON格式: 以下是一个包含固定数据和可变数据的JSON示例:
{
"fixed_data": {
"total-participants": "60",
"intervention-participants": "30",
"control-participants": "30",
"age": "45-65",
"eligibility": "patients with hypertension",
"condition": "Hypertension",
"location": "USA",
"ethnicity": "diverse",
"intervention": "lifestyle modification",
"control": "usual care",
"outcome-measure": "blood pressure",
"conclusion": "Significant improvement in blood pressure"
},
"variable_data": [
{
"outcome": "blood pressure",
"iv-bin-abs": "120/80",
"cv-bin-abs": "130/85",
"iv-bin-percent": "",
"cv-bin-percent": "",
"iv-cont-mean": "115/75",
"cv-cont-mean": "125/80",
"iv-cont-median": "",
"cv-cont-median": "",
"iv-cont-sd": "",
"cv-cont-sd": ""
},
{
"outcome": "heart rate",
"iv-bin-abs": "70",
"cv-bin-abs": "75",
"iv-bin-percent": "",
"cv-bin-percent": "",
"iv-cont-mean": "68",
"cv-cont-mean": "72",
"iv-cont-median": "",
"cv-cont-median": "",
"iv-cont-sd": "",
"cv-cont-sd": ""
}
]
}
此JSON结构清晰地将固定数据和可变数据分开,使得每个部分的数据都容易理解和处理。
对应的,我们理想的表格化生成是下面的样式(图片数据与上文无关,是前端设计):
下面是具体的步骤,从人工标注的.ann文件处理变为JSON格式,再处理变成表格:
JSON化处理
改变conf之后使输出的ann文件内更有逻辑,在此基础上可以用py脚本处理ann文件,生成json格式。在脚本中进行的处理还有:如果固定数据中出现多个相同词条,如outcome-measure可能有多种,那么在生成的json中,在一个字符串内用逗号隔开,这样的处理可以使输出模式更统一。
以下是处理输入摘要和对应ann文件,生成训练所用JSON格式的Python脚本:
i