1.一种医疗自动问答方法,其特征在于,该方法包括如下步骤:
S1、构建医疗问答知识库:从互联网的医疗问答社区爬取问答对,并对问答对进行预处理构建成医疗问答知识库;
S2、构建问答模型训练数据集;对于每个医疗问题,在步骤S1中的医疗问答知识库中至少有一个正确答案,将正确答案与问题构建训练正例,将除正确答案以外的答案与问题构建训练负例;
S3、构建问答模型:利用卷积神经网络构建问答模型;
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所述的医疗自动问答方法,其特征在于,所述步骤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的向量。
5.根据权利要求4所述的医疗自动问答方法,其特征在于,所述步骤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。
6.根据权利要求1所述的医疗自动问答方法,其特征在于,所述步骤S4中训练问答模型和答案选择的具体步骤如下:S401、构建损失函数:根据步骤S305得到的问题和正确答案的相似度sim_pos以及问题与错误答案的相似度sim_neg使用Max-margin损失函数计算模型的损失值,用损失值来优化模型的结果;Max-margin损失函数的公式为:L=max(0,margin-sim_pos+sim_neg);
其中,margin为超参数,根据实际数据调整;max(a,b)的形式表示取a和b之间最大值;
S402、构建优化函数:使用Adam算法作为模型的优化函数;
S403、答案选择:将一个新的问题与医疗问答知识库中的所有候选答案组成输入样本;
再分别送入利用步骤S3训练完成的问答模型,计算问题与候选答案之间相似度的数值;最后从所有结果中选取相似度值最高的一组作为新问题最有可能的答案并该答案推送给用户。
7.一种医疗自动问答装置,其特征在于,该装置包括:
医疗问答知识库构建单元,用于利用爬虫技术,从互联网上的医疗问答社区爬取问答对,并对医疗问答知识库的问题和答案进行预处理,预处理包括拆分有多个答案的问题以及对问题和答案的内容进行断字处理,构建医疗问答知识库;
问答模型训练数据集生成单元,用于根据医疗问答知识库构建训练正例和训练负例,进而构建训练数据集;
问答模型构建单元,用于构建字符映射转换表、输入层、字符向量映射层、多尺度卷积层和堆叠卷积层以及相似度计算层,进而构建问答模型;
问答模型训练和答案选择单元,用于构建损失函数和优化函数,完成答案选择。
8.根据权利要求7所述的医疗自动问答装置,其特征在于,所述医疗问答知识库构建单元包括:爬虫单元,用于从互联网上抓取医疗问答社区中的内容,将结果保存为问答对的形式;
爬虫数据处理单元,用于将爬虫获取的问答对拆分为多个单独对应的问答对,并将问题和答案句子进行断字处理,构建问答知识库;
所述问答模型训练数据集生成单元包括:
训练正例构建单元,用于将问题与其所对应的答案进行组合,构建为训练正例;
训练负例构建单元,用于从问答知识库选中一个问题q1,再从医疗问答知识库中随机选择一个与问题q1不同的问题q2,将q1与q2的答案a2组合,构建训练负例;
训练数据集构建单元,用于从训练正例构建单元和训练负例构建单元所得的全部问答的训练正例样本、训练负例样本组合在一起,并随机打乱顺序构成最终的训练数据集;
所述问答模型构建单元包括:
字符映射转换表构建单元,用于将医疗问答知识库中的所有字符构建为字符表,并将字符表中的每个字符映射为唯一的数字表示,构建字符映射转换表。
输入层构建单元,用于从问题对应的训练正例和训练负例中获取输入数据,分别获取训练正例中的问题question和答案answer以及训练负例中的答案,将其形式化为:(question,answer,bad-answer);
字符向量映射层构建单元,用于构建并存储字符映射转换表中每个字符的向量表示;
多尺度卷积层和堆叠卷积层构建单元,用于生成多尺度卷积层和堆叠卷积层,多尺度卷积层用于捕获问题或答案里字符级别的n-gram特征并输出,堆叠卷积层用于捕获问题或答案里句子级别的语义特征并输出;最后将多尺度卷积层的输出与堆叠卷积层的输出联接起来,作为问题或答案的特征向量;
相似度评价构建单元,用于将多尺度卷积层构建单元和堆叠卷积层构建单元的输出的问题与答案的向量表示,进行联接,获得问题与答案的最终表示,并计算两者的余弦相似度;
所述问答模型训练和答案选择单元包括:
损失函数构建单元,用于计算问题和正确答案的相似度以及问题和错误答案的相似度之间的误差;
优化函数构建单元,用于调整模型中的参数,使模型对问题与正确答案的相似度大于问题与错误答案的相似度;
答案选择单元,用于处理新的问题时,从医疗问答知识库中使用训练好的模型选择正确的答案。
9.一种存储介质,其中存储有多条指令,其特征在于,所述指令由处理器加载,执行权利要求1-6中所述的医疗自动问答方法的步骤。
10.一种电子设备,其特征在于,所述电子设备包括:
权利要求9所述的存储介质;以及
处理器,用于执行所述存储介质中的指令。