分享好友 站长动态首页 网站导航

毕业设计第一次总结(基于知识图谱的医疗问答)

网友发布 2022-08-13 14:34 · 头闻号项目分享

毕业设计第一总结

写在文章前面:我之所以做总结,是因为我也是刚入门知识图谱的本科生,并不是什么大人物。整个过程中遇到了很多困难,然后有一些自己的经历想和后人分享。

我排版很差,请多多关照,哈哈哈哈。

* *项目参考:* *中科院软件所刘焕勇教授在github上的开源项目,哔哩哔哩Upmaster基于知识图谱的智能问答项目实战''机器学习天天向上' '。然后有几篇关于深度学习的好文章不推荐。后续总结会慢慢写出来。当前任务:完成最基础的知识图谱医学问答系统的构建。然后根据自己的进度和需求优化项目。你做了什么?部署了两个项目,然后阅读源代码繁琐而枯燥。下面是原作者在两个项目中的做法以及整个项目过程。第一版问答系统的原型就是参考两者简单设计的。

1.中科院github项目刘焕勇老师:

很容易部署。相关github里有提到,这里就不赘述了。我主要说说这个项目的一些不完善之处。

数据来源:此数据也来自寻医问药网站。一开始没仔细看。部署完成后,我在使用时发现了一个很大的问题。数据有点乱,尤其是在疾病的症状上。

我不知道为什么会出现人的名字,但很可能是爬行动物的问题。所以,如果你根据自己的需求,利用数据爬下网站,就没问题了。导入数据到secondary:导入数据的时候,你用py2neo一个一个的导入数据,整个过程会比较慢。爬取数据后可以保存常规csv文件,直接导入secondary,这样会快很多。整个数据多为半结构化数据,使用起来非常方便。新手搭建知识图谱非常简单。我建议你第一次尝试的时候不用考虑如何处理非结构化文本,熟悉一下就好。这个项目开源代码中的data_spider.py文件感觉有点乱。最主要的一点是,基本上所有的东西都需要自己重写,因为网站肯定不是静态的,有些xpath语句肯定需要自己根据自己的需要重写。作者已经在mongodb中保存了所有的数据,所以你需要提前下载mongodb。最好加上下一个可视化工具,看起来更方便。2.问答算法:这个项目定期匹配用户输入的文本,不涉及机器学习或深度学习算法,更不涉及运行模型,所以很好用。问答系统是基于规则匹配、关键词匹配、问题分类,然后拼接成cypher语句,二次查找结果,返回给用户。3.能学到什么:最有用的地方是项目数据的来源,所以我的毕业设计知识图谱的数据来源主要是求医问药的网站,其次是项目图谱的scheam定义。我打算借鉴其中的一些,然后根据具体数据修改或添加一些实体和关系。

2.Upmaster ''每天都要机器学习' '个项目。

整个项目部署起来还是有点麻烦。作者的开源gitbuh有相关部署的介绍,大家可以结合起来看看。简单说一下我在部署时遇到的一些坑。最大的坑就是各个模块版本的问题。第一点:由于作者使用的是keras实现的各种算法,所以在使用时一定要注意tensorflow和keras的版本是否匹配,否则你在训练或加载模型时可能会遇到各种bug。然后,注意python的版本。python3.7可以用tensorflow1.xx如果你是python3.8或更高版本,不适用。如果直接用pip指定版本,会报告找不到版本的错误。即使去官网下载whl文件安装,也会提示当前安装包无法在此环境下使用。所以这个也要注意。第二点:注意很多数据集需要自己下载,包括一些模型也需要自己训练,因为我尝试过直接加载作者权重,发现不可行。问了一些前辈,可能是版本环境的各种因素不一样。所以还是老老实实训练自己吧。想快速体验项目,就得和原作者所有版本保持一致。但如果自己做东西,就不必照搬别人的思路和流程。diy也是一种很好的高效的学习方式。第三点:原作者用itchat做一个交互,因为微信网页版不能用,以至于itchat不能用,itchat-uos也不能用,需要大家自己想办法。

数据来源:参考刘焕勇老师整理的数据。

问答算法设计:该项目主要在问答中给出了大量的深度学习模型方法和设计思路。原视频还介绍了实体和关系联合提取的模型,实体标准化,以及同名微信官方账号上的关系属性等相关介绍。感兴趣的朋友一定要看看。而且作者在原中科院老师的项目中加入了多轮对话的功能。

可以借鉴的:问答系统的设计思路,语义槽的定义和一些模型的设计。

3.衍生毕业设计

1.数据来源:参考以上两个项目的项目来源。由于我要实现的问答系统的问答分类和他们的不太一样,我需要的数据也需要一些其他类型,但还是来自于寻医问药的网站。我对相关疾病的数据进行了多方面的抓取,因为考虑到以后可能会实现更多的功能,所以尽可能有规律的多类别的抓取数据。只是后期使用要看个人时间安排。毕竟,完成是为了完成。这个阶段主要完成问答模型的训练和一些底层逻辑的设计。知识图谱构建的相关技术,如实体提取、关系提取、属性提取等,后续会有更新。2.当前数据的初步方案定义:实体:关系:这些是当前项目实体和关系的初步设计。3.问答系统的算法设计:对于用户输入的文本,可以按意图进行项目分类。首先,将进行简单的意图分类,以确定用户是在询问医学问题还是在聊天。处理模型简单来说就是LR融合GBDT对用户意图进行简单分类,主要包括以下几类:而接受类属于多轮对话的设计,会对用户的上下文进行分析。目前这种模式的训练效果还是挺好的。粗略分类后,如果是医学问答,就交给医学问答模块处理。用bert模型进行意图识别,定义相关语义槽,用blistm_crf进行实体识别填充槽。目前这种bert模型的效果不是很理想,需要进一步优化。在未来,我们计划找到一些数据集或使用模板生成一些数据集。blistm_crf模型的训练效果还可以,需要等待后续对bert模型的优化。主要是不断调整数据量和一些意向类别,模型设计的具体参数和细节不会动太多。bert的训练效果如下:还有待提高,准确率只有0.63。可以说是很惨了。感觉自己数据太少等一些原因,然后会优化。blistm-crf模型的训练结果如下:我对这个模型比较熟悉。毕竟前面两篇博客都是关于相关实体的识别。训练效果还可以,使用的数据集也是公共数据集。毕竟我不手动标注数据。

下一阶段是丰富实体的类型和关系,尝试拓展问答系统可以回答的问题类型。对bert模型进行了优化和修改,进一步扩充了数据。

写在最后:

最终的设计是设计一个前端显示器,我打算用flask+Vue来做。感兴趣的朋友可以随时关注我后续的博客。相比flask之前的大一自学,Vue了解的不多,还没开始。其实我是个初出茅庐的人,知道的很少。我写博客的时候可能会有很多错误。希望广大网友指出,我们可以共同提高。等毕业设计真的做完了,如果有机会,我会像某些作者一样录制视频,从源代码0开始,带你看一遍我的设计。并将开放源代码。我相信最快的学习方法是走别人走过的路,但最可怕的是这条路。希望你能通过模仿学会创新,最后把别人的知识变成自己的。作为程序员,你最应该学习的是ctrl+c和ctrl+v,你更需要的是改进、优化和扩展。

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

评论

0

收藏

点赞