第3期 马钰,等:面对智能导诊的个性化推荐算法 ·353· 多,M.Lopez-Nores等四引入了一种新的过滤策略, 在图1中,虚线将框架图分为两大部分:第1 对于有特定疾病的患者,这种推荐方法的效率较 部分是获取用户偏好的过程,首先根据用户的症状 高。P.Pattaraintakorn等提出了一种使用粗糙 表现,使用辅助诊疗算法给出初步诊断结果,再利 集和规则分析的医疗推荐系统,主要目标是将病人 用反馈信息和症状联想机制进一步确定所患疾病, 的自身的身体数据作为条件属性,推荐临床检查 从而完成症状到用户偏好的转化过程:第2部分是 方式。宫继兵等提出了一种医疗社交网络中的多 生成推荐结果的过程,由用户的偏好结合其地理位 层混合医生推荐结构,通过挖掘网络中医生与病人 置信息,采用改进的Skyline查询算法,找出一定范 之间的关系为患者推荐医生。徐守坤等提出过一 围内符合要求的医院作为候选集合,最后在局部范 种医生资源均衡推荐算法,使用最佳结果优先的推 围内由基于协同过滤的评分方式对候选集合中的医 荐算法,解决了医疗资源的使用过度集中而产生的 院进行评分、排序,从而生成最终的推荐结果。 问题。 由上述分析可以看出,现行系统主要有两方面 3基于医疗知识库的辅助诊疗技术 的问题:)没有考虑现在医疗推荐方面最迫切需要 在本节中,我们主要介绍辅助诊疗技术的具体 解决的问题;2)没有考虑导诊与医疗推荐和传统的 细节,用以解决医疗导诊与推荐时用户偏好未知的 推荐在本质上的不同。 问题,通过辅助诊疗帮助用户根据症状表现确定其 针对这些问题,本文提出了一种面向智能导诊 所患疾病,从而明确用户偏好。 的个性化推荐算法,其主要有3个特点: 3.1分词与症状索引表的建立 1)算法提出了辅助诊疗机制,通过辅助诊疗能 为了提高分词速度,本文通过对《同义词林》 根据用户的症状表现,帮助用户大致确定其所患疾 进行适当的改造,构建了一个新的字典。首先,部 病,从而明确用户偏好,提升推荐结果的满意度。 分无用词汇被剔除:其次,按照词语的字数,字典被 2)算法获得用户评分及反馈信息的方式以显 分为5个部分,这样每次匹配时词典最多被扫描一 式方法为主,并且在辅助诊疗时根据用户的反馈信 次。使用改造后的词典,诊断时症状描述中遇到的 息对诊断结果进行优化,从而提高诊断结果的准 同义词和相关词等问题得到了一定程度的缓解。为 确性。 了提高分词准确度,本文选用了逆向最大匹配法。 3)提出了一种在有地域约束时的推荐算法。 为了加快诊断速度,本文采取了在症状信息上建立 对Skyline-o查询进行改进,并将其结果作为推荐 倒排索引的方法。该索引包含3个属性,分别保存 的候选集合,之后在局部范围内使用基于协同过滤 症状分词结果对应的同义词林中的编码、疾病ICD 的评分算法,对候选集合进行评分并排序。 编码和疾病中症状出现的次数,以及症状对应的疾 2 整体框架 病类型数。后两个属性在进行诊断时使用。 3.2辅助诊断技术 为了对本文所述系统有一个全局性的了解进而 3.2.1辅助诊疗思路 更好地了解算法细节,本部分将以框架图为基础, 辅助诊疗技术采用的核心思想是计算用户输入 阐述算法中各部分的作用及大致思路。本文的整体 的症状信息与医疗知识库中疾病症状信息之间的相 框架如图1所示。 似度,从而确诊疾病类型,具体实现过程包括: 用户 1)对录入的症状信息进行分词,使用分词结果 在索引表中进行查询,记录所有匹配项,将对应的 症状表现 疾病作为候选集,并将其中的疾病总数记为N。 2)利用症状索引表计算输入与候选集中每种 位置信息 反馈 辅助诊疗 疾病症状的相似度,并依据相似度进行排序。 用户 信息 特征 诊断结果 3.2.2相似度计算 用户 相似度计算公式借鉴了TF-IDF计算相似度的 改进的 偏好 Skyline查询 思路,其公式为 基于协同 N 候选集合 过滤的评分排序 推荐结果 S=) num一log2 (1) numsymptom 图1整体框架 式中:S为输入q与疾病症状之间的相似度;num,表 Fig.1 The overall framework 示q中的某一症状i在该疾病中出现的次数,当多,M. López-Nores 等 [1]引入了一种新的过滤策略, 对于有特定疾病的患者,这种推荐方法的效率较 高。P. Pattaraintakorn 等 [2]提出了一种使用粗糙 集和规则分析的医疗推荐系统,主要目标是将病人 的自身的身体数据作为条件属性,推荐临床检查 方式。宫继兵等[3]提出了一种医疗社交网络中的多 层混合医生推荐结构,通过挖掘网络中医生与病人 之间的关系为患者推荐医生。徐守坤等[4]提出过一 种医生资源均衡推荐算法,使用最佳结果优先的推 荐算法,解决了医疗资源的使用过度集中而产生的 问题。 由上述分析可以看出,现行系统主要有两方面 的问题:1) 没有考虑现在医疗推荐方面最迫切需要 解决的问题;2) 没有考虑导诊与医疗推荐和传统的 推荐在本质上的不同。 针对这些问题,本文提出了一种面向智能导诊 的个性化推荐算法,其主要有 3 个特点: 1) 算法提出了辅助诊疗机制,通过辅助诊疗能 根据用户的症状表现,帮助用户大致确定其所患疾 病,从而明确用户偏好,提升推荐结果的满意度。 2) 算法获得用户评分及反馈信息的方式以显 式方法为主,并且在辅助诊疗时根据用户的反馈信 息对诊断结果进行优化,从而提高诊断结果的准 确性。 3) 提出了一种在有地域约束时的推荐算法。 对 Skyline[5-10]查询进行改进,并将其结果作为推荐 的候选集合,之后在局部范围内使用基于协同过滤 的评分算法,对候选集合进行评分并排序。 2 整体框架 为了对本文所述系统有一个全局性的了解进而 更好地了解算法细节,本部分将以框架图为基础, 阐述算法中各部分的作用及大致思路。本文的整体 框架如图 1 所示。 用户 症状表现 辅助诊疗 诊断结果 反馈 信息 用户 偏好 推荐结果 排序 基于协同 过滤的评分 候选集合 改进的 Skyline查询 用户 特征 位置信息 图 1 整体框架 Fig. 1 The overall framework 在图 1 中,虚线将框架图分为两大部分:第 1 部分是获取用户偏好的过程,首先根据用户的症状 表现,使用辅助诊疗算法给出初步诊断结果,再利 用反馈信息和症状联想机制进一步确定所患疾病, 从而完成症状到用户偏好的转化过程;第 2 部分是 生成推荐结果的过程,由用户的偏好结合其地理位 置信息,采用改进的 Skyline 查询算法,找出一定范 围内符合要求的医院作为候选集合,最后在局部范 围内由基于协同过滤的评分方式对候选集合中的医 院进行评分、排序,从而生成最终的推荐结果。 3 基于医疗知识库的辅助诊疗技术 在本节中,我们主要介绍辅助诊疗技术的具体 细节,用以解决医疗导诊与推荐时用户偏好未知的 问题,通过辅助诊疗帮助用户根据症状表现确定其 所患疾病,从而明确用户偏好。 3.1 分词与症状索引表的建立 为了提高分词速度,本文通过对《同义词林》 进行适当的改造,构建了一个新的字典。首先,部 分无用词汇被剔除;其次,按照词语的字数,字典被 分为 5 个部分,这样每次匹配时词典最多被扫描一 次。使用改造后的词典,诊断时症状描述中遇到的 同义词和相关词等问题得到了一定程度的缓解。为 了提高分词准确度,本文选用了逆向最大匹配法。 为了加快诊断速度,本文采取了在症状信息上建立 倒排索引的方法。该索引包含 3 个属性,分别保存 症状分词结果对应的同义词林中的编码、疾病 ICD 编码和疾病中症状出现的次数,以及症状对应的疾 病类型数。后两个属性在进行诊断时使用。 3.2 辅助诊断技术 3.2.1 辅助诊疗思路 辅助诊疗技术采用的核心思想是计算用户输入 的症状信息与医疗知识库中疾病症状信息之间的相 似度,从而确诊疾病类型,具体实现过程包括: 1) 对录入的症状信息进行分词,使用分词结果 在索引表中进行查询,记录所有匹配项,将对应的 疾病作为候选集,并将其中的疾病总数记为 N。 2) 利用症状索引表计算输入与候选集中每种 疾病症状的相似度,并依据相似度进行排序。 3.2.2 相似度计算 相似度计算公式借鉴了 TF-IDF 计算相似度的 思路[11] ,其公式为 S = ∑ i∈q ( numi numsymptom log2 ( N typedisease +1 )) (1) 式中:S 为输入 q 与疾病症状之间的相似度;numi 表 示 q 中的某一症状 i 在该疾病中出现的次数,当 第 3 期 马钰,等:面对智能导诊的个性化推荐算法 ·353·