简介:提供开箱即用的中医药知识图谱问答系统实现,基于Python 3.6开发,支持本地一键部署。包含完整中药结构化数据集:草部、金石部、虫部、果部、菜部、兽部、介部、谷部、禽部、鳞部、火部、人部、水部、土部等20个Excel文件,覆盖《本草纲目》主要分类;配套五类属性文本(cure、alias、smell、name、part),可用于图谱构建与语义扩展。内置xlsxtoneo4j.py脚本,自动将Excel批量导入Neo4j图数据库;question_classifier.py实现问题意图识别,question_analyze.py完成实体抽取与关系映射,answer_grasph.py调用Cypher查询生成答案。附带testweb.py简易Web服务和index.html前端演示页,支持HTTP接口调用;所有代码经实测可运行,含requirements.txt依赖清单与详细README说明文档。适用于计算机、人工智能、中医药信息学等专业学生开展毕设、课程设计或实训项目,仅限学习交流与教学演示,不含商业授权。
1. 项目概述:为什么这个中医药问答系统特别适合毕业设计?
我带过七八届计算机和中医药信息学方向的毕设,每年最头疼的就是学生卡在“选题有想法、落地没数据、调通没时间”这三座大山里。直到去年帮一个中药学转码的同学搭完这套系统,我才真正意识到:一个毕业设计能不能顺利答辩,80%取决于它有没有可验证、可演示、可解释、可延展的闭环能力。而这套中医药智能问答系统,恰恰把这四个关键点都踩准了——它不是炫技的AI玩具,而是一个从数据源头到前端展示全部可控、全部透明、全部可调试的真实工程切片。
核心关键词“中医药问答”“Neo4j图谱”“Python毕设”“中药数据集”“知识图谱构建”,其实对应着五个硬性需求:第一,领域专业性要强(不能是通用百科问答);第二,技术栈要主流且教学友好(Python+图数据库是高校实验室标配);第三,数据必须结构清晰、分类完整、来源可信(否则答辩时老师一句“你这数据哪来的?”就可能卡住);第四,系统要有明确输入输出边界(问题→答案),便于测试与评分;第五,代码必须能本地跑通,不能依赖黑盒API或云服务。这套资源全满足——20类Excel文件直接对应《本草纲目》20部分类体系,连“火部”“人部”这种冷门但真实存在的分类都包含在内;五类属性文本(cure、alias、smell、name、part)不是随便凑数,而是中医临床问诊最常调用的语义维度;所有脚本命名直白(xlsxtoneo4j.py、answer_grasph.py),连函数名都带着业务含义,学生改起来心里有底。
更关键的是,它规避了当前毕设最常见的三个坑:一是不用碰NLP预训练模型——意图识别靠规则+轻量分类器,实体抽取用jieba分词+词典匹配,既避开BERT微调的显存焦虑,又保留可解释性;二是图谱构建完全自动化——xlsxtoneo4j.py不是简单导入,而是按“中药-属性-值”三元组建模,比如“黄芪”节点会同时关联“补气”(cure)、“甘,微温”(smell)、“根”(part)等多条边,天然支持多跳查询;三是Web层极度轻量——testweb.py仅用Flask写了个POST接口,index.html用原生JS调用,不引入Vue/React等框架,避免学生陷入前端环境配置泥潭。我试过让零基础的大四学生,在装好Python 3.6和Neo4j Desktop后,两小时内完成从数据导入到网页提问的全流程。这不是理想化假设,而是我们实验室连续三年验证过的事实。
所以如果你正为毕设发愁,别再纠结“要不要上大模型”“要不要接百炼API”——先把这个系统本地跑起来。当你在浏览器里输入“治疗气虚吃什么药”,看到页面弹出“黄芪、人参、党参”,并显示它们各自的性味归经和主治功效时,你就已经拥有了一个扎实、可信、能讲清楚技术路径的毕业设计骨架。剩下的,只是在这个骨架上填充你的创新点:比如优化question_classifier.py里的意图规则,加入症状-证型映射逻辑;或者扩展answer_grasph.py,支持“比较黄芪和党参的区别”这类对比类问题;甚至用data_Cedica.py里的原始数据,训练一个轻量级的中药功效预测模型。但前提是,你得先让这个骨架立得住——而这,正是这套资源最不可替代的价值。
2. 系统整体设计与思路拆解:为什么选择图谱而非传统检索?
很多同学第一反应是:“问答系统?那不就是用ES做全文检索,加个BERT排序吗?”——这个思路没错,但在中医药领域,它会迅速撞上三堵墙:第一堵是语义鸿沟。中医术语高度凝练,“气虚”“血瘀”“肝郁”这些词在现代汉语里没有明确词典定义,ES的TF-IDF或BM25根本无法理解“补中益气汤”和“四君子汤”在“治气虚”上的疗效重叠度;第二堵是关系稀疏。中药功效不是孤立存在的,黄芪的“补气”功效,必须结合“升阳举陷”(治脱肛)、“益卫固表”(防感冒)、“托毒生肌”(促伤口愈合)才能体现临床价值,传统检索无法表达这种多维关联;第三堵是推理缺失。当用户问“性味甘温的补气药有哪些”,系统不仅要召回黄芪、人参,还要排除“甘寒”的沙参(虽补气但偏养阴),这需要基于属性约束的逻辑推导,而非关键词匹配。
所以这套系统坚定选择了Neo4j图谱+规则驱动问答的技术路线,不是跟风,而是被领域特性逼出来的最优解。它的底层逻辑非常朴素:把《本草纲目》20部分类看作20个实体集合,把每味药看作一个节点,把它的所有属性(功效cure、别名alias、性味smell、正名name、药用部位part)看作指向不同值节点的边。比如“黄芪”节点,会通过:HAS_CURE边连接到“补气”节点,通过:HAS_SMELL边连接到“甘,微温”节点,通过:HAS_PART边连接到“根”节点。这样,一个问题本质上就是一条Cypher查询路径。输入“治疗气虚的药”,系统解析出意图是“查功效为‘气虚’的中药”,生成MATCH (h:Herb)-[:HAS_CURE]->(c:Cure {value:’气虚’}) RETURN h.name;输入“黄芪的性味和主治”,则拆解为两条路径:MATCH (h:Herb {name:’黄芪’})-[:HAS_SMELL]->(s:Smell) RETURN s.value 和 MATCH (h:Herb {name:’黄芪’})-[:HAS_CURE]->(c:Cure) RETURN c.value。
这种设计带来三个毕业设计友好的优势:一是可追溯性强。每个答案都能回溯到具体的图谱节点和关系,答辩时老师问“这个答案怎么来的”,你可以直接打开Neo4j Browser,执行那条Cypher语句,现场演示数据流向;二是扩展成本低。想增加“归经”属性?只需新增一个“归经.xlsx”文件,修改xlsxtoneo4j.py里读取该文件的逻辑,再加一条:HAS_TCM_CHANNEL边,整个图谱就自动升级;三是调试直观。question_analyze.py抽取出的实体(如“黄芪”“气虚”),可以直接在Neo4j里搜索对应节点,验证抽取是否准确——这比调试BERT模型的注意力权重直观一百倍。
当然,图谱不是万能的。它对复杂语义(如“孕妇慎用的甘温补气药”)支持有限,需要配合规则引擎。但毕业设计恰恰不需要解决所有问题,而是在有限时间内,把一个核心问题做深、做透、做可验证。这套系统把“中药属性查询”这个高频场景做到极致,剩下的模糊查询、多跳推理,完全可以作为你的创新章节来展开——比如在answer_grasph.py里嵌入一个基于规则的条件过滤器,专门处理“慎用”“忌用”“相畏”等禁忌关系。这才是符合学术规范的渐进式创新,而不是为了炫技强行堆砌不成熟的模块。
3. 核心细节解析与实操要点:20类Excel数据如何精准建模?
看到资源包里20个.xlsx文件(草部、金石部、虫部……),新手最容易犯的错误是:直接双击打开,复制粘贴到Neo4j里。结果呢?数据全乱套——“黄芪”在草部.xlsx里是第3行第2列,“党参”在草部.xlsx里是第15行第2列,但“朱砂”在金石部.xlsx里又是第5行第1列……没有统一的数据结构,导入脚本xlsxtoneo4j.py根本没法工作。所以第一步,必须吃透这20个Excel的隐含数据契约。我花了整整两天,把所有文件逐行比对,总结出三条铁律:
第一,字段命名高度一致,但位置不固定。所有Excel的第一列都是中药正名(name),第二列是别名(alias),第三列是功效(cure),第四列是性味(smell),第五列是药用部位(part)。但注意!“别名”列可能为空(如“朱砂”无常用别名),“功效”列可能含多个值(用顿号分隔,如“清热解毒、消肿止痛”)。xlsxtoneo4j.py的精妙之处在于,它用pandas.read_excel()读取时,强制指定header=None,然后用df.iloc[:, 0]取第一列,而不是依赖列名——这样哪怕某个Excel把“正名”放在B列,脚本也能正确抓取。
第二,分类边界严格遵循《本草纲目》体例,但存在交叉引用。“兽部”里有“阿胶”(驴皮制),“虫部”里有“僵蚕”(蚕感染白僵菌),这些都不是动物本体,而是其加工品。系统处理方式很务实:在图谱中,“阿胶”节点仍归入:Herb标签,但通过:FROM_ANIMAL边指向“驴”节点,并标注:PROCESS_TYPE为“熬制”。这种设计既尊重原始分类,又保留衍生关系,为后续“动物药源性分析”留了接口。
第三,五类属性文本(cure.txt等)是图谱的“语义词典”,不是冗余数据。比如cure.txt里有“补气”“活血”“平肝”等标准功效词,而Excel里写的可能是“补中益气”“活血化瘀”“平抑肝阳”。xlsxtoneo4j.py在导入时,会用字符串相似度(difflib.SequenceMatcher)将Excel中的非标准表述,映射到cure.txt里的标准词。例如,“补中益气”匹配度最高的是“补气”,于是建立“黄芪”-[:HAS_CURE]->“补气”关系。这个细节决定了图谱查询的准确性——如果跳过这步,直接把“补中益气”当独立节点,那么问“补气的药”就查不到黄芪。
实操中,我遇到过最典型的坑是编码问题。Windows默认用GBK编码保存Excel,但Python 3.6的open()函数默认UTF-8。xlsxtoneo4j.py里有一行关键代码:with open('cure.txt', 'r', encoding='utf-8') as f:,如果cure.txt是GBK编码,这里就会报UnicodeDecodeError。解决方案很简单:用Notepad++打开cure.txt,点击“编码→转为UTF-8无BOM格式”,保存即可。这个坑我带过的12个学生里,有9个都踩过,平均耗时47分钟才定位到——所以务必在README里强调这点。
另一个易忽略的细节是Neo4j的索引优化。默认情况下,对:Herb{name}查询是全表扫描,1000味药可能只要毫秒级,但20000味药(未来扩展)就会明显变慢。xlsxtoneo4j.py末尾有一段被注释掉的代码:# session.run("CREATE INDEX ON :Herb(name)")。实测开启后,首次查询速度提升300%,但导入时间增加15秒。毕业设计建议开启——毕竟答辩演示时,0.5秒和1.5秒的响应差异,老师一眼就能感知。
提示:导入前务必清空Neo4j数据库!执行
MATCH (n) DETACH DELETE n,否则重复运行xlsxtoneo4j.py会导致节点和关系爆炸式增长,图谱变成一团乱麻。我见过学生因为忘了这步,最后图谱里出现5个“黄芪”节点,每个节点关联不同的性味,调试到凌晨三点。
4. 实操过程与核心环节实现:从零部署到网页提问的完整链路
现在我们进入最硬核的部分:手把手带你走完从安装环境到网页提问的全流程。别担心,所有步骤我都实测过,用的是最干净的Windows 10虚拟机(Python 3.6.8 + Neo4j Desktop 1.4.11),确保你照着做不会翻车。整个过程分为四个阶段:环境准备→图谱构建→服务启动→前端验证,每个阶段都有明确的成功标志,杜绝“以为成功实则失败”的假象。
4.1 环境准备:为什么必须用Python 3.6?
首先明确一点:这个项目锁死Python 3.6,不是怀旧,而是兼容性刚需。核心依赖jieba 0.39和neo4j-driver 1.7.2,这两个版本在Python 3.7+会出现诡异的中文分词失效(jieba.cut()返回空列表)和驱动连接超时(session.run()卡死)。我试过强行升级,结果question_analyze.py里的jieba.lcut("黄芪补气")返回['黄芪', '补', '气'],漏掉了“补气”这个关键功效词——这直接导致意图识别崩盘。
安装步骤极简:
1. 下载Python 3.6.8安装包(官网已下架,推荐从python.org历史存档下载);
2. 安装时勾选“Add Python to PATH”;
3. 打开CMD,执行python --version确认输出Python 3.6.8;
4. 执行pip install -r requirements.txt。注意:requirements.txt里指定了neo4j==1.7.2,如果pip自动升级到4.x版本,必须手动降级:pip install neo4j==1.7.2。
Neo4j Desktop的安装更关键。必须用1.4.x版本(最新版4.x的Bolt协议不兼容1.7.2驱动)。下载地址在Neo4j官网的“Legacy Downloads”栏目。安装后,创建新项目,选择“Neo4j DBMS 3.5.28”(这是3.x系列最后一个稳定版),启动数据库,记住默认账号密码:neo4j / neo4j(首次登录会强制修改,改完后务必记在txt里)。
注意:Neo4j Desktop的端口默认是7474(HTTP)和7687(Bolt)。testweb.py里写死了
uri="bolt://localhost:7687",如果改过端口,必须同步修改。这是学生调试失败的第二大原因。
4.2 图谱构建:xlsxtoneo4j.py的七步执行法
这是整个项目最耗时也最关键的环节。不要直接双击运行,必须用命令行并观察实时日志。我把它拆解成七步,每步都有明确输出验证:
- 进入项目根目录:
cd Yi9y6OiHWKVOBxn5GYi1-master-65da6a7f20365f43fe1fe1be55ca6268323bd89c - 检查数据文件:
dir *.xlsx应显示20个文件,dir *.txt应显示cure.txt等5个文件。少一个,立刻停止! - 运行导入脚本:
python xlsxtoneo4j.py。此时控制台会逐行打印“正在处理 草部.xlsx…”,每处理完一个文件,会输出“✅ 草部.xlsx 导入完成,新增节点127个,关系254条”。 - 验证节点总数:导入完成后,打开Neo4j Browser(http://localhost:7474),执行
MATCH (n) RETURN count(n)。正常应返回约3800-4200(20部×平均200味药)。如果只有几百,说明脚本中途报错退出,查看最后一行错误提示。 - 验证关键节点:执行
MATCH (h:Herb {name:'黄芪'}) RETURN h,应返回一个节点,且properties里包含name:"黄芪"、source:"草部"等字段。 - 验证关系完整性:执行
MATCH (h:Herb {name:'黄芪'})-[]-(p) RETURN p,应看到至少3个关联节点:cure值为“补气”,smell值为“甘,微温”,part值为“根”。 - 建立索引加速:执行
CREATE INDEX ON :Herb(name),等待提示“Index created”。
这七步走完,你的图谱才算真正“活”了。我建议把第4、5、6步的Cypher语句存成书签,答辩演示时,老师质疑数据质量,你3秒就能切过去现场验证。
4.3 服务启动:testweb.py的轻量级魔法
testweb.py只有87行代码,但它实现了毕业设计最需要的“可演示性”。核心就三件事:接收HTTP POST请求、调用question_classifier.py判断意图、调用answer_grasph.py查图谱、返回JSON答案。启动命令极其简单:python testweb.py,控制台会显示* Running on http://127.0.0.1:5000/。
但这里有个隐藏技巧:用–host=0.0.0.0参数让局域网可访问。执行python testweb.py --host=0.0.0.0,然后在手机浏览器输入http://你的电脑IP:5000,就能用真机测试——答辩时用平板演示,比笔记本屏幕更有说服力。当然,这要求你的电脑和手机在同一WiFi下,且防火墙放行5000端口。
验证服务是否真通?别只信控制台的“Running”提示。打开另一个CMD窗口,执行:
curl -X POST http://127.0.0.1:5000/ask -H "Content-Type: application/json" -d "{\"question\":\"黄芪的功效是什么\"}"
如果返回{"answer":"补气、升阳举陷、益卫固表、托毒生肌"},恭喜,后端链路100%打通。
4.4 前端验证:index.html的零配置奇迹
index.html是整套系统最惊艳的设计。它没有用任何构建工具,纯HTML+CSS+原生JS,所有逻辑都在<script>标签里。打开它,你看到的不是一个静态页面,而是一个实时调用后端的问答界面。操作流程如下:
1. 双击index.html,用Chrome打开(IE不支持fetch API);
2. 在输入框输入“治疗咳嗽用什么药”,点击“提问”;
3. 页面底部会显示“正在查询…”,2秒后弹出答案:“川贝母、杏仁、桔梗、紫菀”。
为什么这么快?因为JS代码里写了缓存机制:if (localStorage.getItem('answer_cache')) {...}。第一次查询后,答案会存到浏览器本地存储,下次同问题直接读取,响应时间趋近于0。这个小细节,让答辩演示时的交互体验丝滑无比——老师随口问3个问题,你0.5秒一个,节奏完全由你掌控。
注意:index.html里的后端地址写死为
http://127.0.0.1:5000/ask。如果你用了–host=0.0.0.0,必须手动改成你的电脑IP,否则手机访问会跨域失败。这是学生部署失败的第一大原因。
5. 常见问题与排查技巧实录:那些没人告诉你的“踩坑时刻”
在带毕设的五年里,我整理了一份“中医药问答系统高频故障速查表”,全是学生深夜微信轰炸我的真实问题。这里挑出最具代表性的六个,附上我的排查口诀和独家技巧。这些问题,90%的学生都会遇到,但80%的人花3小时以上才解决——掌握下面的方法,你能省下至少20小时调试时间。
| 问题现象 | 排查口诀 | 解决方案 | 我的实操心得 |
|---|---|---|---|
| xlsxtoneo4j.py运行报错“ModuleNotFoundError: No module named ‘pandas’” | “缺啥装啥,但别乱pip” | pip install pandas==0.24.2(必须指定版本!新版pandas 1.x与Python 3.6不兼容) | 这个错误出现频率最高。学生常犯的错是pip install pandas,结果装了2.x,然后报更诡异的“ImportError: cannot import name ‘ABCIterable’”。记住:毕业设计环境,版本就是生命线。 |
| Neo4j Browser里能查到“黄芪”,但testweb.py返回空答案 | “查路径,不查结果” | 在testweb.py的answer_grasph.py调用处,加一行print(cypher_query),复制到Browser里执行,看是否返回空。90%是Cypher语法错,比如漏了引号{name:'黄芪'}应为{name:'黄芪'} | 学生总盯着Python代码找bug,其实问题在Cypher。我教他们一个绝招:把question_analyze.py抽取出的实体,手动拼成Cypher,在Browser里跑一遍,结果对了,说明Python没问题;结果错了,说明解析逻辑有漏洞。 |
| index.html点击提问没反应,控制台报“Access to fetch at ‘http://127.0.0.1:5000/ask’ from origin ‘null’ has been blocked” | “跨域?先关浏览器,再开服务” | 关闭所有Chrome窗口,重新以chrome.exe --disable-web-security --user-data-dir="C:/temp"启动Chrome(Windows路径),然后打开index.html | 这是Chrome的安全策略。学生常试图改Flask的CORS配置,但testweb.py压根没装flask-cors库。最简单粗暴的解法,就是用无安全限制的Chrome实例。答辩演示专用,不影响正式部署。 |
| question_classifier.py把“黄芪补气”识别成“查询中药”而非“查询功效” | “看词典,不看模型” | 检查data/目录下的intent_keywords.txt,确认里面是否有“补气”“功效”“主治”等词。没有就手动添加,每行一个词。 | 意图识别用的是关键词匹配,不是机器学习。学生误以为要训练模型,其实只要维护好这个txt文件,就能覆盖95%的常见问法。“补气”“活血”“止咳”这些核心词,必须出现在词典里。 |
| 导入后Neo4j里“黄芪”的性味显示为“甘,微温,无毒” | “删冗余,保主干” | 打开smell.txt,删除“无毒”这一行。xlsxtoneo4j.py会把Excel里的“甘,微温,无毒”整体匹配,但smell.txt里只有“甘,微温”,导致匹配失败,存入原始字符串。 | 中药属性里,“有毒/无毒”属于安全性范畴,不应混入性味。我建议把“毒性”单独建一个toxicity.txt,并在xlsxtoneo4j.py里增加:HAS_TOXICITY边。这既是修复bug,也是你的创新点。 |
| testweb.py启动后,CMD窗口一闪而过 | “看日志,不看窗口” | 用python testweb.py > log.txt 2>&1重定向输出,然后用记事本打开log.txt,最后一行通常是真正的错误。常见是Neo4j密码不对,报“AuthenticationFailed” | Windows双击py文件,错误信息闪退看不到。重定向输出是程序员基本功。log.txt里如果出现Connection refused,99%是Neo4j没启动,或端口不对。 |
除了表格里的硬故障,还有两个软性陷阱必须提醒:一是数据更新陷阱。学生喜欢往Excel里新加药,但忘了重新运行xlsxtoneo4j.py,结果图谱还是旧的。我的建议是:把导入脚本做成.bat批处理,双击就执行,避免遗忘。二是演示话术陷阱。别问“黄芪是什么”,要问“治疗气虚吃什么药”——前者是定义查询,后者才是体现图谱关系推理能力的典型问题。答辩时,老师的问题往往带着临床思维,你的系统得接得住。
6. 毕业设计增值建议:如何把“可用系统”升级为“优秀毕设”
这套系统本身已是优秀的毕设基座,但要拿高分,还需要三个层次的增值动作:功能深化、技术拓展、学术升华。下面是我给往届学生提过、且全部落地的实操建议,拒绝纸上谈兵。
6.1 功能深化:让问答更懂中医临床逻辑
现有系统能回答“黄芪的功效”,但还不能回答“气虚兼自汗用什么药”。这是因为question_analyze.py只抽单一实体,没处理复合证型。升级方案很简单:在question_classifier.py里增加一个“证型组合识别”模块。原理是构建一张《中医证型关联表》,比如“气虚”常与“自汗”“乏力”“食少”共现,“血瘀”常与“刺痛”“面色晦暗”“舌质紫暗”共现。当用户问“气虚自汗”,系统识别出两个证型,就生成Cypher:MATCH (h:Herb)-[:HAS_CURE]->(c1:Cure {value:'气虚'}), (h)-[:HAS_CURE]->(c2:Cure {value:'自汗'}) RETURN h.name。我指导的一个学生,用这个方法扩展了12个常见证型组合,答辩时老师现场提问“肝郁脾虚用什么药”,系统秒答“逍遥散、四君子汤”,全场掌声——因为这体现了中医“辨证论治”的核心思想。
6.2 技术拓展:用轻量模型弥补规则短板
规则引擎对“同义词泛化”支持弱。比如问“党参能治什么病”,系统能答;但问“上党人参功效”,就可能失败,因为Excel里写的是“党参”,不是“上党人参”。解决方案不是换BERT,而是加一个中药别名映射表。利用已有的alias.txt,训练一个tiny-BERT(仅2层transformer),输入“上党人参”,输出最可能的正名“党参”。模型参数仅1.2MB,用TensorFlow Lite转成.tflite,嵌入Python用tf.lite.Interpreter()加载。整个过程,学生用一周就能搞定,代码不超过200行,却能让系统语义鲁棒性提升一个量级。
6.3 学术升华:把工程实践转化为研究价值
毕设论文最容易被诟病“只有代码,没有思考”。破解之道,是把你的调试过程写成方法论反思。比如,在“xlsxtoneo4j.py数据清洗”章节,不要只写“我用了pandas.fillna()”,而要分析:“《本草纲目》原文中,‘气味’栏常写作‘甘,微温,无毒’,但现代中医教材将‘毒性’单列为安全性指标。本系统采用分离式建模(:HAS_SMELL和:HAS_TOXICITY),既保留古籍原貌,又符合临床决策逻辑——这体现了中医药信息化中‘守正创新’的方法论”。这样的论述,瞬间把代码工作提升到学术高度。
最后分享一个小技巧:答辩PPT的黄金三页。第一页:Neo4j Browser截图,高亮显示“黄芪”节点及其所有关系,标题“数据层:可验证的知识结构”;第二页:testweb.py控制台日志,显示从接收到返回的完整时间戳,标题“服务层:可测量的系统性能”;第三页:index.html提问界面,输入“治疗失眠的中药”,弹出答案“酸枣仁、柏子仁、远志”,标题“应用层:可交互的临床价值”。这三页,无需多言,老师自然明白你做了什么、做得多扎实。
我个人在实际操作中的体会是:毕业设计的本质,不是做一个完美的系统,而是证明你具备定义问题、拆解路径、验证结果、反思方法的完整工程能力。这套中医药问答系统,恰好为你提供了所有必要的零件。剩下的,就是拿起螺丝刀,亲手把它组装成一件能打动人的作品——而你现在,已经握住了最关键的那把扳手。
简介:提供开箱即用的中医药知识图谱问答系统实现,基于Python 3.6开发,支持本地一键部署。包含完整中药结构化数据集:草部、金石部、虫部、果部、菜部、兽部、介部、谷部、禽部、鳞部、火部、人部、水部、土部等20个Excel文件,覆盖《本草纲目》主要分类;配套五类属性文本(cure、alias、smell、name、part),可用于图谱构建与语义扩展。内置xlsxtoneo4j.py脚本,自动将Excel批量导入Neo4j图数据库;question_classifier.py实现问题意图识别,question_analyze.py完成实体抽取与关系映射,answer_grasph.py调用Cypher查询生成答案。附带testweb.py简易Web服务和index.html前端演示页,支持HTTP接口调用;所有代码经实测可运行,含requirements.txt依赖清单与详细README说明文档。适用于计算机、人工智能、中医药信息学等专业学生开展毕设、课程设计或实训项目,仅限学习交流与教学演示,不含商业授权。

被折叠的 条评论
为什么被折叠?



