首页 > 专利 > 齐鲁工业大学 > 医疗自动问答方法及装置、存储介质、电子设备专利详情

医疗自动问答方法及装置、存储介质、电子设备   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2018-08-17
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2018-12-28
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2019-03-26
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2038-08-17
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201810939302.3 申请日 2018-08-17
公开/公告号 CN108932349B 公开/公告日 2019-03-26
授权日 2019-03-26 预估到期日 2038-08-17
申请年 2018年 公开/公告年 2019年
缴费截止日
分类号 G06F16/332G16H80/00G06N3/04 主分类号 G06F16/332
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 8
权利要求数量 9 非专利引证数量 1
引用专利数量 4 被引证专利数量 0
非专利引证 1、Wenpeng Lu et al..“Question AnsweringSystem based on Web”《.2012 FifthInternational Conference on IntelligentComputation Technology and Automation》.2012,第573-576页.;
引用专利 CN107368547A、CN103577556A、CN108182262A、CN106845061A 被引证专利
专利权维持 4 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 齐鲁工业大学 当前专利权人 齐鲁工业大学
发明人 鹿文鹏、张玉腾、张若雨、张旭、岳书通、成金勇 第一发明人 鹿文鹏
地址 山东省济南市长清区大学路3501号齐鲁工业大学 邮编 250353
申请人数量 1 发明人数量 6
申请人所在省 山东省 申请人所在市 山东省济南市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
济南信达专利事务所有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
孙园园
摘要
本发明公开了医疗自动问答方法及装置、存储介质、电子设备,属于自然语言处理技术领域及计算机人工智能领域,本发明要解决的技术问题为如何使用自然语言处理技术为患者在已有的问答结果中选择匹配的答案并将其推荐给用户,减少医生的工作量,提高问题解答的速度,采用的技术方案为:①一种医疗自动问答方法,该方法包括如下步骤:S1、构建医疗问答知识库;S2、构建问答模型训练数据集;S3、构建问答模型;S4、训练问答模型和答案选择。②一种医疗自动问答装置,该装置包括:医疗问答知识库构建单元、问答模型训练数据集生成单元、问答模型构建单元以及问答模型训练和答案选择单元。
  • 摘要附图
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图1
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图2
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图3
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图4
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图5
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图6
    医疗自动问答方法及装置、存储介质、电子设备
  • 说明书附图:图7
    医疗自动问答方法及装置、存储介质、电子设备
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2019-03-26 授权
2 2018-12-28 实质审查的生效 IPC(主分类): G06F 17/30 专利申请号: 201810939302.3 申请日: 2018.08.17
3 2018-12-04 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种医疗自动问答方法,其特征在于,该方法包括如下步骤:
S1、构建医疗问答知识库:从互联网的医疗问答社区爬取问答对,并对问答对进行预处理构建成医疗问答知识库;
S2、构建问答模型训练数据集;对于每个医疗问题,在步骤S1中的医疗问答知识库中至少有一个正确答案,将正确答案与问题构建训练正例,将除正确答案以外的答案与问题构建训练负例;
S3、构建问答模型:利用卷积神经网络构建问答模型;其中,构建问答模型的具体步骤如下:
S301、构建字符映射转换表:根据步骤S1中预处理以后构建的医疗问答知识库,构建字符表,并将字符表中的字符映射为唯一的数字表示;
S302、构建输入层:输入层包括三个输入内容,从问题对应的训练正例中获取question和answer,从训练负例中获取bad-answer,输入层的形式为(question,answer,bad-answer);再根据步骤S301中得到的字符映射转换表将输入数据中的字符转化为数字表示;
S303、构建字符向量映射层:指定字符向量的维度大小为embedding_dim,步骤S301中获取的字符表大小为vocab_num,使用[-1,1]的均匀分布定义(vocab_num+1)×embedding_dim的二维矩阵并将其作为模型的字符向量映射层的权重矩阵,其中,每一行对应医疗问答知识库中单个字符的向量表示;
S304、构建多尺度卷积层和堆叠卷积层:多尺度卷积层是利用不同尺寸的卷积核与经过步骤S303处理后的数据做卷积操作,捕获问题或答案里的字符级别的n-gram特征作为输出;堆叠卷积层是将不同尺寸的卷积核堆叠起来,将经过步骤S303处理后的数据自下而上地与各个卷积核做卷积操作,捕获问题或答案里句子级别的语义特征作为输出;再将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
S305、构建相似度计算层:使用余弦相似度公式计算得到问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg;余弦相似度的计算公式如下所示:
其中,‖·‖表示L2范数,Q和A分别指问题和正确答案或错误答案经过问答模型处理后获得的向量表示;Q表示vector_question的向量,A表示vector_answer或vector_bad-answer的向量;
S4、训练问答模型和答案选择:在步骤S2所得到问答模型训练数据集中对步骤S3构建的问题模型进行训练。

2.根据权利要求1所述的医疗自动问答方法,其特征在于,所述步骤S1中构建医疗问答知识库的具体步骤如下:
S101、利用爬虫技术,从互联网的医疗问答社区爬取问答对:医疗问答社区均采用Web形式进行展示,利用Scrapy工具获取问题和所对应的答案,构建问答知识库;
S102、对步骤S101中从互联网的医疗问答社区爬取的问答对进行预处理,主要包括拆分有多个答案的问题以及对问题和答案进行断字处理;
S10201、拆分有多个答案的问题就是将问题与答案拆分成一一对应的形式;
S10202、对问题和答案进行断字处理就是对问题和答案的内容进行断字处理,具体来说:将医疗问答社区中每个问题和答案,以汉字字符为基本单位,将每个字之间用空格分开且保留数字和标点符号。

3.根据权利要求1所述的医疗自动问答方法,其特征在于,所述步骤S2中构建问答模型训练数据集的具体步骤如下:
S201、构建训练正例:将问题与其所对应的正确答案进行组合,构建训练正例,训练正例的形式为:(question,answer,1),其中,question指问题,answer指该问题所对应的正确答案,1表示正例;
S202、构建训练负例:在医疗问答知识库中选中步骤S201的问题,再从医疗问答知识库中随机选择除步骤S201以外的问题及其该问题所对应的答案,将步骤S201的问题与随机选择的除步骤S201以外的问题所对应的答案组合,构建训练负例,训练负例的形式为:
(question,bad-answer,0),其中,question指问题,bad-answer指随机选择的除步骤S201以外的问题所对应的答案,0表示负例;
S203、构建训练数据集:将步骤S201和步骤S202所的的全部训练正例和训练负例的样本组合,并随机打乱训练正例和训练负例的样本构建最终的训练数据集。

4.根据权利要求1所述的医疗自动问答方法,其特征在于,所述步骤S304中多尺度卷积层计算的具体步骤如下:
(1)、定义卷积核的数量为n,卷积核的集合C={c1,c2,…,ci,…,cn},其中,ci表示卷积核的尺寸;
(2)、根据步骤S303处理后的数据与卷积核的集合C内的卷积核分别做卷积运算得到结果O={o1,o2,…,oi,…,on};
(3)、对每个oi依次使用ReLU激活函数,做基于字符向量维度的取最大值操作,得到最终的输出Omulti;ReLU激活函数的公式如下为:
所述步骤S304中堆叠卷积层计算的具体步骤如下:
(1)、定义卷积核的数量为m,卷积核的集合C={c1,c2,…,ci,…,cm},其中,ci表示卷积核的尺寸;
(2)、根据步骤S303处理后的数据与卷积核的集合C内的第1个卷积核c1做卷积操作,再经过ReLU激活得到o1;
(3)、将o1与卷积核的集合C内的第2个卷积核c2做卷积操作,再经过ReLU激活得到o2;
(4)、如此重复操作直至得到om,对其做基于字符向量维度的取最大值操作,得到最终的输出Ostack。

5.根据权利要求1所述的医疗自动问答方法,其特征在于,所述步骤S4中训练问答模型和答案选择的具体步骤如下:
S401、构建损失函数:根据步骤S305得到的问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg使用Max-margin损失函数计算模型的损失值,用损失值来优化模型的结果;Max-margin损失函数的公式为:
L=max(0,mar gin-sim_pos+sim_neg);
其中,margin为超参数,根据实际数据调整;max(a,b)的形式表示取a和b之间最大值;
S402、构建优化函数:使用Adam算法作为模型的优化函数;
S403、答案选择:将一个新的问题与医疗问答知识库中的所有候选答案组成输入样本;
再分别送入利用步骤S3训练完成的问答模型,计算问题与候选答案之间相似度的数值;最后从所有结果中选取相似度值最高的一组作为新问题最有可能的答案并该答案推送给用户。

6.一种医疗自动问答装置,其特征在于,该装置用于实现如权利要求1-5中任一项医疗自动问答方法,包括:
医疗问答知识库构建单元,用于利用爬虫技术,从互联网上的医疗问答社区爬取问答对,并对医疗问答知识库的问题和答案进行预处理,预处理包括拆分有多个答案的问题以及对问题和答案的内容进行断字处理,构建医疗问答知识库;
问答模型训练数据集生成单元,用于根据医疗问答知识库构建训练正例和训练负例,进而构建训练数据集;
问答模型构建单元,用于构建字符映射转换表、输入层、字符向量映射层、多尺度卷积层和堆叠卷积层以及相似度计算层,进而构建问答模型;
问答模型训练和答案选择单元,用于构建损失函数和优化函数,完成答案选择。

7.根据权利要求6所述的医疗自动问答装置,其特征在于,所述医疗问答知识库构建单元包括:
爬虫单元,用于从互联网上抓取医疗问答社区中的内容,将结果保存为问答对的形式;
爬虫数据处理单元,用于将爬虫获取的问答对拆分为多个单独对应的问答对,并将问题和答案句子进行断字处理,构建问答知识库;
所述问答模型训练数据集生成单元包括:
训练正例构建单元,用于将问题与其所对应的答案进行组合,构建为训练正例;
训练负例构建单元,用于从问答知识库选中一个问题q1,再从医疗问答知识库中随机选择一个与问题q1不同的问题q2,将q1与q2的答案a2组合,构建训练负例;
训练数据集构建单元,用于从训练正例构建单元和训练负例构建单元所得的全部问答的训练正例样本、训练负例样本组合在一起,并随机打乱顺序构成最终的训练数据集;
所述问答模型构建单元包括:
字符映射转换表构建单元,用于将医疗问答知识库中的所有字符构建为字符表,并将字符表中的每个字符映射为唯一的数字表示,构建字符映射转换表;
输入层构建单元,用于从问题对应的训练正例和训练负例中获取输入数据,分别获取训练正例中的问题question和答案answer以及训练负例中的答案,将其形式化为:
(question,answer,bad-answer);
字符向量映射层构建单元,用于构建并存储字符映射转换表中每个字符的向量表示;
多尺度卷积层和堆叠卷积层构建单元,用于生成多尺度卷积层和堆叠卷积层,多尺度卷积层用于捕获问题或答案里字符级别的n-gram特征并输出,堆叠卷积层用于捕获问题或答案里句子级别的语义特征并输出;最后将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
相似度评价构建单元,用于将多尺度卷积层构建单元和堆叠卷积层构建单元的输出的问题与答案的向量表示,进行联接,获得问题与答案的最终表示,并计算两者的余弦相似度;
所述问答模型训练和答案选择单元包括:
损失函数构建单元,用于计算问题和正确答案的相似度以及问题和错误答案的相似度之间的误差;
优化函数构建单元,用于调整模型中的参数,使模型对问题与正确答案的相似度大于问题与错误答案的相似度;
答案选择单元,用于处理新的问题时,从医疗问答知识库中使用训练好的模型选择正确的答案。

8.一种存储介质,其中存储有多条指令,其特征在于,所述指令由处理器加载,执行权利要求1-5任一项中所述的医疗自动问答方法的步骤。

9.一种电子设备,其特征在于,所述电子设备包括:
权利要求8所述的存储介质;以及
处理器,用于执行所述存储介质中的指令。
说明书

技术领域

[0001] 本发明涉及自然语言处理技术领域及计算机人工智能领域,具体地说是医疗自动问答方法及装置、存储介质、电子设备。

背景技术

[0002] 随着当前互联网的快速发展,传统的医疗行业开始拥抱互联网,涌现了一大批方便患者的问答的网址,其中的在线医疗问答社区发展较为迅速,因为它极大地减少了患者向医生求助的环节,患者在互联网社区发布问题,由相关专业的医生解疑答惑,避免了传统就医环节中,前往医院、挂号、排队的流程。然而,随着在线提问的用户数量的增加,问题的增加速度远远大于解答的速度,主要包括两方面的原因:一方面是患者的数量远远高于专业医生的数量,并且在社区中解答问题的医生数量更少;另一方面是由于患者缺乏专业的医学知识,无法专业地描述问题,因此会对同样的问题提出不同的描述,这就造成了问答社区中存在着大量的重复问题。医生数量稀少的问题暂无解决办法,但是可以从问题重复现象出发进行处理,如何使用自然语言处理技术为患者在已有的问答结果中选择匹配的答案并将其推荐给用户,减少医生的工作量,提高问题解答的速度是目前现有技术中急需解决的技术问题。
[0003] 专利号为CN107516110A的专利文献公开了一种基于集成卷积编码的医疗问答语义聚类方法,所述方法包括以下步骤:步骤1:从医疗平台上获取医疗问答数据,对医疗问答数据集进行预处理,并得到输入矩阵;步骤2:用卷积编码网络对不同的输入矩阵选取不同的卷积核进行核聚类,对核聚类后的聚类质量和多样性进行计算,根据聚类质量和多样性挑选出表示文本特征最好的n个卷积核;步骤3:将步骤2中挑选的卷积核分别通过卷积神经网络来进行训练操作;步骤4:融合不同卷积核的特征表示结果;步骤5:将融合后的特征表示结果输入自编码机,进行输入重构训练得到最佳特征表示;步骤6:将编码得到的最佳特征表示进行聚类,得到最终医疗文本语义聚类结果。但是该技术方案仅是对医疗文本的分类,无法精准获取医疗问题的精准答案。

发明内容

[0004] 本发明的技术任务是提供一种医疗自动问答方法及装置、存储介质、电子设备,来解决如何使用自然语言处理技术为患者在已有的问答结果中选择匹配的答案并将其推荐给用户,减少医生的工作量,提高问题解答的速度的问题。
[0005] 本发明的技术任务是按以下方式实现的,一种医疗自动问答方法,该方法包括如下步骤:
[0006] S1、构建医疗问答知识库:从互联网的医疗问答社区爬取问答对,并对问答对进行预处理构建成医疗问答知识库;
[0007] S2、构建问答模型训练数据集;对于每个医疗问题,在步骤S1中的医疗问答知识库中至少有一个正确答案,将正确答案与问题构建训练正例,将除正确答案以外的答案与问题构建训练负例;其中,负例的数量根据医疗问答知识库的大小设定;
[0008] S3、构建问答模型:利用卷积神经网络构建问答模型;
[0009] S4、训练问答模型和答案选择:在步骤S2所得到问答模型训练数据集中对步骤S3构建的问题模型进行训练。
[0010] 作为优选,所述步骤S1中构建医疗问答知识库的具体步骤如下:
[0011] S101、利用爬虫技术,从互联网的医疗问答社区爬取问答对:在互联网上有着大量的医疗问答社区,其内容是开放可获取的;医疗问答社区均采用Web形式进行展示,利用Scrapy工具获取问题和所对应的答案,构建问答知识库;
[0012] S102、对步骤S101中从互联网的医疗问答社区爬取的问答对进行预处理,主要包括拆分有多个答案的问题以及对问题和答案进行断字处理;
[0013] S10201、拆分有多个答案的问题就是将问题与答案拆分成一一对应的形式,具体来说:医疗问答社区中同一个问题至少有两个正确答案,将问题与答案拆分成多个问答对;
[0014] S10202、对问题和答案进行断字处理就是对问题和答案的内容进行断字处理,具体来说:将医疗问答社区中每个问题和答案,以汉字字符为基本单位,将每个字之间用空格分开且保留数字和标点符号。
[0015] 作为优选,所述步骤S2中构建问答模型训练数据集的具体步骤如下:
[0016] S201、构建训练正例:将问题与其所对应的正确答案进行组合,构建训练正例,训练正例的形式为:(question,answer,1),其中,question指问题,answer指该问题所对应的正确答案,1表示正例;
[0017] S202、构建训练负例:在医疗问答知识库中选中步骤S201的问题,再从医疗问答知识库中随机选择除步骤S201以外的问题及其该问题所对应的答案,将步骤S201的问题与随机选择的除步骤S201以外的问题所对应的答案组合,构建训练负例,训练负例的形式为:(question,bad-answer,0),其中,question指问题,bad-answer指随机选择的除步骤S201以外的问题所对应的答案,0表示负例;
[0018] S203、构建训练数据集:将步骤S201和步骤S202所的的全部训练正例和训练负例的样本组合,并随机打乱训练正例和训练负例的样本构建最终的训练数据集;其中,训练正例和训练负例均包含三个维度,即question、answer或bad-answer、1或0,前两个维度根据实际包含的词语构建二维的张量表示,第三个维度构建一个向量表示。
[0019] 作为优选,所述步骤S3中构建问答模型的具体步骤如下:
[0020] S301、构建字符映射转换表:根据步骤S1中预处理以后构建的医疗问答知识库,构建字符表,并将字符表中的字符映射为唯一的数字表示,例如可按照字符加入字符表的顺序从1开始依次递增,构建字符映射转换表;
[0021] S302、构建输入层:输入层包括三个输入内容,从问题对应的训练正例中获取question和answer,从训练负例中获取bad-answer,输入层的形式为(question,answer,bad-answer);再根据步骤S301中得到的字符映射转换表将输入数据中的字符转化为数字表示;
[0022] S303、构建字符向量映射层:指定字符向量的维度大小为embedding_dim,步骤S301中获取的字符表大小为vocab_num,使用[-1,1]的均匀分布定义(vocab_num+1)×embedding_dim的二维矩阵并将其作为模型的字符向量映射层的权重矩阵,其中,每一行对应医疗问答知识库中单个字符的向量表示,其中,第0行表示在知识库中没有出现的字符;
[0023] S304、构建多尺度卷积层和堆叠卷积层:多尺度卷积层是利用不同尺寸的卷积核与经过步骤S303处理后的数据做卷积操作,捕获问题或答案里的字符级别的n-gram特征作为输出;堆叠卷积层是将不同尺寸的卷积核堆叠起来,将经过步骤S303处理后的数据自下而上地与各个卷积核做卷积操作,捕获问题或答案里句子级别的语义特征作为输出;再将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
[0024] S305、构建相似度计算层:使用余弦相似度公式计算得到问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg;余弦相似度的计算公式如下所示:
[0025]
[0026] 其中,‖·‖表示L2范数,Q和A分别指问题和正确答案或错误答案经过问答模型处理后获得的向量表示;Q表示vector_question的向量,A表示vector_answer或vector_bad-answer的向量。
[0027] 作为优选,所述步骤S304中多尺度卷积层计算的具体步骤如下:
[0028] (1)、定义卷积核的数量为n,卷积核的集合C={c1,c2,…,ci,…,cn},其中,ci表示卷积核的尺寸;
[0029] (2)、根据步骤S303处理后的数据与卷积核的集合C内的卷积核分别做卷积运算得到结果O={o1,o2,…,oi,…,on};
[0030] (3)、对每个oi依次使用ReLU激活函数,做基于字符向量维度的取最大值操作,得到最终的输出Omulti。ReLU激活函数的公式如下为:
[0031]
[0032] 所述步骤S304中堆叠卷积层计算的具体步骤如下:
[0033] (1)、定义卷积核的数量为m,卷积核的集合C={c1,c2,…,ci,…,cm},其中,ci表示卷积核的尺寸;
[0034] (2)、根据步骤S303处理后的数据与卷积核的集合C内的第1个卷积核c1做卷积操作,再经过ReLU激活得到o1;
[0035] (3)、将o1与卷积核的集合C内的第2个卷积核c2做卷积操作,再经过ReLU激活得到o2;
[0036] (4)、如此重复操作直至得到om,对其做基于字符向量维度的取最大值操作,得到最终的输出Ostack。
[0037] 作为优选,所述步骤S4中训练问答模型和答案选择的具体步骤如下:
[0038] S401、构建损失函数:根据步骤S305得到的问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg使用Max-margin损失函数计算模型的损失值,用损失值来优化模型的结果;Max-margin损失函数的公式为:
[0039] L=max(0,mar gin-sim_pos+sim_neg);
[0040] 其中,margin为超参数,根据实际数据调整;max(a,b)的形式表示取a和b之间最大值;
[0041] S402、构建优化函数:使用Adam算法作为模型的优化函数;其中,学习率参数设置为0.01,其他超参数使用PyTorch中的默认值即可,其他超参数包括如下:
[0042] betas=(0.9,0.999),betas用于计算梯度及其平方的运行平均值的系数;
[0043] eps=1e-8,eps用于添加到分母中以增加数值稳定性;
[0044] weight_decay=0,weight_decay用于控制权重衰减。
[0045] S403、答案选择:将一个新的问题与医疗问答知识库中的所有候选答案组成输入样本;再分别送入利用步骤S3训练完成的问答模型,计算问题与候选答案之间相似度的数值;最后从所有结果中选取相似度值最高的一组作为新问题最有可能的答案并该答案推送给用户。
[0046] 一种医疗自动问答装置,该装置包括:
[0047] 医疗问答知识库构建单元,用于利用爬虫技术,从互联网上的医疗问答社区爬取问答对,并对医疗问答知识库的问题和答案进行预处理,预处理包括拆分有多个答案的问题以及对问题和答案的内容进行断字处理,构建医疗问答知识库;
[0048] 问答模型训练数据集生成单元,用于根据医疗问答知识库构建训练正例和训练负例,进而构建训练数据集;
[0049] 问答模型构建单元,用于构建字符映射转换表、输入层、字符向量映射层、多尺度卷积层和堆叠卷积层以及相似度计算层,进而构建问答模型;
[0050] 问答模型训练和答案选择单元,用于构建损失函数和优化函数,完成答案选择。
[0051] 作为优选,所述医疗问答知识库构建单元包括:
[0052] 爬虫单元,用于从互联网上抓取医疗问答社区中的内容,将结果保存为问答对的形式;
[0053] 爬虫数据处理单元,用于将爬虫获取的问答对拆分为多个单独对应的问答对,并将问题和答案句子进行断字处理,构建问答知识库;
[0054] 所述问答模型训练数据集生成单元包括:
[0055] 训练正例构建单元,用于将问题与其所对应的答案进行组合,构建为训练正例;
[0056] 训练负例构建单元,用于从问答知识库选中一个问题q1,再从医疗问答知识库中随机选择一个与问题q1不同的问题q2,将q1与q2的答案a2组合,构建训练负例;
[0057] 训练数据集构建单元,用于从训练正例构建单元和训练负例构建单元所得的全部问答的训练正例样本、训练负例样本组合在一起,并随机打乱顺序构成最终的训练数据集;
[0058] 所述问答模型构建单元包括:
[0059] 字符映射转换表构建单元,用于将医疗问答知识库中的所有字符构建为字符表,并将字符表中的每个字符映射为唯一的数字表示,可按照字符加入字符表的顺序从1开始依次递增,构建字符映射转换表。
[0060] 输入层构建单元,用于从问题对应的训练正例和训练负例中获取输入数据,分别获取训练正例中的问题question和答案answer以及训练负例中的答案,将其形式化为:(question,answer,bad-answer);
[0061] 字符向量映射层构建单元,用于构建并存储字符映射转换表中每个字符的向量表示;
[0062] 多尺度卷积层和堆叠卷积层构建单元,用于生成多尺度卷积层和堆叠卷积层,多尺度卷积层用于捕获问题或答案里字符级别的n-gram特征并输出,堆叠卷积层用于捕获问题或答案里句子级别的语义特征并输出;最后将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
[0063] 相似度评价构建单元,用于将多尺度卷积层构建单元和堆叠卷积层构建单元的输出的问题与答案的向量表示,进行联接,获得问题与答案的最终表示,并计算两者的余弦相似度;
[0064] 所述问答模型训练和答案选择单元包括:
[0065] 损失函数构建单元,用于计算问题和正确答案的相似度以及问题和错误答案的相似度之间的误差;
[0066] 优化函数构建单元,用于调整模型中的参数,使模型对问题与正确答案的相似度大于问题与错误答案的相似度;
[0067] 答案选择单元,用于处理新的问题时,从医疗问答知识库中使用训练好的模型选择正确的答案。
[0068] 一种存储介质,其中存储有多条指令,所述指令由处理器加载,执行上述的医疗自动问答方法的步骤。
[0069] 一种电子设备,所述电子设备包括:
[0070] 上述的存储介质;以及
[0071] 处理器,用于执行所述存储介质中的指令。
[0072] 本发明的医疗自动问答方法及装置、存储介质、电子设备具有以下优点:
[0073] (1)、本发明通过爬虫技术能够完成医疗问答知识库的采集和预处理,生成医疗问答知识库,为后续建立医疗问答模型提供数据支持;
[0074] (2)、本发明能够有效地对已有问答对进行建模构建问答模型,并提取问答对之间的多层语义关联关系;
[0075] (3)、本发明能够定义并实现一套完整的端到端的自动问答模型,直接为用户的问题推荐相似度最高的答案;
[0076] (4)、本发明能够利用医疗问题中的语义关系得到医疗问答模型,从而解决医疗问答中的答案选择问题;
[0077] (5)、本发明对问题和答案采用字符级别的向量表征,并结合了卷积神经网络的强大的局部抽象能力,能够在一定程度上减小错别字的干扰;
[0078] (6)、本发明将多尺度卷积层与堆叠卷积层组合共同表示医疗问答数据库中字符及句子的n-gram特征,能够更有效的提取医疗问题的特征,进而获取更加准确的答案;
[0079] (7)、本发明使用自然语言处理技术为患者在已有的问答结果中选择匹配的答案并将其推荐给用户,减少医生的工作量,提高问题解答的速度,是计算机人工智能重要突破。

实施方案

[0088] 参照说明书附图和具体实施例对本发明的医疗自动问答方法及装置、存储介质、电子设备作以下详细地说明。
[0089] 实施例1:
[0090] 如附图1所示,本发明的医疗自动问答方法,该方法包括如下步骤:
[0091] S1、构建医疗问答知识库:从互联网的医疗问答社区爬取问答对,并对问答对进行预处理构建成医疗问答知识库;
[0092] S2、构建问答模型训练数据集;对于每个医疗问题,在步骤S1中的医疗问答知识库中有两个正确答案,将正确答案与问题构建训练正例,将除正确答案以外的答案与问题构建训练负例;其中,负例的数量根据医疗问答知识库的大小设定;
[0093] S3、构建问答模型:利用卷积神经网络构建问答模型;
[0094] S4、训练问答模型和答案选择:在步骤S2所得到问答模型训练数据集中对步骤S3构建的问题模型进行训练。
[0095] 如附图2所示,步骤S1中构建医疗问答知识库的具体步骤如下:
[0096] S101、利用爬虫技术,从互联网的医疗问答社区爬取问答对:在互联网上有着大量的医疗问答社区,其内容是开放可获取的;医疗问答社区均采用Web形式进行展示,利用Scrapy工具获取问题和所对应的答案,构建问答知识库;
[0097] 医疗问答社区中的问答对示例,如下表所示(将该问题作为示例问题,下面表述中统一称为“示例问题)”:
[0098]
[0099]
[0100] S102、对步骤S101中从互联网的医疗问答社区爬取的问答对进行预处理,主要包括拆分有多个答案的问题以及对问题和答案进行断字处理;
[0101] S10201、拆分有多个答案的问题就是将问题与答案拆分成一一对应的形式,具体来说:医疗问答社区中同一个问题有两个正确答案,将问题与答案拆分成两个问答对;
[0102] 如上述示例问题有两个正确答案,将示例问题与其对应的正确答案拆分为两个问答对,如下表所示:
[0103]
[0104]
[0105] S10202、对问题和答案进行断字处理就是对问题和答案的内容进行断字处理,具体来说:将医疗问答社区中每个问题和答案,以汉字字符为基本单位,将每个字之间用空格分开且保留数字和标点符号。
[0106] 对示例问题进行断字处理,得到“前几天孩子得了病毒性脑炎在医院住了十来天出院了,过了一周去医院复查,血小板计数509偏高,怎么办?孩子现在11个月了。现在吃的药只有双嘧达莫片。请问医生孩子这是怎么了?血小板怎么才能降下来?谢谢!”。
[0107] 如附图3所示,步骤S2中构建问答模型训练数据集的具体步骤如下:
[0108] S201、构建训练正例:将问题与其所对应的正确答案进行组合,构建训练正例,训练正例的形式为:(question,answer,1),其中,question指问题,answer指该问题所对应的正确答案,1表示正例;
[0109] 对上述经常断字处理后的问题及其对应正确答案组合构建训练正例:
[0110] (“前几天孩子得了病毒性脑炎在医院住了十来天出院了,过了一周去医院复查,血小板计数509偏高,怎么办?孩子现在11个月了。现在吃的药只有双嘧达莫片。请问医生孩子这是怎么了?血小板怎么才能降下来?谢谢!”,“你好孩子得了病毒性脑炎在医院住了十几天复查发现血小板计数偏高指导意见:建议你积极接受医院的治疗病毒性脑炎血小板偏高是普遍的现象,除了采取吃药最好进行输液治疗”,1)。
[0111] S202、构建训练负例:在医疗问答知识库中选中步骤S201的问题,再从医疗问答知识库中随机选择除步骤S201以外的问题及其该问题所对应的答案,将步骤S201的问题与随机选择的除步骤S201以外的问题所对应的答案组合,构建训练负例,训练负例的形式为:(question,bad-answer,0),其中,question指问题,bad-answer指随机选择的除步骤S201以外的问题所对应的答案,0表示负例;
[0112] 如:示例问题q1,再从医疗问答知识库中随机选择一个与示例问题q1不同的问题q2,将q1与q2的答案a2组合,可构建训练负例,可形式化为:
[0113] (“前几天孩子得了病毒性脑炎在医院住了十来天出院了,过了一周去医院复查,血小板计数509偏高,怎么办?孩子现在11个月了。现在吃的药只有双嘧达莫片。请问医生孩子这是怎么了?血小板怎么才能降下来?谢谢!”“, 你好,手足口病是一种肠道病毒病,具有肠道病毒感染的共同特征.主要侵犯手,足,口,臀四个部位,口腔溃疡疼痛,患儿流涎拒食.本病经1周后可自愈,一般对症治疗,可应用抗病毒药如阿昔洛韦利巴韦林(三氮唑核苷).中药有大青叶,夏枯草,或导赤散加减.还可以用双黄连口服液,严重的话,是需要到医院检查后治疗的。”,0)。
[0114] S203、构建训练数据集:将步骤S201和步骤S202所的的全部训练正例和训练负例的样本组合,并随机打乱训练正例和训练负例的样本构建最终的训练数据集;其中,训练正例和训练负例均包含三个维度,即question、answer或bad-answer、1或0,前两个维度根据实际包含的词语构建二维的张量表示,第三个维度构建一个向量表示。
[0115] 如:使用vector_question、vector_answer、vector_posneg分别表示训练数据集的问题的向量表示、答案的向量表示、正负例标志的向量表示。假定每个字符用一个embedding_dim维的向量表示,则vector_question和vector_answer的张量维度为word_num×embedding_dim,其中,word_num指question、answer或bad-answer中字符的个数。
[0116] 如附图4所示,步骤S3中构建问答模型的具体步骤如下:
[0117] S301、构建字符映射转换表:根据步骤S1中预处理以后构建的医疗问答知识库,构建字符表,并将字符表中的字符映射为唯一的数字表示,例如可按照字符加入字符表的顺序从1开始依次递增,构建字符映射转换表;
[0118] 以进行断字处理后的示例问题为例,构建字符表及字符映射转换表如下:
[0119]字符 映射 字符 映射 字符 映射 字符 映射 字符 映射
前 1 医 14 小 27 个 40 请 53
几 2 院 15 板 28 月 41 问 54
天 3 住 16 计 29 。 42 生 55
孩 4 十 17 数 30 吃 43 这 56
子 5 来 18 509 31 的 44 是 57
得 6 , 19 偏 32 药 45 才 58
了 7 过 20 高 33 只 46 能 59
病 8 一 21 怎 34 有 47 降 60
毒 9 周 22 么 35 双 48 下 61
性 10 去 23 办 36 嘧 49 谢 62
脑 11 复 24 ? 37 达 50 ! 63
炎 12 查 25 现 38 莫 51    
在 13 血 26 11 39 片 52    
[0120] S302、构建输入层:输入层包括三个输入内容,从问题对应的训练正例中获取question和answer,从训练负例中获取bad-answer,输入层的形式为(question,answer,bad-answer);再根据步骤S301中得到的字符映射转换表将输入数据中的字符转化为数字表示;
[0121] 示例问题的训练正例和训练负例构建一条输入数据,结果如下:
[0122] (“前几天孩子得了病毒性脑炎在医院住了十来天出院了,过了一周去医院复查,血小板计数509偏高,怎么办?孩子现在11个月了。现在吃的药只有双嘧达莫片。请问医生孩子这是怎么了?血小板怎么才能降下来?谢谢!”,“你好孩子得了病毒性脑炎在医院住了十几天复查发现血小板计数偏高指导意见:建议你积极接受医院的治疗病毒性脑炎血小板偏高是普遍的现象,除了采取吃药最好进行输液治疗”,“你好,手足口病是一种肠道病毒病,具有肠道病毒感染的共同特征.主要侵犯手,足,口,臀四个部位,口腔溃疡疼痛,患儿流涎拒食.本病经1周后可自愈,一般对症治疗,可应用抗病毒药如阿昔洛韦利巴韦林(三氮唑核苷).中药有大青叶,夏枯草,或导赤散加减.还可以用双黄连口服液,严重的话,是需要到医院检查后治疗的。”)
[0123] 根据词表中的映射将上述的输入数据转换为数值表示(由于实际情况中词表数量大约有5000个,暂不在此全部展示),结果如下:
[0124] (“112,332,70,167,73,274,24,19,302,27,213,77,33,30,86,707,24,489,98,70,55,86,24,2,61,24,10,163,122,30,86,120,29,2,32,110,750,883,408,0,584,168,2,
142,52,318,68,167,73,54,33,0,48,66,24,4,54,33,57,3,28,323,6,488,1869,599,905,
237,4,244,131,30,22,167,73,40,5,142,52,24,68,32,110,750,142,52,340,23,528,65,
98,68,356,356,201”,“17,9,167,73,274,24,19,302,27,213,77,33,30,86,707,24,489,
332,70,120,29,31,54,32,110,750,883,408,584,168,111,84,45,103,51,42,44,17,347,
449,437,267,30,86,3,12,14,19,302,27,213,77,549,1815,763,584,168,5,991,1832,3,
54,491,2,249,24,416,484,57,28,132,9,106,118,602,208,12,14”“, 17,9,15,91,385,
146,19,5,10,108,270,176,19,302,19,15,445,6,270,176,19,302,83,189,3,945,196,
407,780,26,181,16,1284,1253,91,15,385,15,146,15,1050,359,48,88,292,15,146,
431,864,933,155,67,15,199,153,156,2437,2171,39,26,469,19,37,87,163,36,8,247,
434,15,10,127,99,35,12,14,15,8,101,20,259,19,302,28,53,703,1603,1061,1344,
497,724,1344,770,828,275,1994,729,586,1616,821,26,100,28,6,56,776,809,15,
1196,1977,826,15,80,84,1770,659,188,303,26,85,8,13,20,488,326,666,146,105,
208,2,304,141,3,262,2,5,126,16,81,30,86,38,29,36,12,14,3,4”)。
[0125] S303、构建字符向量映射层:指定字符向量的维度大小为embedding_dim,步骤S301中获取的字符表大小为vocab_num,使用[-1,1]的均匀分布定义(vocab_num+1)×embedding_dim的二维矩阵并将其作为模型的字符向量映射层的权重矩阵,其中,每一行对应医疗问答知识库中单个字符的向量表示,其中,第0行表示在知识库中没有出现的字符;
[0126] 在PyTorch中,示例的代码实现如下:
[0127] matrix=numpy.random.uniform(-1,1,((word_num+1),embedding_dim))[0128] matrix[0,:]=0
[0129] embedding_layer=torch.nn.Embedding((word_num+1),embedding_dim)。
[0130] 该层是问答模型的通用层,存储了全部字符对应的字符向量;对于question、answer、bad-answer的处理操作均完全相同。
[0131] S304、构建多尺度卷积层和堆叠卷积层:多尺度卷积层是利用不同尺寸的卷积核与经过步骤S303处理后的数据做卷积操作,捕获问题或答案里的字符级别的n-gram特征作为输出;堆叠卷积层是将不同尺寸的卷积核堆叠起来,将经过步骤S303处理后的数据自下而上地与各个卷积核做卷积操作,捕获问题或答案里句子级别的语义特征作为输出;再将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
[0132] S305、构建相似度计算层:使用余弦相似度公式计算得到问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg;余弦相似度的计算公式如下所示:
[0133]
[0134] 其中,‖·‖表示L2范数,Q和A分别指问题和正确答案或错误答案经过问答模型处理后获得的向量表示;Q表示vector_question的向量,A表示vector_answer或vector_bad-answer的向量。
[0135] 如附图6所示,步骤S304中多尺度卷积层计算的具体步骤如下:
[0136] (1)、定义卷积核的数量为n,卷积核的集合C={c1,c2,…,ci,…,cn},其中,ci表示卷积核的尺寸;
[0137] (2)、根据步骤S303处理后的数据与卷积核的集合C内的卷积核分别做卷积运算得到结果O={o1,o2,…,oi,…,on};
[0138] (3)、对每个oi依次使用ReLU激活函数,做基于字符向量维度的取最大值操作,得到最终的输出Omulti。ReLU激活函数的公式如下为:
[0139]
[0140] 步骤S304中堆叠卷积层计算的具体步骤如下:
[0141] (1)、定义卷积核的数量为m,卷积核的集合C={c1,c2,…,ci,…,cm},其中,ci表示卷积核的尺寸;
[0142] (2)、根据步骤S303处理后的数据与卷积核的集合C内的第1个卷积核c1做卷积操作,再经过ReLU激活得到o1;
[0143] (3)、将o1与卷积核的集合C内的第2个卷积核c2做卷积操作,再经过ReLU激活得到o2;
[0144] (4)、如此重复操作直至得到om,对其做基于字符向量维度的取最大值操作,得到最终的输出Ostack。
[0145] 在PyTorch中定义卷积、ReLU激活函数、基于字符向量维度的最大值操作的代码如下所示:
[0146] 卷积代码:conv=torch.nn.Conv1d(embedding_dim,output_channel,c_i),其中output_channel为输出通道大小,用户可自定义。
[0147] ReLU激活函数代码:relu=torch.nn.ReLU()。
[0148] 基于字符向量维度的最大值操作代码:max=torch.nn.MaxPool1d()。
[0149] 如附图5所示,所述步骤S4中训练问答模型和答案选择的具体步骤如下:
[0150] S401、构建损失函数:根据步骤S305得到的问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg使用Max-margin损失函数计算模型的损失值,用损失值来优化模型的结果;Max-margin损失函数的公式为:
[0151] L=max(0,mar gin-sim_pos+sim_neg);
[0152] 其中,margin为超参数,根据实际数据调整;max(a,b)的形式表示取a和b之间最大值;
[0153] 在PyTorch中,定义max-margin函数可用如下代码实现:
[0154] loss=torch.nn.MarginRankingLoss(margin)。
[0155] S402、构建优化函数:使用Adam算法作为模型的优化函数;其中,学习率参数设置为0.01,其他超参数使用PyTorch中的默认值即可;其中,超参数是指在开始训练过程之前,需要人工设置值的参数;该参数不能通过训练而自动优化;根据实际数据集的不同,该参数需要用户自行人工设置。
[0156] 在PyTorch中,定义Adam优化函数可用如下代码实现:
[0157] optim=torch.optim.Adam(lr=0.001)。
[0158] S403、答案选择:将一个新的问题与医疗问答知识库中的所有候选答案组成输入样本;再分别送入利用步骤S3训练完成的问答模型,计算问题与候选答案之间相似度的数值;最后从所有结果中选取相似度值最高的一组作为新问题最有可能的答案并该答案推送给用户。
[0159] 实施例2:
[0160] 如附图7所示,基于实施例1的医疗自动问答装置,该装置包括:
[0161] 医疗问答知识库构建单元,用于利用爬虫技术,从互联网上的医疗问答社区爬取问答对,并对医疗问答知识库的问题和答案进行预处理,预处理包括拆分有多个答案的问题以及对问题和答案的内容进行断字处理,构建医疗问答知识库;
[0162] 问答模型训练数据集生成单元,用于根据医疗问答知识库构建训练正例和训练负例,进而构建训练数据集;
[0163] 问答模型构建单元,用于构建字符映射转换表、输入层、字符向量映射层、多尺度卷积层和堆叠卷积层以及相似度计算层,进而构建问答模型;
[0164] 问答模型训练和答案选择单元,用于构建损失函数和优化函数,完成答案选择。
[0165] 其中,医疗问答知识库构建单元包括:
[0166] 爬虫单元,用于从互联网上抓取医疗问答社区中的内容,将结果保存为问答对的形式;
[0167] 爬虫数据处理单元,用于将爬虫获取的问答对拆分为多个单独对应的问答对,并将问题和答案句子进行断字处理,构建问答知识库;
[0168] 问答模型训练数据集生成单元包括:
[0169] 训练正例构建单元,用于将问题与其所对应的答案进行组合,构建为训练正例;
[0170] 训练负例构建单元,用于从问答知识库选中一个问题q1,再从医疗问答知识库中随机选择一个与问题q1不同的问题q2,将q1与q2的答案a2组合,构建训练负例;
[0171] 训练数据集构建单元,用于从训练正例构建单元和训练负例构建单元所得的全部问答的训练正例样本、训练负例样本组合在一起,并随机打乱顺序构成最终的训练数据集;
[0172] 问答模型构建单元包括:
[0173] 字符映射转换表构建单元,用于将医疗问答知识库中的所有字符构建为字符表,并将字符表中的每个字符映射为唯一的数字表示,可按照字符加入字符表的顺序从1开始依次递增,构建字符映射转换表。
[0174] 输入层构建单元,用于从问题对应的训练正例和训练负例中获取输入数据,分别获取训练正例中的问题question和答案answer以及训练负例中的答案,将其形式化为:(question,answer,bad-answer);
[0175] 字符向量映射层构建单元,用于构建并存储字符映射转换表中每个字符的向量表示;
[0176] 多尺度卷积层和堆叠卷积层构建单元,用于生成多尺度卷积层和堆叠卷积层,多尺度卷积层用于捕获问题或答案里字符级别的n-gram特征并输出,堆叠卷积层用于捕获问题或答案里句子级别的语义特征并输出;最后将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
[0177] 相似度评价构建单元,用于将多尺度卷积层构建单元和堆叠卷积层构建单元的输出的问题与答案的向量表示,进行联接,获得问题与答案的最终表示,并计算两者的余弦相似度;
[0178] 问答模型训练和答案选择单元包括:
[0179] 损失函数构建单元,用于计算问题和正确答案的相似度以及问题和错误答案的相似度之间的误差;
[0180] 优化函数构建单元,用于调整模型中的参数,使模型对问题与正确答案的相似度大于问题与错误答案的相似度;
[0181] 答案选择单元,用于处理新的问题时,从医疗问答知识库中使用训练好的模型选择正确的答案。
[0182] 实施例3:
[0183] 基于实施例1的一种存储介质,其中存储有多条指令,指令由处理器加载,执行实施例1的医疗自动问答方法的步骤。
[0184] 实施例4:
[0185] 基于实施例3的一种电子设备,电子设备包括:实施例3的存储介质;以及处理器,用于执行所述存储介质中的指令。
[0186] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽快参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

附图说明

[0080] 下面结合附图对本发明进一步说明。
[0081] 附图1为医疗自动问答方法流程框图;
[0082] 附图2为步骤S1构建医疗问答知识库的流程框图;
[0083] 附图3为步骤S2构建问答模型训练数据集的流程框图;
[0084] 附图4为步骤S3构建问答模型的流程框图;
[0085] 附图5为步骤S4构建训练问答模型和答案选择的流程框图;
[0086] 附图6为步骤S304中多尺度卷积层和堆叠卷积层计算的流程框图;
[0087] 附图7为医疗自动问答装置的结构框图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号