一种病情描述的智能分析方法及系统与流程

文档序号:11230982阅读:863来源:国知局
一种病情描述的智能分析方法及系统与流程

本发明涉及信息处理技术领域,尤其涉及一种病情描述的智能分析方法及系统。



背景技术:

随着科技的发展,信息处理技术逐渐应用到临床诊断中。临床诊断包含两个问题,诊断决策和诊断导航。

诊断决策的目的是,根据已经收集到的病情描述,判断患者可能罹患的疾病。用公式表达,就是估算条件概率

其中si是第i位患者的病情描述。si是一个向量,包含多种症状、体征、化验指标、检查标志物。di是第i位患者可能罹患各种疾病的概率。di也是一个向量,包含多种疾病。是第i位患者罹患第j种疾病的概率。

诊断导航的目的是,搜集充分的病情描述,帮助医生做出正确的诊断决策。譬如患者自述,咳嗽并发烧。医生了解到这两个症状之后,接下去该做什么?追问其它症状,还是让患者去查体、化验、还是检查?具体追问什么症状,做什么项目,查验什么指标?根据现有病情描述,提示医生后续行动,这就是诊断导航。

诊断导航的结果是诊断路径。诊断路径的终点是一组病情描述。

最佳诊断路径的指标有两个:

1.终点的病情描述的数量,不多不少,正好足以支持医生做出正确的有把握的诊断结果。

2.路径最短,财务成本最低,时间成本最短。用最少的问话、最便宜最省时间的查体、化验和检查项目,收集不多不少的病情描述。

现有技术中缺乏满足上述最佳诊断路径及较高正确率的诊断结果的病情描述的智能分析方法。



技术实现要素:

本发明提供一种病情描述的智能分析方法及系统,能够获得最佳诊断路径及较高正确率的诊断结果。

第一方面提供了一种病情描述的智能分析方法,该方法包括:将患者的至少一项单项病情描述中的每项单项病情描述转换为一个第一数值向量;利用时间循环神经网络(longshort-termmemory,lstm)技术,依次根据至少一个所述第一数值向量中的每个所述第一数值向量生成第二数值向量和输出信息,所述第二数值向量用于表达所述至少一项单项病情描述的综合病情描述;所述输出信息为预测的下一步该做的化验或检查,所述化验或检查的结果作为所述单向病情描述;利用多层感知器(multilayerperceptron,mlp)技术,根据所述第二数值向量,估算所述患者罹患至少一种疾病的概率。

第二方面提供了一种病情描述的智能分析系统,该系统包括:编码模块、导航模块和决策模块;所述编码模块,用于将患者的至少一项单项病情描述中的每项单项病情描述转换为一个第一数值向量;所述导航模块,用于利用lstm技术,依次根据所述编码模块转换的至少一个所述第一数值向量中的每个所述第一数值向量生成第二数值向量和输出信息,所述第二数值向量用于表达所述至少一项单项病情描述的综合病情描述;所述输出信息为预测的下一步该做的化验或检查,所述化验或检查的结果作为所述单向病情描述;所述决策模块,用于利用mlp技术,根据所述导航模块生成的第二数值向量,估算所述患者罹患至少一种疾病的概率。

本发明实施例中,一方面,将患者的至少一项单项病情描述中的每项单项病情描述转换为一个第一数值向量,与传统的把症状描述的自然文本转换为结构化文本的做法相比,采用向量编码技术能够达到与传统结构化相似的效果,并且简单、不易出错。另一方面,利用lstm技术,生成至少一项单项病情描述的综合病情描述以及预测下一步该做的化验或检查,从而能够合并至少一项单项病情描述中的冗余描述,减少后续生成诊断决策时的运算量,并且能够给出最佳诊断路径。再一方面,利用mlp技术,根据综合病情描述,估算所述患者罹患至少一种疾病的概率,能够获得较高正确率的诊断结果。

附图说明

图1为本发明实施例提供的一种病情描述的智能分析方法流程图;

图2为本发明实施例提供的一种病情描述的智能分析系统。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。

图1为本发明实施例提供的一种病情描述的智能分析方法流程图,该方法包括:

步骤101,将患者的至少一项单项病情描述中的每项单项病情描述转换为一个第一数值向量。

在一个示例中,所述单项病情描述包括症状、体征、化验指标和检查标志物中的至少一种。

在一个示例中,步骤101具体包括:将所述患者的至少一项单项病情描述中的每项单项病情描述分别转换为字级别编码向量和词级别编码向量;将所述字级别编码向量和所述词级别编码向量合成所述第一数值向量。

可选地,步骤101之前,该方法还包括:将海量病历作为训练数据,分别训练字级别编码器和词级别编码器,训练完成后得到的结果包括所述字级别编码器的参数和所述词级别编码器的参数以及字典编码表和词汇编码表;步骤101包括:利用所述字级别编码器将所述患者的至少一项单项病情描述中的每项单项病情描述转换为字级别编码向量;以及利用所述词级别编码器将所述患者的至少一项单项病情描述中的每项单项病情描述转换为词级别编码向量。

步骤102,利用时间循环神经网络(longshort-termmemory,lstm)技术,依次根据至少一个所述第一数值向量中的每个所述第一数值向量生成第二数值向量和输出信息,所述第二数值向量用于表达所述至少一项单项病情描述的综合病情描述;所述输出信息为预测的下一步该做的化验或检查,所述化验或检查的结果作为所述单向病情描述。

可选地,步骤102之前,所述方法还包括:将海量病历作为训练数据,同时训练序列模型和诊断模型,训练完成后得到的结果包括:所述序列模型的记忆门、遗忘门、输出门的神经网络模型的参数;所述诊断模型的输入层、输出层中包含的节点的个数,中间层的个数、以及每一个中间层包含的节点的个数;所述诊断模型相邻两层一对一节点之间的连边的权重。

步骤103,利用多层感知器(multilayerperceptron,mlp)技术,根据所述第二数值向量,估算所述患者罹患至少一种疾病的概率。

可选地,把各个科室的若干疾病集合成疾病组,每个疾病组共享一套所述序列模型和所述诊断模型。

本发明实施例中,一方面,将患者的至少一项单项病情描述中的每项单项病情描述转换为一个第一数值向量,与传统的把症状描述的自然文本转换为结构化文本的做法相比,采用向量编码技术能够达到与传统结构化相似的效果,并且简单、不易出错。另一方面,利用lstm技术,生成至少一项单项病情描述的综合病情描述以及预测下一步该做的化验或检查,从而能够合并至少一项单项病情描述中的冗余描述,减少后续生成诊断决策时的运算量,并且能够给出最佳诊断路径。再一方面,利用mlp技术,根据综合病情描述,估算所述患者罹患至少一种疾病的概率,能够获得较高正确率的诊断结果。

图2为本发明实施例提供的一种病情描述的智能分析系统,该系统用于执行本发明实施例提供的病情描述的智能分析方法,该系统包括:编码模块201、导航模块202和决策模块203;

所述编码模块201,用于将患者的至少一项单项病情描述中的每项单项病情描述转换为一个第一数值向量;

所述导航模块202,用于利用lstm技术,依次根据所述编码模块201转换的至少一个所述第一数值向量中的每个所述第一数值向量生成第二数值向量和输出信息,所述第二数值向量用于表达所述至少一项单项病情描述的综合病情描述;所述输出信息为预测的下一步该做的化验或检查,所述化验或检查的结果作为所述单向病情描述;

所述决策模块203,用于利用mlp技术,根据所述导航模块202生成的第二数值向量,估算所述患者罹患至少一种疾病的概率。

在一个示例中,所述单项病情描述包括症状、体征、化验指标和检查标志物中的至少一种。

在一个示例中,所述编码模块201,具体用于:将所述患者的至少一项单项病情描述中的每项单项病情描述分别转换为字级别编码向量和词级别编码向量;将所述字级别编码向量和所述词级别编码向量合成所述第一数值向量。

在一个示例中,所述编码模块201还用于:在所述将所述患者的至少一项单项病情描述中的每项单项病情描述分别转换为字级别编码向量和词级别编码向量之前,将海量病历作为训练数据,分别训练字级别编码器和词级别编码器,训练完成后得到的结果包括所述字级别编码器的参数和所述词级别编码器的参数以及字典编码表和词汇编码表;所述编码模块201具体用于:利用所述字级别编码器将所述患者的至少一项单项病情描述中的每项单项病情描述转换为字级别编码向量;以及利用所述词级别编码器将所述患者的至少一项单项病情描述中的每项单项病情描述转换为词级别编码向量。

在一个示例中,所述导航模块202,还用于在所述利用lstm技术,依次根据至少一个所述第一数值向量中的每个所述第一数值向量生成第二数值向量和输出信息之前,将海量病历作为训练数据,训练序列模型,训练完成后得到的结果包括:所述序列模型的记忆门、遗忘门、输出门的神经网络模型的参数;所述决策模块203,还用于在所述利用lstm技术,依次根据至少一个所述第一数值向量中的每个所述第一数值向量生成第二数值向量和输出信息之前,将海量病历作为训练数据,训练诊断模型,训练完成后得到的结果包括:所述诊断模型的输入层、输出层中包含的节点的个数,中间层的个数、以及每一个中间层包含的节点的个数;所述诊断模型相邻两层一对一节点之间的连边的权重。

在一个示例中,把各个科室的若干疾病集合成疾病组,每个疾病组共享一套所述序列模型和所述诊断模型。

下面通过具体的示例对本发明实施例提供的病情描述的智能分析方法进行说明。

本发明实施例旨在使用深度学习技术,从海量病历中学习人类医生的诊断导航和决策的经验。所谓经验,包括两点:1.各项病情描述,包括症状、体征、化验指标、检查标志物,对于诊断决策的贡献。贡献体现在,各项病情描述与疾病之间的权重,以及多项病情描述的组合与疾病之间的权重。2.如何做最少的或者最便宜的化验和检查,减免不必要的化验和检查。尽快收集到不多不少的病情描述,正好足以支持诊断。譬如有经验的医生,看到食欲好但是体重急剧下降,并且有肿块的患者,会立刻让他去做活检病理检查。

首先,介绍病情描述的编码。

病情描述,包括症状、体征、化验指标、检查标志物。病历中的症状描述,通常出现在主诉、现病史、和病程记录中。症状描述通常是自然文本,譬如“右侧胸痛、咳血丝痰3月余,加重1天”。症状描述的结构,可以细分为实体与属性。在上述例子中,实体有三,分别是“疼痛、咳痰、咯血”。这三个实体都有两个属性,持续时间是3月余,加重时间是1天。

通常地,如果要把症状描述的自然文本转换为结构化文本,传统做法需要做三件事:1.同义词转换,譬如“右侧胸”等同于“右胸”,“痛”等同于“疼痛”。2.拆分,譬如“咳血丝痰”,应该拆分为“咳痰、咯血”。3.关联,譬如“疼痛”与以下属性关联“位置(position)=右胸”、“持续时间(duration)=3月余”、“趋向(trend)=加重”。传统做法不仅繁琐,而且易错。

本发明实施例采用字向量和词向量的编码技术,达到与传统结构化相似的效果。这种方法简单且不易出错。

需要说明的是,本发明实施例中提到的数字仅为举例说明,并不用于对本发明实施例的限定。

1.字向量。

给病历中出现的每一字都设定一个数值向量。每个字的字向量都包含200个数值,每个数值都介于0到1.0之间。

每一个字在200维向量空间中,都是一个点。每个点本身没有明确的语义,但是语义相近的字,相互之间的距离较近。譬如“侧”和“边”的字向量距离较近。

另外,可以用语句中前几个字,预测下一个字。譬如前几个字是“右侧胸”,下一个出现的字,可能是“痛”,也可能是“部”、“疼”等等,但是不太可能是“脚”。

基于海量病历,通过深度学习算法,可以给病历中出现的每一个字,在200维语义空间中,自动找到一个合适的点的位置。所谓合适,不仅让同义字聚类在一起,而且能够根据前几个字的字向量,预测下一个字的字向量。

2.词向量。

词向量与字向量的原理相似,只不过每一个点对应的不是一个字,而是一个词。

对于中文病历,可以预先分词,然后再生成词向量。

给每个字每个词,都做好字向量和词向量以后,把描述症状的自然语句,譬如“右侧胸痛、咳血丝痰3月余,加重1天”,逐字逐字输入字级别编码器,得到的输出是一个向量,不妨设定为2000维。这个向量隐含着语句中每个字的语义。本发明实施例可以采用一个lstm模型,来实现字级别编码器。

然后再把同一个语句,逐词逐词输入词级别编码器,得到的输出是另一个向量,不妨也设定为2000维。这个向量隐含着语句中每个词的语义。本发明实施例可以采用另一个lstm模型,来实现词级别编码器。

遇到训练数据中从未见过的字和词,可以忽略。

这两个2000维的向量,并没有明确表述原句中有哪些实体,每个实体分别有哪些属性。但是对于诊断的决策和导航的智能模型来说,用这两个向量作为输入,就足够表达所有与症状相关的信息了。

下面介绍诊断路径与序列模型。

如前所述,病情描述包括症状、体征、化验指标、检查标志物。其中症状描述和检查描述,是用自然语言表达。而体征和化验指标,是名称和数值的结构体。

每个患者的病情描述,包含的症状、体征、化验指标、检查标志物各不相同。

如果把症状、体征、化验指标、检查标志物,直接作为智能诊断的输入,那么输入项的数量必须是所有症状、体征、化验指标、检查标志物的总数。所有症状、体征、化验指标、检查标志物的总数,超过2万。对于某个具体患者而言,他的病情描述的数量,通常不超过500。

设置诊断模型的输入,一种做法是把所有病情描述,都作为输入项,也就是说,输入项的总数大约为2万。如果某位患者的病情描述只有500项,那么输入项中其余的19500项,全部设置为空。输入项过多,导致模型庞大,需要训练的模型参数众多。需要训练的模型参数众多,意味着需要很多训练数据。多项输入项空置,不仅意味着训练数据难以全面训练模型的所有参数,而且容易造成模型的训练不收敛。

上述做法模型的规模过大,因此需要寻求缩小模型规模的方法,减少输入项的空置。一种办法是给每种单一疾病,各做一个模型。这样单一疾病模型的输入项的数量大大缩小,譬如缩小到1千左右。同时,模型需要训练的参数的总数也相应减少。如果某位患者的病情描述只有500项,那么输入项中被空置的输入项,只有500项左右。大大降低了训练模型时,发生模型过程不收敛的可能性。本发明实施例提议另一个办法,用序列模型作为病情描述的输入端。

本发明实施例可以采用lstm技术来实现序列模型,此外,还可以采用lstm技术来实现字级别编码器和词级别编码器。

1.序列lstm模型的输入是一个维度固定的向量,譬如2000维。

主诉、现病史中的每一句话,可以通过字向量、词向量的转换,转换为2000维的语义向量。检查报告中的每一句检查所见,和检查结论,也可以通过字向量、词向量的转换,转换为2000维的语义向量。每一项查体指标、每一项化验指标,也可以通过字向量、词向量的转换,转换为2000维的语义向量。这样,把病情描述,包括症状、体征、化验指标、检查标志物,按照收集到的时刻,依次输入序列lstm模型。

2.序列lstm模型的隐状态,包含了病情描述的信息。

序列lstm模型内有记忆门和遗忘门,它们的任务是把已经输入的多个语义向量合并。记忆门和遗忘门分别是神经网络,它们的参数通过训练数据来调整优化。每次增添一项新的症状、或者体征、或者化验指标、或者检查标志物,lstm的隐状态更新一次。当某位患者的所有症状、体征、化验指标、和检查标志物,全部依次输入进lstm后,lstm最后的隐状态包含该患者所有的病情描述。lstm的隐状态也是一个维度固定的向量,譬如10000维。

3.序列lstm模型的输出,也是一个维度固定的向量,它预测下一步应该添加哪一项病情描述。

序列lstm模型的训练数据,来自各份病历中的各项病情描述,包括症状、体征、化验指标、和检查标志物。把病历中的各项病情描述,按照录入时刻先后顺序,依次排列成为序列,成为训练数据。把所有病历作为训练数据,用来训练序列模型。确切地说,训练过程就是调整优化序列lstm模型中的三个神经网络的参数,这三个神经网络分别是记忆门、遗忘门和输出门。如上所述,记忆门和遗忘门的任务是,把输入的各项病情描述合并成为总的病情描述。输出门的任务是,预测下一步该追问什么症状、做什么化验和检查。每次增添一项新的症状、或者体征、或者化验指标、或者检查标志物,lstm的输出向量更新一次。lstm的输出也是一个维度固定的向量,譬如2000维。

下面介绍病情描述及其组合与疾病之间的权重。

如前所述,把某位患者所有的症状、查体指标、化验指标、和检查标志物,依次输入lstm后,lstm的最终隐状态向量,包含了该患者所有的病情描述。lstm的最终隐状态向量的维度是固定的,譬如10000维。把这10000维的病情描述向量,输入进诊断模型。诊断模型的输出是可能罹患的疾病及其概率。

本发明实施例可以采用mlp来实现诊断模型。

mlp的系统结构,取决于以下参数。1.输入层的节点个数。2.输出层的节点个数。3.相邻两层的每对节点之间的连边的权重。4.中间层的个数。5.每个中间层的节点个数。

1.输入层的节点个数。

如前所述,如果病情描述是10000维的向量,那么mlp的输入层,就相应有10000个输入节点。

2.输出层的节点个数。

mlp的输出节点,取决于要诊断多少种疾病。

如果用mlp来构造单一疾病的诊断模型,那么mlp的输出层只有一个节点,输出值介于0到1.0之间,输出值的含义是患者罹患该疾病的概率。

如果用mlp来构造单一科室的所有疾病的诊断模型,如果单一科室常见的疾病有100种,那么mlp的输出层有101个节点。第101个节点,表示的是罹患100种常见疾病以外,“其它”疾病的概率。

3.相邻两层的每对节点之间的连边的权重。

如果mlp模型只有两层,输入层和输出层,那么输入层中每个节点,与输出层中每个节点之间,一对一有边相连。这时,输出层每个节点的值,取决于输入层所有节点的值的加权和,权重是输入节点与输出节点之间的连边的权重。换而言之,患者罹患每种疾病的概率,取决于患者各项病情描述的加权和。各项病情描述,包括症状、体征、化验指标、和检查标志物,与某种疾病之间的权重,反应了该项病情描述与该种疾病之间的关联强弱。

mlp包含的众多的边的权重,由训练来确定。训练数据来自于病历数据。每一份病历,就是一个训练数据。每一个训练数据,包括病历描述和诊断结果。如上所述,每一份病历的病情描述,经过字编码、词编码、和序列模型的处理,转换成序列lstm模型的最终隐状态,最终隐状态通常是10000维的数值向量。诊断结果是罹患各种疾病的概率,如果某一种疾病出现在了某一份病历的诊断结果中,那么罹患这个疾病的概率是1.0。没有出现在病历诊断结果中的疾病,它的概率是0。

4.中间层的个数。

中间层的个数,表达的含义是某些输入的病情描述的组合,也就是不可触摸的抽象的病理状态,对诊断结果的影响。譬如,发烧往往由感染引起,而感染也会导致白细胞计数偏高。发烧是一个症状、白细胞计数偏高是一个化验指标。发烧与白细胞计数偏高,这两项病情描述并不相互独立,它们的组合反应了感染这种病理状态。而感染这个不可触摸的病理状态,决定了诊断结果。中间层的个数,反应了需要对病情描述做多少次抽象,抽象成多少层病理状态。不同疾病,需要抽象的病历状态的层数不同。

本发明实施例中,可以预先把相关疾病分成若干疾病组,每一组疾病共用一个诊断mlp模型。每组诊断mlp模型的中间层的个数,根据模型与训练数据的拟合程度决定。而训练数据来自于海量病历数据。

5.每个中间层的节点个数。

每个中间层的节点个数,表达的含义是这一次抽象后,得到的病理状态,有多少种分型。病理状态分型越细,相关中间层的节点个数越多。每个中间层的节点个数,也是根据模型与训练数据的拟合程度来决定。

最后介绍一下模型的训练。

整个系统有以下几个模型构成:1.字向量编码器,用lstm实现。2.词向量编码器,用lstm实现。3.病情描述的序列模型,用lstm实现。4.诊断模型,用mlp实现。

其中,字向量编码器和词向量编码器,分别由两个独立的训练过程来完成。训练数据是海量病历。训练完成后得到的结果,不仅是两个编码器的参数,而且构造了字典编码表和词汇编码表。字典编码表和词汇编码表分别由两列组成,第一列是字或者词,第二列是对应的编码,编码可以是1000维的数值向量。

序列模型和诊断模型的训练,合并在一起完成。训练数据来自于海量病历。每一份病历,经过编码,得到病情描述的数值向量,以及相应的诊断结果。训练完成后得到的结果包括以下内容:1.序列模型的记忆门、遗忘门、输出门的神经网络模型的参数。2.诊断模型的输入层、输出层中包含的节点的个数,中间层的个数、以及每一个中间层包含的节点的个数。3.诊断模型相邻两层一对一节点之间的连边的权重。

为了加快序列模型和诊断模型的训练速度,降低数据使用量,保障训练过程的收敛,本发明实施例中可以把单一科室的多种疾病,组合成若干个疾病组。每组疾病共享一套序列模型和诊断模型。

当模型与病历数据的拟合度趋于稳定,训练过程终止。

与通常的方法相比,本发明实施例中,采用了以下手段:1.用字向量和词向量,对自然文本的病历进行编码,把病历转换为一组数值向量。2.用序列模型,依次输入各项病情描述,避免模型输入项数量的庞大,避免多个输入项出现空值。3.用序列模型的隐状态的数值向量,表达病情描述。4.用序列模型的输出的数值向量,预测下一步该做什么化验和检查,为医生提供临床诊断导航。5.用多层感知器构建诊断模型,把病情描述的数值向量作为输入,估算罹患各种疾病的概率。6.把各个科室的若干疾病集合成疾病组,每个疾病组共享一套序列模型和诊断模型。通过上述手段的结合,能够获得最佳诊断路径及较高正确率的诊断结果。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1