一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种在线医疗问答方法与流程

2021-12-07 21:51:00 来源:中国专利 TAG:


1.本发明属于互联网医疗技术领域,涉及一种在线医疗问答方法。


背景技术:

2.随着互联网的飞速发展,医疗健康领域的需求也得到了快速的完善,尤其是近年来人工智能技术在医疗领域的应用,给人们带来了极大的帮助。医疗问答系统作为医疗健康领域的重要应用之一,已经渗透进了人们的日常生活,是帮助人们了解医疗知识的重要途径,该应用具体实现方式是患者咨询病情相关问题,问答系统通过一定的技术向患者提供相应答案。然而,由于患者本身存在医疗知识不足的问题,无法精确描述自己的病情信息,并且在咨询时存在口语化、描述混乱等问题,导致目前业界落地的问答系统不能给予合适的答案。
3.现有的医疗问答技术方案基本分为以下三种:一是通过信息抽取技术。该方法主要是通过关键词的匹配加之一些规则来实现答案的抽取,然后再通过相似度的计算进行排序。
4.二是通过知识图谱技术。该方法主要是通过医疗领域知识的实体来构建实体关系边进而形成垂直领域的知识图谱,其核心理论是通过知识推理来实现从问题到答案的查找。
5.三是通过深度学习技术。近年来深度学习技术随着计算机硬件水平的提高也得到了快速的发展,在计算机视觉、自然语言处理等领域都取得了很好的成绩。在医疗问答系统的研究中,利用深度学习技术可以对医疗数据进行训练,进而学习构建复杂的网络模型来解决问答过程中的一些关键问题,比如医疗专业术语的命名实体识别、医疗主诉文本的分类等。


技术实现要素:

6.本发明针对传统面对缺乏专业知识的患者不能精确描述问题时,医疗问答系统无法给予合适的答案的问题提出一种新型的在线的医疗问答方法及系统,可实时的为患者提供精准的医疗问答服务。
7.为了达到上述目的,本发明是采用下述的技术方案实现的:一种在线医疗问答方法,步骤如下,(1)患者问题接收后进行长短句压缩处理,得到改写后的问句;(2)将改写后的问句进行分词处理,分割成单词集合;(3)预先训练神经语言模型,将单词集合进行向量化处理,并进一步将问句进行向量化;(4)抽取出与疾病症状相关的实体词;(5)将抽取的实体词转为对应的标准词;(6)根据特征词库识别出患者意图类型;
(7)根据标准词和患者意图类型生成问句解析结果;(8)根据医疗疾病知识库构建知识图谱;(9)将问句解析结果转换成查询语句,通过知识图谱查询获得答案。
8.作为优选,所述步骤(1)中患者问题接收后通过标点分割成若干短句,对短句进一步分类成与医疗相关的句子以及与医疗无关的口水话语句;对短句进一步分类采用textcnn神经网络模型,textcnn神经网络模型的构建如下:s1输入层,从医疗网站在线采集医疗问答数据,作为数据集;将与医疗相关的问句打标签为1,与医疗无关的口水话语句打标签为0,并按照7:3的比例将数据集分为训练集和测试集,将训练集数据转化为embedding词向量后作为textcnn神经网络模型训练的输入;s2卷积层,通过卷积操作提取输入层embedding词向量的特征,每个卷积核输出一个一维特征向量;s3池化层,对卷积层输出的一维特征向量做池化操作,做抽象的特征提取;取每个一维特征向量的最大值,然后将所有特征向量的最大值进行拼接,输出拼接后的一维特征向量;s4输出层,将问句对应每个类别的概率映射到(0,1)之间,从而根据最大概率确定问句所属的类别;textcnn神经网络模型参数包括训练次数和学习率,所述模型训练次数为将整个训练集进行输入后的迭代计算次数;所述学习率为在模型进行参数更新时所采用的梯度下降算法中计算系数;textcnn神经网络模型构建完成后,将步骤(2)改写后的问句输入到构建的textcnn神经网络模型,获得短句所属的类别,去除类别为0的短句,保留与医疗相关的问句;所述步骤(2)利用不同符号对患者病情主诉信息进行粗分词,然后利用中文分词工具jieba结合自定义疾病症状词库进行细分词,得到病情主诉单词集合;所述不同符号包括:逗号、冒号、分号、&、百分号、等号和空格中的任意一种或几种;所述自定义疾病症状词库,为从医疗网站获取的疾病症状词进行构建的词库;所述分词工具jieba与疾病症状词库结合方式为,分词工具jieba提供行业领域词库接口,将自定义的疾病症状词库添加,保证患者病情主诉信息中专业的疾病、症状术语不会被错误分开;所述步骤(3)具体操作为:以word2vec算法来训练语言模型,输入为改写后的问句,输出为词表大小的向量,向量每一维度的值是基于当前输入词预测下一个词输入的概率;获取的医疗网站上患者的问答数据作为模型的训练数据集;设置模型的参数,包括训练次数、词向量的维度;得到每个词的词向量之后,生成句子向量的表示,根据步骤(2)得到单词集合,设单词数目记为n,得到每个词语的词向量表示,设定义词向量分别为[v1,v2,v3,

,vn],设句向量为s,则可得到句向量表示为;;其中v
n
代表向量的每一维的数值,
所述步骤(4)采用深度学习算法或基于词典的规则匹配算法、基于模板的匹配算法中的任意一种;所述步骤(5)从医疗网站的知识库爬取专业的疾病症状表述词和相应的同义词,将相同的词进行去重,含义相同但表述不同的词采用python的中文近义词工具包synonyms来进行同义合并,形成疾病症状知识库;将步骤(4)抽取的实体词作为标准表述词的进行保留,其余非标准词采用相似度计算方法与知识库中的标准词进行计算,获取相似度最高的标准词表述词;所述步骤(6)根据医疗垂直领域的相关知识,采用穷举法定义不同咨询疑问类型的特征词库,采用字符串匹配算法对患者问句进行匹配,获取患者意图类型;所述步骤(8)包括数据收集阶段、定义实体关系以及知识图谱构建,所述数据收集阶段通过医疗网站、百度百科、权威医疗机构、研究单位公开的的病历评测数据以及医疗书籍数据源进行收集;所述知识图谱构建以实体作为图谱的节点,以实体关系作为图谱中实体连接边,采用neo4j图数据库来进行图谱存储知识图谱;所述步骤(9)将步骤(7)获得的患者问句解析结果转换为neo4j图数据库的查询语言,使用cypher的match语句在neo4j存储的图谱中匹配查找,根据查询返回的数据组装形成答案返回给患者。
[0009]
作为优选,所述卷积层的卷积核维度为2*2、3*3、4*4三种不同维度大小的卷积核,每种维度卷积核数量为128个;所述输出层采用softmax、sigmoid、svm中的任意一种分类算法作为进行分类器;softmax计算公式为 ,其中p
i
为每个科室类别的预测概率值,e
j
为softmax层输出向量的每一维度的值。
[0010]
作为优选,所述步骤(4)中深度学习算法为序列标注模型bilstm

crf,所述模型的输入为句向量表示的患者咨询问句,输出为句子的标注结果;模型的第一层输入层以咨询问句的向量表示,模型的第二层采用双向的lstm神经网络提取问句的时序特征,数据量过大或出现效率过慢问题,采用lstm网络的变体代替;所述模型的第三层输出层为条件随机场层,以lstm提取的特征作为观测序列,输出最大的状态序列;根据输出的状态序列,按照完整的实体bio规则提取出实体及对应的实体类型。
[0011]
作为优选,所述步骤(5)中相似度计算方法采用word2vec、余弦相似度计算、tf

idf算法中的任意一种;所述步骤(6)采用python的ahocorasick包、正向或者反向最大匹配算法中的任意一种实现字符串的匹配。
[0012]
与现有技术相比,本发明的优点和积极效果在于:可以有效解决患者对自身病情表述不专业,医疗系统无法识别的痛点,通过精准识别患者问询意图,针对患者病症,采用自构建的知识图谱给出患者推荐药品、视频及治疗等。
附图说明
[0013]
图1为本发明在线医疗问答处理过程的示意图。
具体实施方式
[0014]
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合具体实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
[0015]
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开说明书的具体实施例的限制。
[0016]
实施例1本实施例提供在线医疗问答方法的具体步骤,如图1所示:1.预处理,用于接收患者的问题,对患者问题进行长难句压缩处理,获取改写后的问句1.1对患者输入的医疗咨询问句进行长难句压缩处理,所述长难句即是患者输入的句子比较复杂且含有较多与医疗无关的口水话语句,将长问句通过标点进行分割成若干个短句;1.2训练文本分类模型,对分割成的短句进行二分类,即类别一为与医疗相关的句子,类别二为与医疗无关的口水话语句;可选地,可以利用textcnn神经网络对分割后的短句做二分类,该网络的输入是问句的向量化表示,输出是问句所属的类别,下面进行具体说明;1.2.1模型第一层为输入层,此步骤需要用到步骤3构建的神经语言模型,将患者问句转换为embedding词向量,故步骤3训练神经语言模型为预先实施的,下面会详细说明实施步骤;从各大医疗网站如春雨医生、好大夫在线等采集医疗问答数据,作为textcnn文本分类模型的数据集,比如采集的数据集一共十万条,其中将与医疗相关的问句打标签为1,与医疗无关的口水话语句打标签为0,并按照7:3的比例将数据集分为训练集和测试集,将训练集数据转化为embedding词向量后作为textcnn模型训练的输入,即神经网络模型的第一层;1.2.2模型第二层为卷积层,通过卷积操作提取输入层句子向量的特征,每个卷积核都输出一个一维特征向量;可选地,所述卷积层的卷积核维度可以为2*2、3*3、4*4三种不同维度大小的卷积核,每种卷积核数量可以为128个;1.2.3模型第三层为池化层,该层对卷积层输出的句子特征向量做池化操作,该操作是对句子做更加抽象的特征提取;可选地,可以做最大池化操作,即取每个特征向量的最大值,然后将所有特征向量取最大值后进行拼接,输出一个一维特征向量;1.2.4模型最后一层为输出层;可选地,可以采用softmax分类器作为输出层,此分类器将问句对应每个类别的概率映射到(0,1)之间,从而根据最大概率确定问句所属的类别,除了softmax之外,还可以采用sigmoid、svm分类算法等作为输出层的分类器;所述softmax层的计算方式为
(1)其中p
i
为每个科室类别的预测概率值,e
j
为softmax层输出向量的每一维度的值;用于计算对于科室预测推荐的概率。
[0017]
1.2.5设置模型的参数,包括训练次数和学习率;所述模型训练次数为将整个训练集进行输入后的迭代计算次数;所述学习率为在模型进行参数更新时所采用的梯度下降算法(求微分)中计算系数。
[0018]
1.2.6将当前患者的问句分割后的短句分别输入到构建的textcnn神经网络模型,获得短句所属的类别,去除类别为0的短句,保留与医疗相关的问句,即完成了将长句压缩为只与医疗相关的短句;需要注意的是,在步骤1.2.6实施过程中,需要结合医疗领域的关键词典(步骤8

1中的疾病知识库),确保问句中的关键词被保留。
[0019]
2.对患者问句进行分词处理,分割成单词集合;2.1对步骤(1)处理后得到的患者问句进行分词处理,首先利用特殊符号对患者病情主诉信息进行粗分词,然后利用中文分词工具jieba结合自定义疾病症状词库进行细分词,得到病情主诉单词集合;所述特殊符号,包括:逗号、冒号、分号、&、百分号、等号和空格;所述自定义疾病症状词库,是从专业的医疗网站获取的疾病症状词构建的词库;医疗网站包括:好大夫、春雨医生、快速问医生、99健康网,及百度百科、一些网络公开的疾病症状资料。
[0020]
所述jieba分词工具与疾病症状词库结合方式,jieba分词工具提供行业领域词库接口,将自定义的疾病症状词库添加,保证患者病情主诉信息中专业的疾病、症状术语不会被错误分开。
[0021]
3.根据预先训练的神经语言模型,将患者问句分割成的单词集合进行向量化处理,并进一步将句子进行向量化;3.1可选地,以word2vec算法来训练语言模型;所述word2vec是一个单隐层的神经网络,该神经网络模型输入为患者询问的句子,输出维度为词表大小的向量,向量每一维度的值是预测当前输入词的下一个词的概率;3.2与步骤1.2.1类似,以获取的医疗网站上患者的问答数据作为模型的训练数据集,这里所采用的数据是经过清洗后的原始文本数据;所述清洗方式,可选地,构建停用词表,去除句子中的停用词,如“你好”、“我”等词;3.3设置模型的参数,包括训练次数、词向量的维度;可选地,设置词向量维度为300维,向量维度可以根据数据的大小来定,也可以为50维、200维等;3.4得到每个词的词向量之后,生成句子向量的表示;所述句子向量表示方法,采用词语的加和平均法对患者咨询问句进行句向量表示,得到句向量的维度同样为300维;
所述加和平均法,首先根据步骤2得到患者问句分词后的单词集合,设词语数目为n,得到每个词语的词向量表示,设词向量分别为[v1,v2,v3,

,v
n
],设句向量为s,则可得到句向量表示为,其中v
n
代表向量的每一维的数值,采用句向量表示的方法对患者问句进行数值化表示,用于本文病症实体识别模型的输入。
[0022]
4.利用步骤3将患者问句进行向量化处理,作为预先构建的病症实体识别模型的输入,从所述患者问句中抽取出与疾病症状相关的实体词;4.1可选地,采用深度学习算法抽取实体,除此之外,还可以采用基于词典的规则匹配算法、基于模板的匹配算法等;在本发明中,所述深度学习算法为序列标注模型bilstm

crf,模型的输入为句向量表示的患者咨询问句,输出为句子的标注结果,标注类型为疾病、症状、身体部位;可选地,可以采用bio三元组的标注方式进行实体标注,例如,句子“我有高血压,最近感觉到胸闷”,在此问句中可以抽取出“高血压”和“胸闷”等实体词,输出的标注结果为(“我”:o,“有”:o,“高”:disease

b,“血”:disease

i,“压”:disease

i,“最”:o,“近”:o,“感”:o,“觉”:o,“到”:o,“胸”:symptom

b,“闷”:symptom

i),其中disease

b表示疾病的首字,disease

i表示疾病的非首字,字母o表示非实体字,bio三元组方式为本发明中所采用的方式,除此之外还可以采用biose五元组的标注方式;下面步骤具体说明模型的构建方法;4.2模型的输入层同步骤1.2.1相同,以咨询问句的向量表示作为输入,模型的第二层采用双向的lstm神经网络提取问句的时序特征,此方法的优势是可以用于捕捉句子过去和未来的语义特征,ltsm网络单元的个数可以根据需要进行灵活设置;可选地,如果数据量过大或者出现效率过慢等问题,可以采用lstm网络的变体如双向门控循环网络bigru来代替lstm;4.3模型的第三层即输出层为条件随机场(crf)层,目的是以lstm提取的特征作为观测序列,输出最大的状态序列,即所需的标注序列;4.4根据输出的标注结果,按照完整的实体bio规则提取出实体及对应的实体类型。
[0023]
4.5根据构建的同义词映射表将抽取的疾病症状实体词转为相应的标准词;目的是根据预先建立的标准知识库将步骤4抽取出的实体转换为标准词,其中知识库包括疾病症状的专业表述词与相应的同义词,具体步骤包括:5.1从各大医疗网站的知识库爬取专业的疾病症状表述词和相应的同义词,医疗网站有春雨医生、好大夫、39健康网等网站,比如获取的疾病词“肺炎”,其同义词包括“下呼吸道感染”、“肺部感染性疾病”等;5.2爬取的专业知识融合,由于同时从不同源网站获取专业的疾病症状等知识,会存在重复、义原相同但表述不同等问题,故将相同的词进行去重,义原相同但表述不同的词采用如python的中文近义词工具包synonyms来进行同义合并,进而形成可用的疾病症状知识库;5.3将步骤4抽取的实体词为标准表述词的进行保留,非标准词采用相似度计算方
法与知识库中的标准词进行计算,获取相似度最高的标准表述词;所述相似度计算方法可以采用word2vec的相似度计算,可选地,还可以采用余弦相似度计算、tf

idf算法等;5.4经过以上步骤处理可获取患者问询语句中的标准疾病症状实体词。
[0024]
6.根据构建的医疗垂直领域不同疑问类型的特征词库识别出患者意图类型;目的是识别患者咨询意图类型,意图类型可以为“疾病相关症状咨询”、“疾病用药咨询”,“宜吃/忌吃食物咨询”,“预防咨询”等,具体步骤包括:6.1因为医疗问答领域是相对专业的领域,患者的咨询都是以疾病症状为中心而展开的信息咨询,具有知识局限性等特点,因此可以根据医疗垂直领域的相关知识,采用穷举法定义不同咨询类型的特征词库,比如定义“症状”意图的问询特征词库[“症状”,“表征”,“现象”,“表现”,“反应”,“症候
”…
],定义“病症原因”意图的问询特征词库[“如何导致”,“原因”,“成因”,“为什么”,“怎么会”,“会导致
”…
]等;6.2根据定义的问询类型特征词库,采用字符串匹配算法对患者问句进行匹配,获取患者意图类型;可选地,可以采用python的ahocorasick包来实现字符串的匹配,其实质是结合了trie算法和aho

corasick自动机,通过kmp算法完成多模式串的匹配,除此之外,还可以采用正向或者反向最大匹配等算法。
[0025]
7.根据疾病症状标准词和患者意图类型生成问句解析结果;目的是结合步骤5识别的实体和步骤6获取的患者意图类型,解析患者的咨询问句,比如患者问句为“我有高血压,请问有什么可以推荐的食物吗”,通过步骤5可以抽取实体“高血压”,通过步骤6可以获取患者意图类型为“宜吃食物”,由此生成解析结果为[“高血压”,“宜吃食物”],即为患者搜索疾病高血压宜吃的食物,由此进入步骤8。
[0026]
8.根据预先构建的医疗疾病知识库构建知识图谱;目的是构建医疗知识图谱,用于根据解析的患者问句结果来搜索答案,具体步骤为:8.1数据收集阶段。可以从各大医疗网站、百度百科、权威医疗机构、研究单位公开的的病历评测数据以及医疗书籍等数据源收集数据,在该步骤需要同时获取数据之间的关系实体,以作为构建知识图谱的实体连接,比如在寻医问药网站的疾病百科中,疾病页面下会有相关的疾病知识,以乙肝为例,在该疾病页面下还有病因、预防、并发症、症状、检查项目、易感人群、药品等知识统计,在获取数据时将这些关系实体与当前疾病实体一并获取并存储到数据库中;8.2定义实体关系。知识图谱由实体和实体关系组成,每个实体有各自的属性,通过步骤(8

1)获取的实体数据来定义实体关系,比如疾病实体“乙肝”和科室实体“感染性内科”之间的关系为“属于”,即疾病乙肝可以到感染性内科治疗,“乙肝”和“支持性治疗”之间的关系为“治疗方式”,即疾病乙肝可以采用支持性治疗的方式进行诊治;8.3知识图谱构建。根据步骤8.1获取的实体和步骤8.2定义的实体关系,以实体作为图谱的节点,以实体关系作为图谱中实体连接边,可以采用neo4j图数据库来存储知识图谱。
[0027]
9.将问句解析结果转换成相应的查询语句,根据知识图谱查询相应的答案。
[0028]
具体实施过程为:
将步骤7获得的患者问句解析结果转换为neo4j图数据库的查询语言,此处使用cypher的match语句去neo4j存储的图谱中匹配查找,根据查询返回的数据组装成答案返回给患者,例如患者问句“高血压可以吃什么药”,返回答案“高血压建议使用的药品包括:吲达帕胺滴丸、苯磺酸氨氯地平胶囊”;需要特别说明的是,在患者进行首轮询问之后,可能在接下来的问句中患者会忽略想问的中心实体,比如患者首轮询问“我有高血压病,最近常常感到胸闷心慌,请问我在日常饮食中应该注意吃什么食物比较好”,问答系统在返回给患者建议吃的食物之后,患者可能会继续询问“那有什么忌口吗”,可知患者其实是想问“高血压有什么忌口吗”,此时应做指代消解处理,第二轮询问中的“那”实际是指代“高血压”这个实体,即将问句改写为“高血压有什么忌口吗”,然后再进行第二轮问句处理,可选地,可以将首轮询问中的实体保存在内存中,如果没有从第二轮询问语句中抽取出新的实体,则进行指代消解的处理,如果抽取出新的实体,则不做处理直接进行第二轮的问答。
[0029]
部分术语说明和解释:1>长问句位置在步骤1.1,此处长问句(长难句)是指患者问句比较口语化,且较长,不便于程序处理,故采用压缩处理,对超出数量阈值(程序设置即可,目前采用25字为阈值)的问句,根据标点符号进行分割成若干个短句,步骤1.2中会对分割后的短句进行分类,对于与医疗无关的口水话短句进行删除,对于含有患者疾病等内容的短句进行保留,进而最终形成压缩后的患者问句。
[0030]
2>卷积操作位置在步骤1.2.2,为数学运算,计算过程为通过一个卷积层(1*n维的向量)与输入层的向量(患者问句向量化),从上往下,按照卷积层的长度进行移动,输入层的每一维与卷积层的对应维度做乘法运算,并对各维度相乘运算后的结果做加和处理得到卷积值,移动完整个输入层即得到一个卷机值组成的向量(此处表述为特征向量)。
[0031]
3>拼接在步骤1.2.3,是指对每一个1*1的数值,进行拼接成1个1*n维的向量。数学化表示为:[x1,x2,x3

xn],每一个xn即为池化计算的1*1的数值。
[0032]
4>神经语言模型:该模型是以google团队于2013年发布的word2vec算法作为训练模型,(1)步骤3中该模型的作用是将患者问句进行向量化,以便计算机程序能够处理,同时作为下一步的输入。(2)该模型为单隐层神经网络结构,从形式上理解为输入层、隐含层和输出层,其中输入层为患者中文问句的数值化后的高维向量,隐含层为多个神经元排列,每个神经元的作用为输出值与输入值之间的微分运算,举例:如设置100次迭代计算,则会通过100次求导来计算出一个参数值,该参数值与输入向量相乘得到输出层的数值输出,输出层亦为一个高维向量,维度与第(3)点中所述词表的大小代表的维度,该向量即为表示患者问句的数值向量。(3)模型训练中所用词表来源:步骤1
‑2‑
1中所述本人从各大医疗网站如春雨医生、好大夫在线等采集的在线患者咨询数据作为数据集,对每条数据按照中文分词工具jieba分词(复用已有工具)进行分词、去重后得到的词表,该词表作用按照1

n排序标号,对于患者输入问句,即可按照词表位置进行数值化转换。
[0033]
5>特征词库
位置在步骤6,可通过以下两部分进行构建:(1)好大夫等医疗网站中的疾病知识库;(2)后述1
‑2‑
1中所述数据集中,根据现有医疗知识所摘录的疾病问询及疾病专业术语。两者结合构建特征词库,词库内容为:“症状”、“表征”、“反应”等。每个词称为特征词,该词库作用为匹配出患者问句中的特征词,以便程序处理能够输出患者的问询意图,其中匹配方式为字符串匹配法,在步骤6

2中有详细说明。
[0034]
6>疾病医疗知识库位置在步骤8,可通过下述方式构建:如步骤8

1中所述,从各大医疗网站(春雨医生、好大夫等)、百度百科等采用网络爬虫(python语言实现)、手工记录等方式存储的疾病、症状专业术语作为待用知识库。
[0035]
本实施例中未特殊说明之处,均采用计算机领域常用的模型或算法实现。
[0036]
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例应用于其它领域,但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献