一种基于主题模型和ILP的看病攻略生成方法与流程

文档序号:14838146发布日期:2018-06-30 13:16阅读:1098来源:国知局
一种基于主题模型和ILP的看病攻略生成方法与流程

本发明涉及实体识别、主题模型、自动文本摘要领域,具体涉及一种基于主题模型和ILP的看病攻略生成方法。



背景技术:

互联网+医疗模式正迅速改变着大众访医寻药的方式,越来越多的用户会在医患交流平台和社区发布基于真实看病经历的经验分享内容,与其他用户进行疾病知识和康复经验的探讨交流,但是大量的异源、异构的经验分享数据,尚未进行有效的整理分析和知识挖掘,使得用户难以快速获取想要的医疗知识和看病经验。鉴于上述情况,本专利专注于利用条件随机场模型进行看病经历的实体识别、利用主题模型进行文本筛选、基于ILP优化进行多文档自动摘要,从而为常见慢性病生成看病攻略。



技术实现要素:

本发明的目的是利用条件随机场模型进行看病经历的实体识别,通过攻略模板和包含实体的看病经历进行疾病主题联合建模,从而实现看病经历的筛选,最终通过ILP优化问题求解得到常见慢性病的看病攻略文摘。

本发明的目的是通过以下技术方案来实现的:

本发明首先公开了一种基于主题模型和ILP的看病攻略生成方法,包括以下步骤:

1)利用HTML解析器采集疾病知识,采集用户发布的看病经历数据及其疾病标签,从搜狗词库、中医药主题词典、百度百科获取领域知识词典。

2)利用simhash算法将采集的看病经历数据进行去重后融合入库。

3)利用采集的疾病知识制作疾病的攻略模板,模板包括症状、检查项目、并发症、饮食、运动、医生、药品、中医、治疗技术九大主题版块。

4)基于训练好的条件随机场模型对看病经历数据进行实体识别,识别的实体种类为:症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术。

5)对攻略模板和包含实体的看病经历数据进行联合主题建模,生成主题-词分布和主题-实体分布。

6)利用主题-词分布为步骤3)中提到的每一个主题版块选取最有可能属于该版块的前N篇看病经历。

7)将步骤6)中的看病经历进行分句。

8)利用步骤5)中的主题-词分布和主题实体分布,确定ILP的目标函数和约束条件,通过ILP优化求解得到每个句子是否属于相应主题版块,从而得到每种疾病九大主题版块的看病攻略文摘。

优选的,步骤1)所述的HTML解析器为Java的HTML解析器jsoup。

优选的,步骤1)所述的领域知识词典,具体包括症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术这十一个词典。

优选的,步骤4)所述的基于训练好的条件随机场模型对看病经历数据进行实体识别,具体步骤为:

步骤4-1:随机选取若干看病经历数据

步骤4-2:将步骤4-1中的看病经历数据,进行逐字标记,标记的类型具体为B_sym表示症状实体起始,B_insp表示检查项目实体起始,B_comp表示并发症实体起始,B_food表示食品实体起始,B_sport表示运动实体起始,B_doct表示医生实体起始,B_hosp表示医院实体起始,B_drug表示药品实体起始,B_med表示中草药起始,B_pre表示方剂实体起始,B_thrp表示治疗技术实体起始,I_sym表示症状实体内,I_insp表示检查项目实体内,I_comp表示并发症实体内,I_food表示食品实体内,I_sport表示运动实体内,I_doct表示医生实体内,I_hosp表示医院实体内,I_drug表示药品实体内,I_med表示中草药内,I_pre表示方剂实体内,I_thrp表示治疗技术实体内,O表示不包含在任何实体之中。

步骤4-3:对标记的看病经历数据进行特征提取,特征包括字的上下文特征,以及使用领域知识词典构建的特征,字的上下文特征即为当前字的前后共5个字是否出现,使用领域知识词典构建的特征即为当前字在症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术这十一个词典中出现的频率。

步骤4-4:利用CRF++工具,对标注的看病经历数据进行训练,得到训练好的CRF模型。

步骤4-5:利用步骤4-4中所述的训练好的CRF模型,对所有看病经历数据进行实体识别。

优选的,步骤5)具体为:

(1)生成多项式分布φc~Dir(β')

(2)生成多项式分布ψs~Dir(β)

(3)生成面向版块的主题s对实体的多项式分布ηe~Dir(μ)

(4)对于看病经历库中每一篇看病经历t,生成多项式分布θct~Dir(α)

(5)生成伯努利分布πx~Beta(γ)

(6)生成伯努利分布πy~Beta(γ)

(7)对于每一个疾病c,(c=1,2,...,C)

(一)对于疾病c的攻略模板中的每一个版块s(s=1,2,...,S)

A.对于第n个词语

a.根据伯努利分布πx生成0-1变量xdn

b.如果xdn为1,就根据多项式分布ψs生成dcsn;否则,根据多项式分布φc生成dcsn

(二)对于疾病c的第t个看病经历文本

a.对于每种类别的第n个实体,根据多项式分布θct生成其对应隐变量zen,然后根据多项式分布ηe生成该实体

b.对于第n个普通词,根据伯努利分布πy生成ywn,如果ywn为1,就根据平均分布Uniform(1,...,K)生成zwn,然后根据多项式分布ψs生成wctn;否则,根据多项式分布φc生成wctn

各式中:φc表示面向疾病的主题c对词的多项式分布,Dir(β')表示先验参数为β'的狄利克雷分布;ψs表示面向版块的主题s对词的多项式分布,Dir(β)表示先验参数为β的狄利克雷分布;ηe表示面向版块的主题s对每一类实体的多项式分布,Dir(μ)表示先验参数为μ的狄利克雷分布;θct表示疾病c的看病经历t关于版块主题的多项式分布,Dir(α)表示先验参数为α的狄利克雷分布;πx和πy分别表示攻略模板文本和看病经历文本的伯努利分布,Beta(γ)表示先验参数为γ的beta分布;dcsn表示疾病c的攻略模板s中的第n个词;wctn表示疾病c的看病经历t中的第n个词;xdn、ywn分别表示词dcsn、wctn的0-1隐变量。zwn表示词wctn的隐主题;zen表示实体的隐主题。Uniform(1,...,K)表示主题(1,...,K)的平均分布。

通过吉布斯采样得到面向版块的主题-词分布ψs和面向疾病的主题-词分布φc以及面向版块的主题-实体分布ηe等,计算公式为:

其中,表示当y=1的时候,主题s'赋予词wctn的次数,ny=1,w表示当y=1的时候,赋予了主题s'的词总数。V表示词表大小。表示当y=0的时候,疾病c赋予词wctn的次数,ny=0,w表示当y=0的时候,赋予了疾病c的词总数。表示主题s赋予每一类实体ectn的次数,表示主题s赋予每一类实体的总数,Ne表示每一类实体的总数。

优选的,步骤6)所述的为每一个主题版块选取最有可能属于该版块的前N篇看病经历,选取方法为利用步骤5)中的主题-词分布,计算每篇看病经历属于每一个主题版块的概率,计算公式为:

式中,pcts表示第c种疾病的第t篇看病经历属于第s个主题的概率,pctn表示第c种疾病的第t篇看病经历中的第n个词属于主题s的概率。Nw表示看病经历t中TF-IDF值最大的前若干个词。

将计算所得的概率进行排序,得到概率值最大的若干篇看病经历。

优选的,步骤7)所述的分句方法为基于正则表达式,根据标点符号对看病经历文本进行分句。

优选的,步骤8)所述的通过ILP优化求解,进行看病经历文本摘要的生成。对于步骤7)所得句子,计算句子的主题分布相关性参数,计算公式为:

uj∝Epro(φc)+(1-E)pro(ψs)

其中uj表示第j个句子的主题分布相关性参数,Pro(φt)表示句子由面向疾病的主题-词分布产生的概率,pro(ψs)表示句子由面向版块的主题-词分布产生的概率,E是权衡参数。

对于步骤7)所得句子,计算实体的显著性参数。

将句子中的实体分为A类实体和B类实体,A类实体指的是具有当前主题标签的实体。B类实体指的是不具有当前主题标签的实体。A类实体的显著性参数计算公式为:

其中vk表示第k个A类实体的显著性参数,表示实体由当前主题产生的概率。

B类实体的计算公式如下:

其中vp表示第p个B类实体的显著性参数,表示实体由当前主题产生的概率。

ILP优化的目标函数和约束条件为:

Subject to:λ1+λ2+λ3=1,λ3≥0

其中uj表示第j条语句的主题分布相关性参数,sj∈{0,1}表示第j条语句是否被选取为摘要语句,ek∈{0,1}表示第k个A类实体是否出现在摘要当中,Vk表示第k个A类实体的显著性参数,ep∈{0,1}表示第p个B类实体是否出现在摘要当中,vp表示第p个B类实体的显著性参数,λ1,λ2,λ3分别表示三项权衡系数,lj表示第j条语句的长度,L表示摘要文本的总长度。Okj表示第k个A类实体是否出现在第j个句子当中。Opj表示第p个B类实体是否出现在第j个句子中。

本发明相对于现有技术的有益效果为:

1)提出了一种新的基于实体的疾病主题联合模型,该模型对重要的医疗概念和一般词区别对待。

2)提出了一种基于句子的主题分布相关性和实体的显著性进行ILP优化求解,从而解决多文档自动摘要任务的方法。

3)所采用的方法具有一般性,可广泛应用于专业领域面向主题的多文档自动摘要任务。

4)所采用的的方法可实现文本的实体识别、主题分析以及自动文摘

等多种文本分析与知识挖掘步骤。

附图说明

图1为看病攻略方案的总体框架图。

图2为基于实体的疾病主题联合模型的概率图模型表示。

图3为生成的糖尿病的看病攻略。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。

一种基于主题模型和ILP的看病攻略生成方法,其特征在于包括以下步骤:

1)利用Java的HTML解析器jsoup采集疾病知识,采集用户发布的看病经历数据及其疾病标签,从搜狗词库、中医药主题词典、百度百科获取领域知识词典。具体包括症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术这十一个词典。

2)利用simhash算法将采集的看病经历进行去重后融合入库。去重的步骤包括:计算每一篇看病经历的数字签名,计算每两篇看病经历的数字签名的海明距离,海明距离在3以内的看病经历视为相同或重复,删除相同或重复的看病经历。

3)利用采集的疾病知识制作疾病的攻略模板,模板包括症状、检查项目、并发症、饮食、运动、医生、药品、中医、治疗技术九大主题版块。主题版块的数量可以根据用户需求进行调整。

4)基于训练好的条件随机场模型对看病经历进行实体识别,识别的实体种类为:症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术。训练与识别的具体步骤如下:

步骤4-1:随机选取若干看病经历数据。

步骤4-2:将步骤4-1中的看病经历数据,进行逐字标记,标记的类型具体为B_sym表示症状实体起始,B_insp表示检查项目实体起始,B_comp表示并发症实体起始,B_food表示食品实体起始,B_sport表示运动实体起始,B_doct表示医生实体起始,B_hosp表示医院实体起始,B_drug表示药品实体起始,B_med表示中草药起始,B_pre表示方剂实体起始,B_thrp表示治疗技术实体起始,I_sym表示症状实体内,I_insp表示检查项目实体内,I_comp表示并发症实体内,I_food表示食品实体内,I_sport表示运动实体内,I_doct表示医生实体内,I_hosp表示医院实体内,I_drug表示药品实体内,I_med表示中草药内,I_pre表示方剂实体内,I_thrp表示治疗技术实体内,O表示不包含在任何实体之中。

步骤4-3:对标记的看病经历数据进行特征提取,特征包括字的上下文特征,以及使用领域知识词典构建的特征。字的上下文特征即为当前字的前后共5个字是否出现,使用领域知识词典构建的特征即为当前字在症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术这十一个词典中出现的频率。

步骤4-4:利用CRF++工具,对标注的看病经历数据进行训练,得到训练好的CRF模型。

步骤4-5:利用步骤4-4中所述的训练好的CRF模型,对所有看病经历数据进行实体识别。

5)对攻略模板和包含实体的看病经历进行联合主题建模,其概率图模型表示见图2。通过吉布斯采样得到面向版块的主题-词分布ψs和面向疾病的主题-词分布φc以及面向版块的主题-实体分布ηe等,计算公式为:

其中,表示当y=1的时候,主题s'赋予词wctn的次数,ny=1,w表示当y=1的时候,赋予了主题s'的词总数。V表示词表大小。表示当y=0的时候,疾病c赋予词wctn的次数,ny=0,w表示当y=0的时候,赋予了疾病c的词总数。表示主题s赋予每一类实体ectn的次数,表示主题s赋予每一类实体的总数,Ne表示每一类实体的总数。

6)利用步骤5)中的ψs为步骤3)中提到的每一个主题版块选取最有可能属于该主题版块的前N篇看病经历。计算公式为:

式中,pcts表示第c种疾病的第t篇看病经历属于第s个主题的概率,pctn表示第c种疾病的第t篇看病经历中的第n个词属于主题s的概率。Nw表示看病经历t中TF-IDF值最大的前若干个词。

将计算所得的概率进行排序,得到概率值最大的若干篇看病经历。

7)将步骤6)中的看病经历进行分句。使用正则表达式[。?!?;;!~]进行分句,并设置句子最小长度阈值。得到每种疾病的每个主题下的句子集合。

8)利用步骤5)中的面向版块的主题-词分布、面向疾病的主题-词分布和面向版块的主题-实体分布,确定ILP的目标函数和约束条件,通过ILP优化求解得到每个句子是否属于相应主题版块,从而得到每种疾病九大主题版块的看病攻略文摘。

首先,对于步骤7)所得句子,计算句子的主题分布相关性参数,计算公式为:

uj∝Epro(φc)+(1-E)pro(ψs)

其中uj表示第j个句子的主题分布相关性参数,Pro(φt)表示句子由面向疾病的主题-词分布产生的概率,pro(ψs)表示句子由面向版块的主题-词分布产生的概率,E是权衡参数。

然后,对于步骤7)所得句子,计算实体的显著性参数。

将句子中的实体分为A类实体和B类实体,A类实体指的是具有当前主题标签的实体,B类实体指的是不具有当前主题标签的实体。比如说症状这一主题下的症状实体就是A类实体,而症状主题下的药品实体则为第二类实体。A类实体的显著性参数计算公式为:

其中vk表示第k个A类实体的显著性参数,表示实体由当前主题产生的概率。

B类实体的计算公式如下:

其中vp表示第p个B类实体的显著性参数,表示实体由当前主题产生的概率。

最后,根据上述参数,将多篇看病经历的自动文档摘要任务转化为ILP优化问题,其目标函数和约束条件为:

Subject to:λ1+λ2+λ3=1,λ3≥0

其中uj表示第j条语句的主题分布相关性参数,sj∈{0,1}表示第j条语句是否被选取为摘要语句,ek∈{0,1}表示第k个A类实体是否出现在摘要当中,Vk表示第k个A类实体的显著性参数,ep∈{0,1}表示第p个B类实体是否出现在摘要当中,vp表示第p个B类实体的显著性参数,λ1,λ2,λ3分别表示三项权衡系数,lj表示第j条语句的长度,L表示摘要文本的总长度。Okj表示第k个A类实体是否出现在第j个句子当中。Opj表示第p个B类实体是否出现在第j个句子中。

使用IBM的cplex工具求解该优化问题,确定每个句子是否被选为摘要语句。

下面以实施例为基础,对上述方法做进一步说明,实施例中省略的步骤均按照上述方法进行实现。

实施例

参考图1、图2和图3,本发明一种基于主题模型和ILP的看病攻略生成方法包括以下步骤:

1)利用java的HTML解析器jsoup从专业的在线医患交流平台等采集各种常见慢性病的疾病知识;采集用户发布的看病经历数据,包括其疾病标签;从搜狗词库、中医药主题词典、百度百科等获取领域知识词典。获取各类词条包含疾病词条7191个、症状词条6693个、检查词条1954个、并发症词条13415个、食品词条10063个、中草药词条595个、方剂词条499个等。

2)利用simhash算法将采集的看病经历进行去重后融合入库。计算每种看病经历的simhash数字签名,将数字签名的海明距离在3以内的看病经历视为重复文本,去重后存入Mysql数据库。

3)利用采集的疾病知识制作疾病的攻略模板,模板包括症状、检查项目、并发症、饮食、运动、医生、药品、中医、治疗技术等九大主题版块。每个版块下的文本内容为疾病的相关疾病知识,或者推荐信息。主题版块的数量,可以根据用户的需求进行调整。

4)对看病经历数据集进行实体标注,使用CRF++工具对标注的数据集进行CRF模型的训练,训练中使用字的上下文信息和当前字在词典中出现的频率作为特征。基于训练好的CRF模型对所有看病经历进行实体识别,识别的实体种类为:症状、检查项目、并发症、食品、运动、医生、医院、药品、中草药、方剂、治疗技术,将识别的实体及其类型存入Mysql数据库。每种实体的主题标签对应关系为:症状实体的主题标签为症状,检查项目实体的主题标签为检查项目,食品实体的主题标签为饮食,运动实体的主题标签为运动,医生、医院的主题标签为医生,中草药、方剂的主题标签为中医,治疗技术的主题标签为治疗技术。

5)对攻略模板和包含实体的看病经历进行联合主题建模,通过吉布斯采样得到面向面向版块的主题-词分布ψs和面向疾病的主题-词分布φc以及面向版块的主题-实体分布ηe,ηe共有九个,与九个主题版块一一对应,如ηsy(主题-症状实体分布)、ηfo(主题-食品实体分布)等。

6)利用步骤5)中的主题-词分布ψs为步骤3)中提到的每一个主题版块选取最有可能属于该版块的前N篇看病经历,ψs矩阵是二维的,第一维大小为主题个数,第二维大小为词表大小。例如为糖尿病的症状主题版块选取最有可能属于该版块的前50篇看病看病经历,计算方式为,对于糖尿病的每一篇看病经历,根据ψs矩阵计算前k个词属于该主题的概率之积,将所有的概率之积进行排序,排名为前50的看病经历被选取。

7)将步骤6)中的看病经历进行分句。使用正则表达式[。?!?;;!~]进行分句,并设置句子最小长度阈值。得到每种疾病的每个主题下的句子集合,与句子中所包含的实体及实体的主题标签。

8)利用步骤5)中的ψs、φc和ηe,确定ILP的目标函数和约束条件,使用IBM cplex工具,对该ILP优化问题求解得到每个句子是否属于相应主题版块,将属于该主题版块的句子集合组合为摘要。将每种疾病所有的主题版块的摘要组合为该疾病的看病攻略文摘。图3为生成的糖尿病看病攻略。

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