结合 Milvus 的医疗问答辅助标记平台

2021-07-23 11:23:08 浏览数 (1)

✏️ 作者:DreamerQ,妙医佳健康科技集团

北京妙医佳健康科技集团有限公司是一家以健康数据追踪、人工智能健康干预能力为核心的健康科技公司。妙健康(more)是公司旗下的数字化精准健康管理平台,致力于为用户提供综合性健康服务一站式解决方案。因业务需求,公司需要搭建一个基于多重自然语言处理技术的问答辅助标记平台。

前期准备

1. 通过关键词寻找相关产品应用场景

通过网络流行的医学关键词发掘企业产品的应用场景——例如,通过“新冠肺炎”这一关键词,挖掘与其相关的药品说明书、医院处方、体检报告等应用场景。

2. 基于上下文窗口提取初始化特征

上下文窗口是指根据目标实体(词语)预测上下文语意相关实体的范围。首先,我们对文本进行大致分类,然后基于上下文窗口,对医学相关场景的文本构建初始化特征向量。然后,对同一个上下文窗口内的文本进一步细分,并利用开源的 BERT 模型对细分文本继续进行多分类序列训练,获取窗口序列的分类标识特征向量。因为医学实体来源于广泛的医学场景,我们为同类医学文本特征标记相同的医学实体。通过这种方法可以处理不同医学场景的数据,辅助发现同类医学实体,有利于对齐不同场景的医学实体数据。

构建上下文窗口的具体实现方法为:

  • 利用领域词典将文本加载到 Jieba 分词器中
  • 针对上 n 位词和下 n 位词构建一个滑动词窗口

具体实现代码如下:

实现步骤

搭建问答辅助标记平台中的实现步骤如下图所示:

  1. 利用上下文窗口,为医学领域内文本构建序列信息(特征向量)
  2. 以中心词作为各序列信息的标签
  3. 搭建基于医学领域实体的预训练语言模型 Medical Rbtl3
  4. 使用文本序列信息训练模型
  5. 将序列信息导入 Milvus 以支持后续搜索召回
  6. 通过人工验证重新验证类似实体排名

基于上下文表示消除医学实体的歧义

根据预先设定好的标准化实体映射表,我们可以将新的实体与实体映射表中的标准实体对齐,找到其对应的标准实体的集合。

首先我们需要利用语义表示模型进行句向量的训练。为了提高模型的训练速度,我们选择了由哈工大开发的 RoBERTa (a Robustly Optimized BERT Pretraining Approach) 模型。该模型进一步优化了 BERT 通用语义表示模型,提出了动态遮掩(Dynamic Masking)方法,并去除了预测下一个句子(Next Sentence Prediction)方法。同时,RoBERTa 模型采用了更大的样本数量,使用更多数据进行更长时间的训练,因而在多个任务中有着不错的表现。

在 RoBERTa 模型的基础上,我们进一步修改并提出了 RBRL3 模型。RBRL3 模型可以在仅损失少量效果的情况下大幅减少参数量,最终提升训练速度。为了保证模型效果,我们采用了统一上下 32 词汇窗口以提取原始特征向量。

具体实现代码如下:

RBRL3 模型经训练后,可以更好地在垂直领域内召回相似句子,作为医学实体相似度的依据。最终我们将医学样本数据划分为 2023 类,每类包含 20 条以上的向量样本,向量对应的 ID 映射到标准实体之上。新插入的向量具备相应的实体 ID 。最后对根据 ID 返回的原始映射进行相关的标注消歧工作。

下图为实际模型分类的结果:

Medical Rbtl3 模型是我们基于领域垂直词典重新设计的开源医疗版 Wobert 模型,其架构如上图所示。Wobert 模型是在哈工大的开源模型 RoBERT 基础上继预训练开发而成的,预训练任务为遮掩语言模型(Masked Language Model)。在初始化阶段,每个词都被 BERT 自带的分词器(tokenizer)切分为字,然后以字向量的平均作为词向量的初始化。

结合 Milvus 实现向量搜索召回

在使用 Medical Rbtl3 模型将文本转化为向量后,我们将向量保存到向量数据库 Milvus 中。Milvus 是一款开源的向量数据库,支持针对多种 AI 模型转化而来的非结构化数据向量提供搜索分析服务。Milvus 可广泛应用于计算机视觉、自然语言处理、语音识别、推荐系统以及新药发现。

具体实现方式为:

  1. 通过深度学习模型将非结构化数据转化为特征向量,并导入 Milvus。
  2. 对特征向量进行存储并建立索引。
  3. 接收到用户的向量搜索请求后,返回与输入向量相似的结果。

通常在压力测试中,即便是基于三层的 BERT 网络的向量数据搜索也是非常耗费系统资源的。而在压力测试中有着优异表现的 IVF_SQ8 向量索引成为了我们最终的选择。我们在两个服务器中共启动了 16 个 BERT 节点,模型的预测时间约为 32 ms,且能够处理约 60 个并发请求。

结果展示

最后我们对数据案例以及模型的训练结果进行展示。

数据案例

以下词典中的中心词在垂直领域转化 ID 后,这些词的上下文都会变成等长的序列信息,这也可以为后期模型推理过程加速。

具体实体

实体类型

实体上下窗口原始序列

恐惧

symptom

生计而奔波,承担作为老公和爸爸的双重责任,甚至要担负起两个家庭尽孝的责任。男人婚前恐惧症表现为害怕婚姻束缚自由的男人在骨子里比女人更渴望自由,即使深爱对方,也不情愿被婚姻束缚自由,甚至改变原有的生活方式,故产生了恐惧。

呕吐

symptom

没什么食欲了就想着等他吃完我再吃,不一会他结账就走了。这时我脑袋里突然有个念头,他打嗝会不会了我没察觉到,然后他的呕吐物掉进我的碗里了,然后他有囊虫病我因为没察觉到而被感染?

入睡困难

symptom

躯体症状:大部分抑郁病人都有躯体及其他生物症状,例如心悸、胸闷、胃肠不适、便秘、食欲下降和体重减轻。睡眠障碍突出,多为抑郁症主要以抑郁心境、思维迟缓和意志活动减退为主,多数病例还存在各种躯体症状。有悲观厌世和自杀打算,有自责自罪 。

疱疹

symptom

由单纯疱疹病毒(HSV)引起的性传播疾病,主要是HSV-2型,少数为HSV-1型。是常见的性病之一。生殖器可反复发作,对病人的健康和心理影响较大;可以到重庆市大坪医院,重庆医科大学附属第二医院,重庆市中山医院治疗。

模型训练结果

上图记录了 Epoch 训练一次样本的过程。我们发现,模型在训练至 15 次时,损失率基本维持不变。因此,我们可以确定该模型能在一定程度上辅助医学场景短样本的标记。

为减少标注人员工作,我们还增加了一个判别器,为返回的标准实体加入一个最相似的原始窗口上下文信息。为达到数据精排的效果,我们通过 Medical Rbtl3 模型训练构建了一个二分类模型。该模型会通过人工标注学习多分类和二分类过程,从而对齐未知实体。

总结

在问答系统中数据处理的工作中,系统需要判断一个实体是否存在于标准实体库中。对于新的实体,系统会通过分类模型对其上下文信息窗口构建对应的分类向量,然后利用 Milvus 进行向量的搜索召回,将新实体进行映射。

我们的平台已经在多个平台中上线,感谢 Milvus 研发团队,期待未来与 Milvus 的进一步合作!

Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。

Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 目前是 LF AI & Data 基金会的毕业项目,能够管理大量非结构化数据集。我们的技术在新药发现、计算机视觉、推荐引擎、聊天机器人等方面具有广泛的应用。

0 人点赞