在深度学习模型中,有时需要避免输入的是一段话而不是一个句子。我们需要把一段话分割成多个短句子,比如:
目前诊断:1、肺癌pT1cN0M0R0切除,IA期,EGFR(+)2、化疗后骨髓抑制3、高血压病。长期住院原因分析及针对性诊疗计划:患者肺癌复发,目前行同步放化疗,放疗时间较长,需要长期住院治疗。
将句号作为分割点,将这句话分割成两句话,每句话作为模型的输入,这样做的原因是:防止输入句子太长,模型在处理时将关键信息裁剪,此时就抽取不出想要的信息了。
代码实现如下:
cur_seedtext = '目前诊断:1、肺癌pT1cN0M0R0切除,IA期,EGFR(+)2、化疗后骨髓抑制3、高血压病。长期住院原因分析及针对性诊疗计划:患者肺癌复发,目前行同步放化疗,放疗时间较长,需要长期住院治疗。'
cur_seedtext = cur_seedtext.replace('。','@@@')
cur_seedtext = '。\n'.join([x.strip() for x in cur_seedtext.split('@@@')])
print(cur_seedtext)
在医疗病例单中使用命名实体识别技术提取医生对患者的诊断时,利用此方法就可以用模型单独对句子进行处理,这样的效果似乎更好。
以下是上面的代码对段落的处理结果
目前诊断:1、肺癌pT1cN0M0R0切除,IA期,EGFR(+)2、化疗后骨髓抑制3、高血压病。
长期住院原因分析及针对性诊疗计划:患者肺癌复发,目前行同步放化疗,放疗时间较长,需要长期住院治疗。
mediecalNER模型的识别结果为
[
{
"start": 7,
"stop": 20,
"word": "肺癌pT1cN0M0R0切除",
"type": "BODY"
},
{
"start": 22,
"stop": 24,
"word": "IA期",
"type": "BODY"
},
{
"start": 26,
"stop": 32,
"word": "EGFR(+)",
"type": "BODY"
},
{
"start": 44,
"stop": 47,
"word": "高血压病",
"type": "BODY"
}
]
-------------------------------------
[]
-------------------------------------
显然模型识别出了第一句话中提出的几个诊断病情,但是精度没那么高。。。