📝 项目简介:
随着精神心理健康问题日益凸显,如今面临着相关医疗资源严重分布不均和诊疗效率低下的挑战。本项目结合有限状态机🤖、检索算法🔍、语义匹配模型📊以及医疗知识图谱📚等信息技术,设计了一种创新的智能辅助评估工具和个性化医疗建议生成应用,用于提升精神心理健康评估的效率并生成个性化医疗建议。
本项目包含以下三个核心模块:
- 精神心理健康辅助评估工具构建与实现🤖
- 个性化医疗建议生成📝
- 医疗知识图谱的应用📚
首先,通过辅助评估工具来收集患者信息,并对结果进行评估。基于这些信息,系统会生成个性化医疗建议。如果数据质量不佳或模型匹配精度低于设定阈值,则系统会利用知识图谱来生成普适性的医疗建议。
🔗 更多详情可参考我们的论文📄:https://www.mdpi.com/2076-3417/14/20/9447
🔑 关键词: 精神心理健康🧠,人工智能🤖,自然语言处理🗣️,医疗知识图谱📚,自动生成📝
我们基于 M.I.N.I 6.0.0 版本,结合有限状态机和 WEB 交互技术,构建了一种智能化的精神心理疾病辅助评估工具,为诊断提供信息自动化支持,效果图如下(各种原因暂不提供工具源码):
M.I.N.I 是一种综合性的诊断评估工具,包含 A 到 P 共 16 个独立模块,每个模块运用复杂的逻辑判断机制。 为了实现智能化,我们对每个模块进行了专门建模,采用有限状态机对用户回答进行逻辑计算和跳转,从而实现灵活的信息收集与全面的结果评估。
状态机是一种计算模型,用于描述对象或系统在不同状态间的转换行为。工作原理图如下:
利用状态机模型的原理,对M.I.N.I 6.0.0的各个模块进行建模。每当用户回答一个问题时,都会触发某个事件,从而决定下一个要问的问题,直到达到评估条件或者完成该模块的所有问题,最后进行结果评估。其流程设计图如下所示:
该算法的处理流程如下:
通过为关键词列表中的关键词分配权重⚖️,系统可以更精确地匹配医疗建议。例如:
关键词列表:['抑郁症', '失眠', '低落', '食欲', '运动抑制', '女', '24']
权重⚖️分配:['抑郁症': 0.4, '失眠': 0.2, '低落': 0.1, '食欲': 0.1, '运动抑制': 0.1, '女': 0.05, '24': 0.05]
利用关键词-权重⚖️模糊匹配算法在 MySQL 数据库🗄️中直接检索🔍,选取综合评分最高的前 50 条数据。
检索结果:
取15组数据,使用各个模型(BERT、ALBERT、RoBERTa、XLNet,FT_RoBERTa)分别计算模板问题与问答对的语义相关度📊。
各个模型不同指标下的计算结果:
各个模型不同指标可视化结果:
其中一组数据的模板问题如下(案例):
"[性别女,24],患有[抑郁症],伴有[失眠,低落,食欲不振,运动抑制]等症状,应如何治疗?用什么药?有什么建议?"
候选数据“问答对”来自“关键词-权重”模糊匹配算法在MySQL数据库检索出的结果。使用表现较好的ROBERTa模型计算的结果如下:
模型会从得出的候选数据中选取排名前 5 的最相关数据,组成最终的数据。
我们采用了两种方式来生成个性化医疗建议,流程如下:
方法一: 数据清洗🧹与提取,识别并筛选不同治疗方案、药物💊和建议。通过新模板生成包含核心治疗方案的个性化医疗建议。代码文件:NLP_generate.py
方法二: 调用大语言模型(LLM)API,如百度的千帆大模型“ERNIE-speed-128k”,生成个性化医疗建议。代码文件:LLM_generate.py
效果图如下:
以下是我们构建的医疗知识图谱:
当数据质量不佳或模型匹配精度低于阈值时,系统会利用构建的知识📚图谱来生成普适性的医疗建议。
知识图谱📚的知识检索🔍及医疗建议生成过程如下:
具体的构建代码不提供,但可以参考部分数据集 heart.json,更多内容请参阅:🔗https://github.com/liuhuanyong/QASystemOnMedicalKG
普适性医疗建议效果图:
问答数据集 (部分):点击下载
知识图谱构建数据集 (部分):点击下载
完成安装后,修改 Preprocessing/data_import.py 文件中的数据库连接配置(如数据库名称、连接密码🔑等),运行 data_import.py 即可导入数据📂。
运行 model 文件夹下的 query_BERT.py、query_ALBERT.py、query_RoBERTa.py、query_XLNet.py,即可得到相应的最终数据及模板问题和问答对的相关性分数(如余弦值、欧几里得距离、曼哈顿距离)。
注意:需要到 Hugging Face 下载中文语料模型。
根据模型筛选的数据进行进一步处理,采用两种方法:NLP 流程处理和 LLM 处理。运行 test 目录下的文件即可查看生成结果。