一种语句归类方法及装置
技术领域
本申请涉及大数据领域,尤其涉及一种语句归类方法及装置。
背景技术
电子病历(Electronic Medical Record,简称EMR)是基于计算机的病人记录(Computer-Based Patient Record,简称CPR),它是用电子设备保存、管理、传输和重现的数字化的病人的医疗记录。电子病历的普及极大地方便了医生了解、跟进病人的详细情况以及基于病历统计分析的临床决策等功能的实现。由于临床决策等功能的实现都是以结构化数据为依据的,但是电子病历是由结构化和非结构化数据共同组成,且其中绝大多数非常重要的信息都是以非结构化的形式保存的(如入院记录中的现病史、主诉等)。因此,充分利用电子病历的信息的前提是将非结构化数据进行结构化提取,而提取准确的结构化信息的前提是将书写不规范的病历规范化。
常见的书写不规范的病历,是将多个属性的信息,用多个子句的形式,放在一句话里描述。例如,“肠鸣音正常,4次/分,双下肢轻度可凹性浮肿。”在这句话中一共包括三个子句,其中前两个子句“肠鸣音正常,4次/分”描述的是腹部的特征,而第三个子句“双下肢轻度可凹性浮肿”描述的是四肢的特征,这两个不同部位放在一句话中描述,在结构化提取过程中会出现差错,正确的做法应该是将描述这两个部位的特征分开提取,即将前两个子句一起提取,第三个子句单独提取。所以如何将一句话包括的多个子句进行归类,以便能够准确的进行结构化的提取是目前需要解决的问题。
发明内容
有鉴于此,本申请实施例的主要目的在于提供一种语句归类方法及装置,能够提高结构化提取的准确性,使得能够对一句话中的多个子句进行准确地结构化提取。
第一方面,本申请提供了一种语句归类方法,所述方法包括:
获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句;
对所述若干个子句进行分词,得到每一个子句的分词结果;
根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,所述属性词语概率表体现各个词语分别表达不同属性的概率;
基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性;
若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。
可选的,所述基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性,包括:
针对所述每一个子句,将该子句属于各个属性的概率由高到低进行排名,得到该子句的概率排名;
确定所述概率排名中的前N个属性,并将所述前N个属性作为该子句的待定属性;其中,N为正整数。
可选的,若所述若干个子句包括第一子句,且所述第一子句的待定属性包括第一待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高;
若所述若干个子句还包括第二子句,且所述第一子句和所述第二子句相邻,以及所述第二子句的位置在所述第一子句之前,则所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类,包括:
若所述当前待定属性与所述第二子句的属性一致,则将所述第一子句和所述第二子句归为一类;
确定所述当前待定属性为所述第一子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句和第三子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第二子句的位置在所述第一子句之前以及所述第一子句的位置在所述第三子句之前;则所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类,包括:
若所述当前待定属性与所述第二子句的属性不一致,而所述当前待定属性与所述第二待定属性一致,则将所述第一子句和所述第三子句归为一类;
确定所述当前待定属性为所述第一子句的属性;
确定所述第二待定属性为所述第三子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类,包括:
若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,而所述第二待定属性与所述第四子句的待定属性一致,则将所述第一子句归为一类,将所述第三子句和所述第四子句归为一类;
确定所述第一待定属性为所述第一子句的属性;
确定所述第二待定属性为所述第三子句的属性;
确定所述第四子句的待定属性为所述第四子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类,包括:
若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,所述第二待定属性与所述第四子句的待定属性也不一致,而所述当前待定属性与所述第四子句的待定属性一致,则将所述第一子句、所述第三子句和所述第四子句归为一类;
确定所述当前待定属性为所述第一子句和所述第三子句的属性;
确定所述第四子句的待定属性为所述第四子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性和第三待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第三待定属性在所述第一子句的概率排名中的排名仅次于所述第一待定属性,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类,包括:
若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,所述第二待定属性与所述第四子句的待定属性不一致,且所述当前待定属性与所述第四子句的待定属性也不一致,则继续判断所述当前待定属性是否为所述第三待定属性;
若否,则将所述第三待定属性作为当前待定属性,继续执行所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类的步骤;
若是,则确定所述第一待定属性为所述第一子句的属性。
第二方面,本申请提供了一种语句归类装置,所述装置包括:
文本获取单元,用于获取病历文本;
文本分割单元,用于对所述病历文本中的语句进行分割,得到若干个子句;
子句分词单元,用于对所述若干个子句进行分词,得到每一个子句的分词结果;
概率获取单元,用于根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,所述属性词语概率表体现各个词语分别表达不同属性的概率;
待定属性确定单元,用于基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性;
子句归类单元,用于若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。
可选的,所述待定属性确定单元,包括:
概率排名子单元,用于针对所述每一个子句,将该子句属于各个属性的概率由高到低进行排名,得到该子句的概率排名;
待定属性确定子单元,用于确定所述概率排名中的前N个属性,并将所述前N个属性作为该子句的待定属性;其中,N为正整数。
可选的,若所述若干个子句包括第一子句,且所述第一子句的待定属性包括第一待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高;
若所述若干个子句还包括第二子句,且所述第一子句和所述第二子句相邻,以及所述第二子句的位置在所述第一子句之前,则所述子句归类单元,包括:
第一归类子单元,用于若所述当前待定属性与所述第二子句的属性一致,则将所述第一子句和所述第二子句归为一类;
第一确定子单元,用于确定所述当前待定属性为所述第一子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句和第三子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第二子句的位置在所述第一子句之前以及所述第一子句的位置在所述第三子句之前;则所述子句归类单元,包括:
第二归类子单元,用于若所述当前待定属性与所述第二子句的属性不一致,而所述当前待定属性与所述第二待定属性一致,则将所述第一子句和所述第三子句归为一类;
第二确定子单元,用于确定所述当前待定属性为所述第一子句的属性;
第三确定子单元,用于确定所述第二待定属性为所述第三子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述子句归类单元,包括:
第三归类子单元,用于若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,而所述第二待定属性与所述第四子句的待定属性一致,则将所述第一子句归为一类,将所述第三子句和所述第四子句归为一类;
第四确定子单元,用于确定所述第一待定属性为所述第一子句的属性;
第五确定子单元,用于确定所述第二待定属性为所述第三子句的属性;
第六确定子单元,用于确定所述第四子句的待定属性为所述第四子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述子句归类单元,包括:
第四归类子单元,用于若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,所述第二待定属性与所述第四子句的待定属性也不一致,而所述当前待定属性与所述第四子句的待定属性一致,则将所述第一子句、所述第三子句和所述第四子句归为一类;
第七确定子单元,用于确定所述当前待定属性为所述第一子句和所述第三子句的属性;
第八确定子单元,用于确定所述第四子句的待定属性为所述第四子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性和第三待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第三待定属性在所述第一子句的概率排名中的排名仅次于所述第一待定属性,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;
则所述子句归类单元,还用于若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,所述第二待定属性与所述第四子句的待定属性不一致,且所述当前待定属性与所述第四子句的待定属性也不一致,则继续判断所述当前待定属性是否为所述第三待定属性;若否,则将所述第三待定属性作为当前待定属性,继续执行所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类的步骤;若是,则确定所述第一待定属性为所述第一子句的属性。
本申请中,可以先获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。然后,对所述若干个子句进行分词,得到每一个子句的分词结果。接着,根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,并基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性。若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。可见,当一句话包括多个子句时,可以根据这多个子句之间的位置关系,以及这多个子句的待定属性,确定各个子句的属性;并可以根据各个子句的属性,对这多个子句进行准确地归类,从而可以根据子句的类别,将不同类别的子句分开提取,避免了在结构化提取过程中会出现差错,进而提高了结构化提取的准确性,使得能够对一句话中的多个子句进行准确地结构化提取。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请提供的一示例性应用场景的框架示意图;
图2为本申请提供的一种语句归类方法的流程示意图;
图3为本申请提供的一种语句归类方法的流程示意图;
图4为本申请提供的一种语句归类装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
由于临床决策等功能的实现都是以结构化数据为依据的,但是电子病历是由结构化和非结构化数据共同组成,且其中绝大多数非常重要的信息都是以非结构化的形式保存的(如入院记录中的现病史、主诉等)。因此,充分利用电子病历的信息的前提是将非结构化数据进行结构化提取,而提取准确的结构化信息的前提是将书写不规范的病历规范化。而常见的书写不规范的病历,通常是将多个属性的信息,用多个子句的形式,放在一句话里描述。因此,如何将一句话包括的多个子句进行归类,以便能够准确的进行结构化的提取是目前需要解决的问题。
故此,本申请提供了一种语句归类方法,可以先获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。然后,根据所述若干个子句之间的位置关系,以及所述若干个子句的待定属性,确定每一个子句的属性。接着,可以根据每一个子句的属性,对所述若干个子句进行准确地归类。这样,便可以根据子句的类别,将归类后的多个子句分开提取,避免了在结构化提取过程中会出现差错,进而提高了结构化提取的准确性,使得能够对一句话中的多个子句进行准确地结构化提取。
举例说明,在一种示例性的场景中,本申请实施例可以应用到如图1所示的网络系统中。在该网络系统中,用户可以通过客户端200与服务器100进行交互,以使用服务器100提供的语句归类方法,对用户通过客户端比200输入的病历文本进行处理。具体地,用户可以通过键盘等输入设备将病历文本输入至客户端200,客户端200可以响应于该用户的触发操作向服务器100发送该病历文本。服务器100响应于接收到触发指令,可以获取该病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。然后,服务器100可以对所述若干个子句进行分词,得到每一个子句的分词结果。接着,服务器100可以根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,并基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性。若存在至少两个相邻的且待定属性相同的子句,则服务器100可以将所述至少两个相邻的且待定属性相同的子句归为一类。再后,服务器100可以根据子句的类别,将不同类别的子句分开提取,以避免在结构化提取过程中会出现差错,进而提高结构化提取的准确性。
需要注意的是,上述应用场景仅是为了便于理解本申请而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
接下来,将结合附图说明本申请实施例提供的语句归类方法。
实施例一:
参见图2,该图为本申请实施例一提供的一种语句归类方法的流程图
本实施例提供的语句归类方法包括如下步骤:
S201:获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。
本实施例中的病历文本可以是电子病历,该病历文本中可以包括至少一个语句。该病历文本中的语句可以反映患者的医疗记录,比如病人的主诉、现病史、既病史等信息。
需要说明的是,多个语句之间可以利用句号、分号、感叹号或者问号等标点符号进行区分。并且一个语句中还可以包括多个子句,而同一个语句中的多个子句之间可以利用逗号、顿号或者分号等标点符号进行区分。
在获取到病历文本后,可以对该病历文本中的语句进行分割,例如,当该病历文本中包括多个语句时,可以先利用标点符号(比如句号、分号、感叹号或者问号等)将该多个语句区分,接着,可以针对该多个语句中的每一个语句,利用该语句中的标点符号(比如逗号、顿号或者分号等),将该语句分割为多个子句。
举例说明,病历文本中的一个语句为“神清,双肺呼吸音清,未闻及干湿啰音,叩诊心界不大。”,可以根据该语句中的逗号,将该语句分割为第一子句“神清”、第二子句“双肺呼吸音清”、第三子句“未闻及干湿啰音”、第四子句“叩诊心界不大”等四个子句。
S202:对所述若干个子句进行分词,得到每一个子句的分词结果。
在得到若干个子句后,可以针对所述若干个子句中的每一个子句,对该子句进行分词,得到该子句的分词结果。
继续S201中的例子,对该四个子句分别进行分词,可以得到每个子句的分词结果。具体地,第一子句“神清”的分词结果为“神清”;第二子句“双肺呼吸音清”的分词结果为“双肺”、“呼吸音”和“清”;第三子句“未闻及干湿啰音”的分词结果为“未闻及”和“干湿啰音”;第四子句“叩诊心界不大”的分词结果为“叩诊”、“心界”和“不大”。
S203:根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,所述属性词语概率表体现各个词语分别表达不同属性的概率。
本实施例中,所述属性可以为词语或子句所要表达的内容对应的类别,比如,词语“心律”表达的内容为心跳的节奏,该内容为与心脏相关的内容,所以该词语“心律”的属性为“心脏”,又比如,子句“心律不齐”表达的内容为心跳的节奏超过了一般范围,该内容也为与心脏相关的内容,所以,该子句“心律不齐”的属性也为“心脏”。
在对一个子句进行分词之后,可以先查询属性词语概率表,获取该子句的每一个分词结果对应不同属性的概率。然后,根据每个子句的分词结果对应每一个属性的概率,得到该子句属于各个属性的概率,例如,在一个子句的所有分词结果中,若存在多个分词结果均对应同一个属性,则可以将这多个分词结果分别对应该属性的概率之和作为该子句对应该属性的概率。也就是说,一个子句属于一属性的概率即为该子句中的各个分词结果属于该属性的概率的总和。
需要说明的是,属性词语概率表中的全部词语都是预先确定的,而这些词语均是对于不同的属性具有明显区分能力的词语,为便于描述,可以将这些词语称为特征词。对于特征词的确定可以通过多种方式实现,其中一种方式,可以是利用词语的信息增益确定特征词。其中,信息增益的物理意义是对信息不确定性的减少量的刻画,一个词语的信息增益越大,则说明该词语对于不同属性的区分度越大,反之,则说明该词语对于不同属性的区分度越小。所以,特征词的确定过程即为选取信息增益大于阈值的词语的过程。
其中,所述属性词语概率表中的概率值是在特征词确定的基础上,预先通过统计得到的。并且,一词语表达一属性的概率越高,则说明该词语在子句中所表达的属性为该属性的可能性越大,反之,则说明该词语在子句中所表达的属性为该属性的可能性越小。
需要说明的是,在一种实现方式中,所述属性词语概率表中每一个词语属于每一个属性的概率可以利用词频-逆向文件频率(term frequency–inverse documentfrequency,TF-IDF)值来表示。其中,TF-IDF值是衡量一个词语在一句话或一段话中的重要程度,若一词语对应一属性的TF-IDF值越大,则说明包含该词语的子句所表达的属性为该属性的概率越大,反之,若该词语对应一属性的TF-IDF值越小,则说明包含该词语的子句所表达的属性为该属性的概率也越小。
继续S202中的例子,以第四子句“叩诊心界不大”为例来说明如何确定一个子句属于各个属性的概率。首先,根据属性词语概率表计算第四子句属于各个属性的概率。假设属性词语概率表中的全部属性共有7个,分别为:“头部”、“皮肤”、“颈部”、“心脏”、“肺部”、“腹部”、“四肢”。而第四子句中的分词结果在预先计算得到的属性词语概率表中,只有分词结果“叩诊”和分词结果“心界”。接着,可以利用属性词语概率表,查询得到分词结果“叩诊”属于属性‘肺部’的TF-IDF值为0.23,分词结果“叩诊”属于属性“腹部”的TF-IDF值为0.27,分词结果“叩诊”属于属性“心脏”的TF-IDF值为0.20;而利用属性词语概率表,查询得到分词结果“心界”属于属性“心脏”的TF-IDF值为0.38,分词结果“心界”属于属性“肺部”的TF-IDF值为0.01,分词结果“心界”属于属性“腹部”的TF-IDF值为0.001。则可以将分词结果“叩诊”属于属性‘肺部’的TF-IDF值0.23和分词结果“心界”属于属性“肺部”的TF-IDF值0.01相加,得到第四子句“叩诊心界不大”属于属性“肺部”的概率为0.33;可以将分词结果“叩诊”属于属性“腹部”的TF-IDF值0.27和分词结果“心界”属于属性“腹部”的TF-IDF值0.001相加,得到第四子句“叩诊心界不大”属于属性“腹部”的概率为0.271;可以将分词结果“叩诊”属于属性“心脏”的TF-IDF值0.20和分词结果“心界”属于属性“心脏”的TF-IDF值0.38相加,得到第四子句“叩诊心界不大”属于属性“心脏”的概率为0.58。依次类推,可以得到该子句属于各个属性的全部概率值。需要强调的是,首先,分词结果“叩诊”和分词结果“心界”分别属于7个属性的概率值都存在,由于分词结果“叩诊”和分词结果“心界”属于属性“头部”、“皮肤”、“颈部”和“四肢”的概率值比较低,这里不再一一列举,因此,上述部分中仅罗列了分词结果“叩诊”和分词结果“心界”分别属于属性“肺部”、“心脏”和“腹部”的概率值;其次,分词结果“不大”是不包含在属性词语概率表中的,但是在具体的计算过程中是需要赋予一定的概率值,常用的方法可以直接将分词结果“不大”属于各个属性的概率值赋值为零,当然也可以利用一些其他的方法进行赋值。而上述例子中,将分词结果“不大”属于各个属性的概率值统一赋值为零,从而省略了将分词结果“不大”属于各个属性的概率值与其他分词结果属于各个属性的概率值相加的过程,但是,实际上该过程是存在的。
S204:基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性。
在得到每一个子句属于各个属性的概率后,可以针对每一个子句,根据该子句属于各个属性的概率,从各个属性中确定至少一个属性,并将所述至少一个属性作为该子句的待定属性,以便可以通过后续步骤根据该待定属性,确定该子句的属性。
在一种实现方式中,S204可以包括以下步骤:针对每一个子句,得到该子句属于各个属性的概率后,可以将概率大于阈值的属性作为该子句的待定属性。继续S203中的例子,以第四子句“叩诊心界不大”为例,假设阈值为0.5,由于第四子句“叩诊心界不大”属于属性“心脏”的概率为0.58,该概率0.58大于该阈值0.5,因此,可以将属性“心脏”作为第四子句“叩诊心界不大”的待定属性。
在一种实现方式中,S204可以包括以下步骤:
S204a:针对所述每一个子句,将该子句属于各个属性的概率由高到低进行排名,得到该子句的概率排名;
S204b:确定所述概率排名中的前N个属性,并将所述前N个属性作为该子句的待定属性;其中,N为正整数。
继续S203中的例子,以第四子句“叩诊心界不大”为例,可以将第四子句“叩诊心界不大”分别属于各个属性的概率由高到底进行排名,得到第四子句“叩诊心界不大”的概率排名,在该概率排名中,属性“心脏”排在第一位,属性“肺部”排在第二位,属性“腹部”排在第三位。因此,可以仅将排在第一位的属性“心脏”作为第四子句“叩诊心界不大”的待定属性,也可以将排在前两位的属性“心脏”和属性“肺部”均作为第四子句“叩诊心界不大”的待定属性,需要说明的是,在这里不对每一个子句的待定属性的数量作任何限定。
S205:若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。
在确定每一个子句的待定属性之后,可以根据所述若干个子句之间的位置关系,以及若干个子句的待定属性,将所述若干个子句进行归类。例如,若存在两个子句,该两个子句为相邻的子句,并且,该两个子句的待定属性相同,则可以认为该两个子句的属性是相同的,因此,可以将该两个子句归为一类,并可以将该两个子句的待定属性分别作为各自的属性。
继续S202中的例子,假设每个子句的待定属性仅为一个,且第一子句“神清”的待定属性为“一般情况”、第二子句“双肺呼吸音清”的待定属性为“肺部”、第三子句“未闻及干湿啰音”的待定属性为“肺部”、第四子句“叩诊心界不大”的待定属性为“心脏”。首先,可以判断第一子句的待定属性与其相邻的第二子句的待定属性属否相同,由于第一子句的待定属性与第二子句的待定属性不相同,因此,可以将第一子句归为一类,并且可以确定第一子句的属性为“一般情况”;然后,可以判断第二子句的待定属性与其相邻的第三子句的待定属性属否相同,由于第二子句与第三子句为两个相邻的且待定属性相同的子句,因此,可以将第二子句和第三子句归为一类,并且可以确定第二子句和第三子句的属性均为“肺部”;接着,可以判断第四子句的待定属性与其相邻的第三子句的属性是否相同,由于第四子句的待定属性与第三子句的属性不相同,因此,可以将第四子句归为一类,并且可以确定第四子句的属性为“心脏”。
可见,在本申请实施例中,可以先获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。然后,对所述若干个子句进行分词,得到每一个子句的分词结果。接着,根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,并基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性。若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。这样,当一句话包括多个子句时,可以根据这多个子句之间的位置关系,以及这多个子句的待定属性,确定各个子句的属性;并可以根据各个子句的属性,对这多个子句进行准确地归类,从而可以根据子句的类别,将不同类别的子句分开提取,避免了在结构化提取过程中会出现差错,进而提高了结构化提取的准确性,使得能够对一句话中的多个子句进行准确地结构化提取。
实施例二
与实施例一相比,本实施例重点介绍实施例一中的S205。
参见图3,该图为本申请实施例二提供的一种语句归类方法的流程图。
本实施例提供的语句归类方法包括如下步骤:
S301:获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。
例如,病历文本为“双下肢轻度可凹性浮肿,肠鸣音正常,4次/分,腹软”,可以根据该语句中的逗号,将该语句分割为第二子句“双下肢轻度可凹性浮肿”、第一子句“肠鸣音正常”、第三子句“4次/分”、第四子句“腹软”等四个子句。
S302:对所述若干个子句进行分词,得到每一个子句的分词结果。
S303:根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,所述属性词语概率表体现各个词语分别表达不同属性的概率。
S304:针对所述每一个子句,将该子句属于各个属性的概率由高到低进行排名,得到该子句的概率排名;
S305:确定所述概率排名中的前N个属性,并将所述前N个属性作为该子句的待定属性;其中,N为正整数。
需要说明的是,S301、S302、S303、S304和S305分别与上述实施例一中的S201、S202、S203、S204a与S204b相同,请参见上述实施例一中的相关介绍,在此不再赘述。
S306:判断所述当前待定属性与所述第二子句的属性是否一致;若是,则执行S307,若否,则执行S308。
在本实施例中,所述若干个子句可以包括第一子句和第二子句,且该第一子句和该第二子句相邻,该第二子句的位置在该第一子句之前。其中,该第一子句的待定属性可以包括第一待定属性,该第一待定属性在该第一子句的概率排名中的名次最高,并且可以将该第一待定属性作为当前待定属性。对于第二子句而言,该第二子句的属性已经确认。
具体地,在确定当前待定属性后,可以先利用该当前待定属性和第二子句的属性,判断该当前待定属性对应的第一子句是否可以和第二子句归为一类。
继续S301中的例子,假设第二子句“双下肢轻度可凹性浮肿”的属性已经确定为“四肢”,且第一子句“肠鸣音正常”的第一待定属性为“腹部”,第三子句“4次/分”的待定属性为“心脏”,以及第四子句“腹软”的待定属性为“腹部”。将第一子句“肠鸣音正常”的第一待定属性为“腹部”作为当前待定属性,并判断当前待定属性“腹部”与第二子句的属性“四肢”是否一致。
S307:将所述第一子句和所述第二子句归为一类,并确定所述当前待定属性为所述第一子句的属性。
若判定当前待定属性与第二子句的属性一致,则可以认为该当前待定属性和该第二子句的属性相同,可以将该第一子句和该第二子句归为一类,并且可以将该当前待定属性作为该第一子句的属性。
S308:判断所述当前待定属性与所述第二待定属性是否一致;若是,则执行S309,若否,则执行S310。
由于所述若干个子句还可以包括第三子句,且该第一子句和该第三子句相邻,该第一子句的位置在该第三子句之前。其中,该第三子句的待定属性可以包括第二待定属性,该第二待定属性在该第三子句的概率排名中的名次最高。
因此,在判定当前待定属性与第二子句的属性不一致后,可以先利用该当前待定属性和第三子句的第二待定属性,判断该当前待定属性对应的第一子句是否可以和第三子句归为一类。
继续S306中的例子,由于当前待定属性“腹部”与第二子句的属性“四肢”不一致。因此,可以将第三子句“4次/分”的待定属性“心脏”(即第二待定属性),与当前待定属性“腹部”进行比较,判断两者是否一致。
S309:将所述第一子句和所述第三子句归为一类,并确定所述当前待定属性为所述第一子句的属性,以及确定所述第二待定属性为所述第三子句的属性。
若判定当前待定属性与第三子句的第二待定属性一致,则可以认为该当前待定属性对应的第一子句和该第三子句的第二待定属性相同,可以将该第一子句和该第三子句归为一类,并且可以将该当前待定属性作为该第一子句的属性,以及将该第二待定属性作为该第三子句的属性。
S310:判断所述第二待定属性与所述第四子句的待定属性是否一致;若是,则执行S311,若否,则执行S312。
由于所述若干个子句还可以包括第四子句,且该第四子句和该第三子句相邻,该第三子句的位置在该第四子句之前。
因此,在判定当前待定属性与第三子句的第二待定属性不一致后,可以利用该第三子句的第二待定属性和第四子句的待定属性,判断该第三子句是否可以和第四子句归为一类。
继续S308中的例子,由于当前待定属性“腹部”与第三子句“4次/分”的第二待定属性“心脏”不一致。因此,可以判断第三子句“4次/分”的第二待定属性“心脏”与第四子句“腹软”的待定属性“腹部”是否一致。
S311:将所述第一子句归为一类,将所述第三子句和所述第四子句归为一类,并确定所述当前待定属性为所述第一子句的属性,确定所述第二待定属性为所述第三子句的属性,以及确定所述第四子句的待定属性为所述第四子句的属性。
若判定第三子句的第二待定属性与第四子句的待定属性一致,则可以认为该第三子句和该第四子句的待定属性相同,并可以将该第三子句和该第四子句归为一类,而将第一子句归为一类。并且,可以将该当前待定属性作为该第一子句,将该第三子句的第二待定属性作为该第三子句的属性,以及将该第四子句的待定属性作为该第四子句的属性。
S312:判断所述当前待定属性与所述第四子句的待定属是否一致;若是,则执行S313,若否,则执行S314。
若判定第三子句的第二待定属性与第四子句的待定属性不一致,则可以认为该第三子句与该第四子句不能归为一类。
具体地,在判定第三子句的第二待定属性与第四子句的待定属性不一致后,可以利用该当前待定属性和第四子句的待定属性,判断该当前待定属性对应的第一子句是否可以和该第四子句归为一类。
继续S310中的例子,由于第三子句“4次/分”的第二待定属性“心脏”与第四子句“腹软”的待定属性“腹部”不一致。因此,可以判断当前待定属性“腹部”与第四子句“腹软”的待定属性“腹部”是否一致。
S313:将所述第一子句、所述第三子句和所述第四子句归为一类,并确定所述当前待定属性为所述第一子句和所述第三子句的属性,以及确定所述第四子句的待定属性为所述第四子句的属性。
若判定当前待定属性与第四子句的待定属性一致,则可以认为该当前待定属性对应的第一子句和该第四子句的待定属性相同。由于该第一子句和该第四子句均与第三子句相邻,且该第一子句和该第四子句的待定属性相同,所以,可以认为该第三子句的属性可以与该第一子句、第四子句的待定属性也都相同。
因此,在判定当前待定属性与第四子句的待定属性一致后,可以将第一子句、第三子句和第四子句归为一类,并且可以将该当前待定属性作为该第一子句和该第三子句的属性,以及将该第四子句的待定属性作为该第四子句的属性。
继续S312中的例子,由于当前待定属性“腹部”与第四子句“腹软”的待定属性“腹部”一致。因此,将第一子句“肠鸣音正常”、第三子句“4次/分”和第四子句“腹软”归为一类,并确定当前待定属性“腹部”为第一子句“肠鸣音正常”和第三子句“4次/分”的属性,以及确定第四子句“腹软”的待定属性“腹部”为第四子句“腹软”的属性。
S314:判断所述当前待定属性是否为所述第三待定属性;若否,则执行S315,若是,则执行S316。
由于第一子句的待定属性还可以包括第三待定属性,其中,该第三待定属性在该第一子句的概率排名中的排名仅次于第一待定属性。
因此,在判定当前待定属性与第四子句的待定属性不一致后,可以判断该当前待定属性是否为第三待定属性。
S315:将所述第三待定属性作为当前待定属性,并继续执行S306。
若判定当前待定属性为第一待定属性,而并非第三待定属性时,则可以将第三待定属性作为当前待定属性,并继续执行所述判断所述当前待定属性与所述第二子句的属性是否一致的步骤(即S306)。
S316:确定所述第一待定属性为所述第一子句的属性。
若判定当前待定属性为第三待定属性时,则说明第一子句与其它子句均不能归为一类。因此,可以将第一子句的概率排名中名次最高的待定属性作为该第一子句的属性,即可以将第一待定属性作为该第一子句的属性。
接着,可以对第三子句进行归类,例如可以将该第三子句的第二待定属性作为当前待定属性,并继续执行S306。需要说明的是,第三子句还可以包括第四待定属性,该第四待定属性在该第三子句的概率排名中的排名仅次于第二待定属性。
由于第三子句的第二待定属性在上述步骤中,已经与其它子句的待定属性进行比较。因此,为了减少语句归类过程中的计算量,在一种实现方式中,可以将第三子句的第四待定属性作为当前待定属性,并继续执行S306。
可见,在本申请实施例中,可以先获取病历文本,并对所述病历文本中的语句进行分割,得到若干个子句。然后,对所述若干个子句进行分词,得到每一个子句的分词结果。接着,根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,并基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性。若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。这样,当一句话包括多个子句时,可以根据这多个子句之间的位置关系,以及这多个子句的待定属性,确定各个子句的属性;并可以根据各个子句的属性,对这多个子句进行准确地归类,从而可以根据子句的类别,将不同类别的子句分开提取,避免了在结构化提取过程中会出现差错,进而提高了结构化提取的准确性,使得能够对一句话中的多个子句进行准确地结构化提取。
基于以上实施例提供的一种语句归类方法,本申请实施例还提供了一种语句归类装置,下面结合附图4来详细说明其工作原理。
实施例三
参见图4,该图为本申请实施例三提供的一种语句归类装置的结构框图。
本实施例提供的语句归类装置包括:
文本获取单元401,用于获取病历文本;
文本分割单元402,用于对所述病历文本中的语句进行分割,得到若干个子句;
子句分词单元403,用于对所述若干个子句进行分词,得到每一个子句的分词结果;
概率获取单元404,用于根据所述每一个子句的分词结果以及属性词语概率表得到每一个子句属于各个属性的概率,所述属性词语概率表体现各个词语分别表达不同属性的概率;
待定属性确定单元405,用于基于所述每一个子句属于各个属性的概率确定每一个子句的待定属性;
子句归类单元406,用于若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类。
可选的,所述待定属性确定单元405,包括:
概率排名子单元,用于针对所述每一个子句,将该子句属于各个属性的概率由高到低进行排名,得到该子句的概率排名;
待定属性确定子单元,用于确定所述概率排名中的前N个属性,并将所述前N个属性作为该子句的待定属性;其中,N为正整数。
可选的,若所述若干个子句包括第一子句,且所述第一子句的待定属性包括第一待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高;
若所述若干个子句还包括第二子句,且所述第一子句和所述第二子句相邻,以及所述第二子句的位置在所述第一子句之前,则所述子句归类单元406,包括:
第一归类子单元,用于若所述当前待定属性与所述第二子句的属性一致,则将所述第一子句和所述第二子句归为一类;
第一确定子单元,用于确定所述当前待定属性为所述第一子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句和第三子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第二子句的位置在所述第一子句之前以及所述第一子句的位置在所述第三子句之前;则所述子句归类单元406,包括:
第二归类子单元,用于若所述当前待定属性与所述第二子句的属性不一致,而所述当前待定属性与所述第二待定属性一致,则将所述第一子句和所述第三子句归为一类;
第二确定子单元,用于确定所述当前待定属性为所述第一子句的属性;
第三确定子单元,用于确定所述第二待定属性为所述第三子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述子句归类单元406,包括:
第三归类子单元,用于若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,而所述第二待定属性与所述第四子句的待定属性一致,则将所述第一子句归为一类,将所述第三子句和所述第四子句归为一类;
第四确定子单元,用于确定所述第一待定属性为所述第一子句的属性;
第五确定子单元,用于确定所述第二待定属性为所述第三子句的属性;
第六确定子单元,用于确定所述第四子句的待定属性为所述第四子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;则所述子句归类单元406,包括:
第四归类子单元,用于若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,所述第二待定属性与所述第四子句的待定属性也不一致,而所述当前待定属性与所述第四子句的待定属性一致,则将所述第一子句、所述第三子句和所述第四子句归为一类;
第七确定子单元,用于确定所述当前待定属性为所述第一子句和所述第三子句的属性;
第八确定子单元,用于确定所述第四子句的待定属性为所述第四子句的属性。
可选的,若所述若干个子句包括第一子句、第二子句、第三子句和第四子句,且所述第一子句的待定属性包括第一待定属性和第三待定属性,所述第三子句的待定属性包括第二待定属性;则将所述第一待定属性作为当前待定属性;其中,所述第一待定属性在所述第一子句的概率排名中的名次最高,所述第三待定属性在所述第一子句的概率排名中的排名仅次于所述第一待定属性,所述第二待定属性在所述第三子句的概率排名中的名次最高;
所述第一子句和所述第二子句相邻、所述第一子句和所述第三子句相邻、所述第三子句和所述第四子句相邻、所述第二子句的位置在所述第一子句之前、所述第一子句的位置在所述第三子句之前以及所述第三子句的位置在所述第四子句之前;
则所述子句归类单元406,还用于若所述当前待定属性与所述第二子句的属性不一致,所述当前待定属性与所述第二待定属性不一致,所述第二待定属性与所述第四子句的待定属性不一致,且所述当前待定属性与所述第四子句的待定属性也不一致,则继续判断所述当前待定属性是否为所述第三待定属性;若否,则将所述第三待定属性作为当前待定属性,继续执行所述若存在至少两个相邻的且待定属性相同的子句,则将所述至少两个相邻的且待定属性相同的子句归为一类的步骤;若是,则确定所述第一待定属性为所述第一子句的属性。
当介绍本申请的各种实施例的元件时,冠词“一”、“一个”、“这个”和“所述”都意图表示有一个或多个元件。词语“包括”、“包含”和“具有”都是包括性的并意味着除了列出的元件之外,还可以有其它元件。
需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。