阿里医疗NLP实践与思考

分享嘉宾:陈漠沙阿里云高级算法专家

编辑整理:医院

出品平台:DataFunTalk

导读:NLP技术在智慧医疗领域有着越来越多的应用场景,本文将从数据、算法、知识3个层面带来阿里在医疗NLP领域的工作、遇到的问题以及相应的思考。主要内容包括:①阿里医疗业务介绍;②NLP赋能医疗行业;③医疗+NLP(医疗NLP本质是什么);④中文医疗信息处理标准数据集。

0阿里医疗业务介绍

医疗AI(即深度学习技术)在医疗领域的应用场景包括:

医学影像(国内较为成功的医疗AI公司基本都是医学影像方向)

文本信息抽取和疾病预测(我们今天分享的重点)

病患语音识别和机器翻译(医院医生用话筒讲话,然后ASR语音识别转录成电子病历的内容,通常用到RNN或Seq2Seq的技术实现)

体征监测和疾病风险评估(应用场景包括慢病评估,健康管理等)

新药研发(新冠疫情之后逐渐兴起,目前该领域较为火爆)

手术机器人(交叉学科,一般会涉及到增强学习技术)

阿里巴巴在医疗健康赛道有较多布局:

阿里云:面向B端,主要医院、卫健委等智慧医疗的应用场景。

阿里健康:可分为两部分,包括电商售药和互联网在线问诊,其中线上问诊涉及到的自动问答技术与NLP强相关。

蚂蚁保险:在智能理赔过程中,患者上传病历或收据,经OCR识别、文本信息抽取后被用于服务核保核赔预测模型。

夸克浏览器:面向医疗的垂直搜索。

达摩院:两个团队在做医疗AI的业务。①NLP团队:主要负责NLP原子技术能力,服务于阿里集团内的一些业务方、以及阿里云的生态合作伙伴。②华先胜博士所负责的城市大脑团队:主要负责医学影像,根据影像图片做辅助诊疗。

天池:天池大赛的定位是针对人工智能技术尚未成熟的行业,先通过来源于真实场景的数据集把问题提出来,然后征募选手来做比赛方案,相当于做一个先期的技术验证。天池开放了很多行业稀缺的数据集,尤其是医疗行业。

讲者今天的分享主要介绍了在达摩院和在阿里云天池团队所做的医疗NLP工作。

02NLP赋能医疗行业

NLP处理医疗行业数据时,首先要分析数据的特点,其次选择适合这批数据的模型,或者做一些模型改良。

医疗数据包括:

电子病历数据:是讲者处理较多的数据,特点是数据的非标准化和多样性。

药品说明书,检查报告单和体检报告:这3类数据比较规范。

在线问诊,论坛问答:数据质量较差,其特点是口语多,噪音大。患者就诊过程中涉及较多不相关信息,医生的工作主要负责识别、总结有效信息,然后我们再应用NLP去做后续的分析处理。

医学教科书、科研文献:数据比较规范。我们应用NLP技术把文本类内容解析出来。

电子病历数据的主要应用场景是电子病历质检。电子病历质检指的是根据各个省市卫建委发布的电子病历书写规范对医生书写的电子病历进行质检,其中浙江省的电子病历书写规范比较领先,大概有多项检测点。医院设置专门的质检科,由质检科医生将每份病历按照质检点进行人工检查,因此存在效率低、查全率低的痛点。阿里云智能电子医院质检科解决这个痛点的产品。举个例子,在上图这份病历中我们检测到两个不合规的点。

一致性矛盾:患者一开始疼痛的部位是“右”上腹,后来经过治疗“左”上腹疼痛缓解。我们的产品准确的捕捉到患者初始症状出现的部位以及治疗改善的部位不一致。

诊断依据不充分:住院病历中的初步诊断写的是胆囊结石,但是下一步诊疗计划里却出现了腹部B超,可见该患者尚不能明确诊断为胆囊结石。如果临床高度怀疑胆囊结石,初步诊断可写“腹痛待查,胆囊结石?”,而不能只写“胆囊结石”。我们的产品准确的捕捉了诊断依据的不充分。

电子病历是一种半结构化的文本,章节标题可以认为是结构化的信息,而医生书写的文字是无结构化的信息。针对第一个检测点,我们需要运用NLP对这种半结构化的信息进行文本结构化,同时对术语进行归一化。而针对第二个检测点,我们需要构建医学知识图谱。

阿里云智能电子病历质检的核心模块儿是医疗实体、属性的联合抽取,医学文本的实体识别有如下3种特点:

实体属性:如当前疾病是现病史(现在发生的)还是既往史(过去就有的),症状是阳性(肯定)还是阴性(否定)。传统的方法是使用关系抽取模型,但我们的产品为了追求效率没有用关系抽取的方式,而是用了下图中的模型。

嵌套:如图中的症状中就包含了身体部位,医学文本中有大量嵌套类型的实体存在。

非连续:在药品说明书中大量存在。

攻坚上述产品核心内容过程中,我们的工作成果有以下4个:

①基于实体属性构建模型:我们选择了一个非常朴素自然的idea,即span-based模型(邱锡鹏老师团队最近推出的unifiedmodel可以把所有的情况cover掉,感兴趣的可以去了解一下)。该模型采用BERT作为语义建模模型,取一个start位置,再取一个end位置去形成一个span,如图中W-W2或W3-W6就是个span。我们通过枚举所有的span去学习span的表示,模型的特点是可以天然的解决嵌套实体类型,接下来再对span表示去做分类,采用MLP或其他的分类方法进行实体类别判断。属性判断是在此基础上再多一个分支判断,这样一个非常简单的联合学习的框架就是span-basedbackbone模型,其最下面一层是embedding层(线上的话我们会应用预训练模型),上面一层是文本表示层,再上面一层是分类层。这里先抛出了一个问题,枚举span会导致模型的复杂度为O(N^2),与传统模型相比其复杂度较高,那么如果想将其用于线上的话,应该怎么处理?

讲者的答案是要对这个模型做改良(年讲者将其工作成果发表在AAAI上)。如上图所示,改良span-based模型的motivation是增强span的表示。这里主要借鉴了MRC的思路,即把start及end形成一个span的概率设计进来,我们通过计算“start的概率”ⅹ“end的概率”ⅹ“span表示的概率”进行最终的判断。这个模型的benefit是在推理阶段进行加速,通过为“start的概率”和“end的概率”设定阈值(高于阈值将被预测,而低于阈值会被剥离掉),将模型复杂度由O(n^2)降为O(mⅹN)。m表示句子里的实体个数,N表示句子token的长度,这样在线上应用的话,效率还是非常高的。图中的表格是AAAI20的实验结果,之后我们又不断探索其他模型,在某些数据集上结果已经超过了这个实验结果。

②基于嵌套实体构建模型:我们针对医学嵌套实体的特点开展了很多研究的工作,上图是我们发表在AAAI的一个工作。我们将嵌套NER识别问题看作是经典的句法成分分析(constituentparsing)问题,根据嵌套实体的特点将其视为部分观察(partialobserved)到的树,进行选区解析,并使用部分观察到的TreeCRF对其进行建模。具体来说,将所有标记的实体span视为选区树中的观察节点(黑点),将其他跨度视为潜在节点(白点)。该模型其中的一个优点是,实现了一种统一的方式来联合建模观察到的和潜在的节点。而另外一个优点是,在进行选区分析时,通过Batchfied将模型复杂度从O(n^3)降为O(nⅹlogn)。

③医学术语归一化:是医疗行业领域里面非常重要、非常核心的任务,这是因为同一种诊断、手术、药品、检查、化验、症状可能有多达几十到上百种不同的写法。比如,诊断“上感”,也可以称为“上呼吸道感染”,ICD编码是J06.。诊断“胆囊结石”=”结石性胆囊炎”=“胆囊结石伴胆囊炎”,ICD编码是K80.。药品“氟哌酸”=“诺氟沙星”,国药准字H。能把这个问题解决好,是一个非常有挑战的工作。

为了实现医学术语归一化,我们分两步进行。如上图所示,第一步Retrieval,从词典里面通过BM25算法筛选候选词;第二步ReRank,通过预训练语言模型(PTLM,指的是Pre-trainedLanguageModel)如Bert进行排序,其中mention就是要归一化的原词,而concept则是我们这边筛出来一些候选词,然后进行打分,分数比较高的将作为备选方案。

医学术语归一化的技术在我们的业务场景里面用的还是比较多的。第一种是跟大家生活息息相关的医保或商保的核算,其主要根据ICD编码进行DRGs付费及核算。第二种是数据治理,医院间的数据互联互通。第三种是医学科研统计,如医生要筛选“2型糖尿病”的患者来做队列,“II型糖尿病”也要被识别成同一个术语。

④合理用药判断:是PTLM应用的另一个场景。例如尽管开塞露的药品说明书的适应症只有便秘,但医生给诊断是肠梗阻的患者使用开塞露也是合理的。这是因为虽然医生的诊断与药品说明书字面上不match,但肠梗阻实际上会导致便秘,所以经过推理医生用药是合理的,而这个推理过程用到的就是医学知识。另外合理用药还涉及到用法及剂量的合理,如诊断为“成人不能进食”的患者需要鼻饲给药,儿童用药需要根据体重计算剂量,还有药物需要首剂负荷用药。因此我们现在的工作是将说明书等原始文本,用文本生成的方法转化成逻辑表达式(logicexpression),如决策树等。因为实验结果目前在投稿阶段,所以本文就先不展示模型了。此外讲者提出一个问题,医学知识图谱是医学知识最基础的一种知识表示方式,而一个全面和专业的医学知识库需要融合多种知识表示方式,那么如何用一个新的结构来表示医学知识库呢?

03医疗+NLP(医疗NLP本质是什么)

医疗NLP的本质是医疗,如果把NLP比做锤子的话,那么医疗领域相关问题就是钉子,我们要做的就是拿着锤子找钉子。我们前期做的一些尝试工作就靠近医学本质(偏临床一些),包括医学临床试验结果预测模型的建立以及融入知识的医学预训练语言模型的建立。

医学临床试验结果预测模型的建立:受疫情的启发,我们做了一个比较有意义的工作,即研发医学临床试验结果预测模型。临床试验是循证医学的一个重要组成部分,主要目的是验证某种干预手段(手术、化疗、放疗或药物)是否有效。临床试验首先需要召集很多志愿者或患者,然后做对照试验,最后统计得出结果,整个试验过程比较漫长。设计有缺陷或者难以成功的临床试验占用了宝贵的病人资源及珍贵的时间,可能会使亟待实施的临床试验因招募不到足够的患者或时间的紧缺而被迫终止。所以,研究者如果在临床试验方案设计阶段就就预测出临床试验的结果,并优先进行成功概率较高的临床试验是非常有意义的工作。举个例子,美国吉利德科学公司研发的针对MERS和SARS的药品瑞德西韦曾被科学家们认为是对抗新冠病毒最有希望的药物,这是因为MERS、SARS和新冠病毒同属冠状病毒科且在埃博拉(另一种冠状病毒)感染患者的紧急治疗中也积累了有效的临床结果,这为新冠疫情筛选新药提供了方向。科学家的这种思考是根据既往的研究经验和医学知识得出的,这使得在临床试验开展前评估临床试验所研究问题的可行性成为可能。

NLP可以基于科学家们的研究经验以及现有的医学知识来辅助地预测临床试验的结果,从而大大提高临床试验实施的效率,由此我们抽象出一个问题,即BPICO。B是Background(研究背景,如研究经验、医学知识),P是Population(或者Patient,代表试验组人群,如新冠患者),I是Intervention(干预手段,如瑞德西韦),C是Comparison(对照组,如安慰剂),O是Out


转载请注明:http://www.dannanyanjsx.com/jyys/10057.html


当前时间: