基于Python的中医药知识问答系统设计与实现

news2024/9/29 5:34:47

[简介]
这篇文章主要介绍了基于Python的中医药知识问答系统的设计与实现。该系统利用Python编程语言,结合中医药领域的知识和技术,实现了一个功能强大的问答系统。文章首先介绍了中医药知识的特点和传统问答系统的局限性,然后提出了设计思路和实现方法。系统的设计包括数据的采集和处理、问题的分类和分析、答案的生成和评价等关键步骤。通过实验验证,该系统在问答准确性和效率上都取得了较好的表现,具有一定的实用价值。文章最后总结了设计过程中遇到的问题和改进的方向,为进一步研究和应用提供了参考。

(节选)主要研究内容

(1)网络爬虫
(2)中药文本处理
(3)知识图谱搭建
(4)智能问答界面实现

一、知识图谱

在这里插入图片描述

二、问答页面

在这里插入图片描述

在这里插入图片描述
知识图谱架构只要指的是构建模式的结构。
在这里插入图片描述
偏方Flask实现:

app = Flask(__name__)
@app.route('/query/', methods=['GET', 'POST'])
def query():
    if request.method == "POST":
        name = request.form.get("name")
        dict_return = getdata(name)
        return render_template('query.html', dict_return=dict_return)
    else:
        dict_return = getdata('ALL')                       #默认初始页面
        return render_template('query.html', dict_return=dict_return)
    
if __name__ == '__main__':
    app.run(debug=True)
class MyEncoder(json.JSONEncoder):
    def default(self, obj):
        """
        只要检查到了是bytes类型的数据就把它转为str类型
        :param obj:
        :return:
        """
        if isinstance(obj, bytes):
            return str(obj, encoding='utf-8')
        return json.JSONEncoder.default(self, obj)

def getdata(name):
    dict_return = {}
    #处理好的文件路径
    path = "./Data_excel/"
    file = path+str(name)+"偏方秘方.xlsx"
    data = pd.read_excel(file)
    num=list(i+1 for i in range(len(data[u'drug'])))
    drug = list(data[u'drug'])
    prescript = list(data[u'prescript'])
    part = list(data[u'part'])
    # 以下为将处理好的数据加入字典
    dict_return['num'] = num
    dict_return['drug'] = drug
    dict_return['prescript'] = prescript
    dict_return['part'] = part
    # 滚动图
    item = []
    for i in range(0, len(drug)):
        item.append({'num':num[i],'drug': drug[i],'prescript':prescript[i],'part':part[i]})
    data_tb = json.dumps(item,cls=MyEncoder,ensure_ascii = False)
    data_tb = demjson.decode(data_tb)
    dict_return['data_tb'] = data_tb
    li=[]
    for root, dirs, files in os.walk('./Data_excel'):
        for file in files:
            li.append(file.split('偏')[0])
    dict_return['li'] = li
    return dict_return

三、偏方库查询

在这里插入图片描述
问答实现:

class SimpleQA:
    def __init__(self):
        self.data = {
            'name_part': {'水部': '藻类', '火部': '灯芯花'},
            'name_alias': {'藻类': '藻藻', '灯芯花': '火火'},
            'name_smell': {'藻类': '清新', '灯芯花': '芳香'},
            'name_cure': {'藻类': '泻火', '灯芯花': '散结'},
            'drug_department': {'藻类': '肝部科室', '灯芯花': '心部科室'},
            'drug_prescript': {'藻类': '清火汤', '灯芯花': '散结丸'},
            'drug_onepart': {'藻类': '水', '灯芯花': '火'}
        }

    def search(self, question_type, drug_name):
        if question_type not in self.data:
            return "抱歉,暂不支持该类型的问题。"
        
        if drug_name not in self.data[question_type]:
            return "抱歉,找不到相关信息。"

        if question_type == 'name_part':
            return '属于部类是:' + self.data[question_type][drug_name]
        elif question_type == 'name_alias':
            return '别名是:' + self.data[question_type][drug_name]
        elif question_type == 'name_smell':
            return '气味品质是:' + self.data[question_type][drug_name]
        elif question_type == 'name_cure':
            return '使用方法是:' + self.data[question_type][drug_name]
        elif question_type == 'drug_department':
            return '该去科室是:' + self.data[question_type][drug_name]
        elif question_type == 'drug_prescript':
            return '治疗疾病的偏方是:' + self.data[question_type][drug_name]
        elif question_type == 'drug_onepart':
            return '该病从属于:' + self.data[question_type][drug_name]

if __name__ == '__main__':
    qa_system = SimpleQA()
    question_type = 'drug_prescript'
    drug_name = '藻类'
    answer = qa_system.search(question_type, drug_name)
    print(answer)

Q:2777.077.178

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1516629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你使用Python第三方模块

1.第三方模块 一般是别人解决特定问题的功能进行了封装,可以通过安装直接使用 注意 第三方模块需要先安装,才能使用 常见的安装方式:通过pip工具或者通过pycharm编辑器进行安装 2.pip指令安装 pip -V # 查看pip的版本 pip 23.2.1 fr…

深度解析:cache的基本概念原理扫盲

引流关键词:缓存,高速缓存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存…

Palworld幻兽帕鲁管理员操作手册

Palworld幻兽帕鲁管理员操作手册 大家好我是艾西,在我们搭建完幻兽帕鲁服务器后肯定会涉及到后期的维护比如:角色修改,帕鲁修改,异常删除,公会修改,清理玩家,清理建筑,存档迁移等数…

2024自动化测试的痛点与发展趋势!

前几天在技术交流群里,大家讨论了很多关于自动化测试落地面临的痛点和如何创造价值的话题,颇有感触。 自动化测试这个话题,从出现到在国内大规模开展实践,有很长的一段时间了。早期,大家对自动化测试的理解和使用目的…

企业微信如何接入第三方应用?

1.登录企业微信管理后台:https://work.weixin.qq.com/wework_admin​​​​​ 2.点击创建应用; ​​​​​​​ 3. 此时可以看到已经创建好的应用,并且生成应用的唯一id(agentId) 4. 第三方应用申请域名 (举例&…

Vue3 + antv/x6 实现流程图

新建流程图 // AddDag.vue <template><div class"content-main"><div class"tool-container"><div click"undo" class"command" title"后退"><Icon icon"ant-design:undo-outlined" /…

kibana新增查看更新删除es中的数据

登录kibana&#xff0c;打开开发工具 写入数据 PUT test20240311/person/1 {"name": "张三","mobile":"13011111111" } 查询数据 GET /test20240311/person/_search {"query": {"term": {"mobile": {…

类和对象练习题

第1题 import java.util.Scanner; public class Homework01{public static void main(String[] args){//创建一个double类型的数组double array[]new double[6];//创建一个输入对象Scanner inputnew Scanner(System.in);//提示信息&#xff1a;对数组元素进行赋值System.out.pr…

docker-swarm集群管理命令

为什么选择swarm集群&#xff1f; 灵魂疑问&#xff1a;同样是集群&#xff0c;为什么选择docker swarm&#xff0c;而不不选择k8s或者k3s&#xff1f; 我的需求场景&#xff1a;不想直接用docker或者java -jar直接跑&#xff0c;修改前是使用java -jar方式&#xff0c;这两种…

爬虫练习:获取某网站的房价信息

一、相关网站 二、相关代码 import requests from lxml import etree import csv with open(房天下数据.csv, w, newline, encodingutf-8) as csvfile:fieldnames [名称, 地点,价格,总价,联系电话]writer csv.DictWriter(csvfile, fieldnamesfieldnames)writer.writeheader…

【UE5】非持枪站姿移动混合空间

项目资源文末百度网盘自取 创建角色在非持枪状态且站立移动的动画混合空间 在Character文件夹中创建文件夹&#xff0c;命名为BlendSpace 所有混合空间文件都放到这个文件夹中 在BlendSpace文件夹中单击右键&#xff0c;选择动画(Animation)中的混合空间(BlendSpace) 选择SK…

爬虫技术之正则提取静态页面数据

第一天 简单示例 在爬虫过程中&#xff0c;我们获取到了页面之后&#xff0c;通常需要做的就是解析数据&#xff0c;将数据持久化到数据库为我所用。如何又快又准确得提取有效数据&#xff1f;这是一门技术&#xff0c;看了我的博客之前可能略有难度&#xff0c;但各位大师看…

OpenvSwitch VXLAN 隧道实验

OpenvSwitch VXLAN 隧道实验 最近在了解 openstack 网络&#xff0c;下面基于ubuntu虚拟机安装OpenvSwitch&#xff0c;测试vxlan的基本配置。 节点信息&#xff1a; 主机名IP地址OS网卡node1192.168.95.11Ubuntu 22.04ens33node2192.168.95.12Ubuntu 22.04ens33 网卡信息&…

Win10系统使用IIS服务搭建WebDAV网站结合内网穿透公网访问本地文件

文章目录 推荐1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结&#xff1a; 推荐 前些天发现了一个巨牛的人工智能…

【单调栈】代码随想录算法训练营第五十九天 |503.下一个更大元素II, 42. 接雨水 (待补充)

503.下一个更大元素II 1、题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个…

寄存器(内存访问)

文章目录 寄存器&#xff08;内存访问&#xff09;1 内存中字的存储2 DS和[address]3 字的传送4 mov、add、sub指令5 数据段6 栈7 CPU提供的栈机制8 栈顶超界的问题9 push、pop指令10 栈段 寄存器&#xff08;内存访问&#xff09; 1 内存中字的存储 CPU中&#xff0c;用16位寄…

部署私有KMS服务器,并设置自动激活Windows和office

介绍 vlmcsd是一个KMS激活服务器的模拟器&#xff0c;可以在Windows Server之外的平台上部署自己的KMS服务器。它是一个开源项目&#xff0c;由Wind4开发&#xff0c;目前在Linux上运行&#xff08;包括Android、FreeBSD、Solaris、Minix、Mac OS、iOS和Windows等&#xff09;…

[MYSQL数据库]- 索引

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、认识索…

22-Java状态模式 ( State Pattern )

Java状态模式 摘要实现范例 状态模式&#xff08;State Pattern&#xff09;中类的行为是基于它的状态改变的 在状态模式中&#xff0c;我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象 状态模式属于行为型模式 摘要 1. 意图 允许对象在内部…

深入解析HashMap:结构与哈希函数揭秘一

文章目录 一、HashMap的基本结构1.数组与链表的结构1.1 数组1.2 链表 2.红黑树的简单介绍3.Node节点的组成 二、HashMap的哈希函数1.hashCode()方法的作用2.位运算与哈希值的计算3.扰动函数的作用 思考&#xff1a;为什么HashMap源码中使用位运算 在Java编程语言中&#xff0c;…