Giter Site home page Giter Site logo

kgqa-based-on-medicine's Introduction

基于医药知识图谱的智能问答系统

  • 这是一个基于Python模块REfO实现的知识库问答初级系统. 该问答系统可以解析输入的自然语言问句生成 SPARQL 查询,进一步请求后台基于TDB知识库的Apache Jena Fuseki 服务, 进而得到问题的结果。
  • 提供疾病症状、疾病用药、药品查询等功能。
  • demo演示

需要环境

  • python3.5.2开发环境
    • 安装jieba中文分词组件
    • 安装sparqlwrapper,python与Apache Jena Fuseki服务的交互组件
    • Django,Web应用框架,用于交互展示
  • Apache Jena,是一个开源的Java语义网框架(open source Semantic Web Framework for Java),用于构建语义网和链接数据应用
    • apache-jena-fuseki,开启Apache Jena Fuseki 服务
  • Java环境,Apache Jena需要在Java环境下运行
  • 数据

怎么运行

  • 下载TDB药品疾病知识库数据 & clone项目代码
  • 开启Apache Jena Fuseki 服务
    • 将TDB数据和Apache Jena Fuseki放在同一个目录下。
    • 进入Apache Jena Fuseki文件夹,运行fuseki-server.bat,然后退出。程序为我们在当前目录自动创建“run”文件夹
    • 将项目代码apache_configuration文件夹下的kgdrug.tll和rules.tll文件移动到“run”文件夹下。
      • kgdrug.tll:知识库本体文件
      • rules.tll:规则推理配置文件
    • 将项目代码apache_configuration文件夹下的fuseki_conf.ttl文件移动到“run”文件夹下。
      • fuseki_conf.ttl:Fuseki配置文件,主要配置上述两个文件的路径和TDB知识库路径
    • 上述操作配置好后,再次运行fuseki-server.bat,开启Apache Jena Fuseki 服务
  • 安装python环境需要的包
pip install requirements.txt
  • 这里需要修改项目代码中setting.py文件中的字典导入路劲,因为我们的文件路径可能不一样。
  • 运行KB_query文件夹中的query_main.py,开启命令行模式。
python query_main.py
  • 在项目根目录下运行manage.py,开启项目的web模式
python manage.py runserver

可能遇到的问题

  • 第二次开动Apache Jena Fuseki 服务时,如果启动失败,需要到TDB文件把prefix前缀的文件全部删除掉。
  • 代码运行错误,应该大部分集中在路径错误上,请仔细阅读报错信息。

项目不足

  • 只支持一问一答式的对话。
  • 只支持查询知识库有的数据,知识库不包含的数据则查询不到。
  • 页面UI设计交简陋

后期更新

  • 加入药品、疾病的同义词,增加系统的鲁棒性
  • 增加疾病推断功能
  • 增加多轮式对话功能
  • 重新设计页面UI

参考

基于 REfO 的 KBQA 实现及示例

kgqa-based-on-medicine's People

Contributors

yeyzheng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kgqa-based-on-medicine's Issues

查询结果总是返回None值?

进行python query_main的时候,我试着打印,发现返回的结果总是None值,所以得到下面这个结果:
I can't understand. :(
####################################################################################################

请问要怎么解决?

本地的chrome显示有问题

项目运行成功,我用ie看正常,chrome问答部分显示问题。不过已经挺好了。

另外,请问:

  1. 医疗数据来自哪里?
  2. 增加疾病推断功能,有什么思路呢?

记录一下坑,给其他人借鉴

  • readme中
    • kgdrug.ttl rules.ttl应该放在run/datasets下
    • fuseki_conf.ttl放在run/configuration下,这样运行.bat时才会读取fuseki_conf文件
    • 打开fuseki服务后,浏览器打开localhost:3030看是否成功
  • fuseki_conf文件需要修改:
    • 本体kgdrug.ttl路径
    • rules.ttl路径
    • tdb_drug_new路径(最后一行)
  • windows路径中把\改成/,我用的windows

返回I don't understand

这个代码分为两部分,一部分是使用fuseki,另一部分是python的网页,但是python的网页好像并没有提交查询到fuseki的3030端口,我在网页提交问题,在fuseki的命令行没看到post,感觉并没有提交给3030端口

为什么在windows运行有问题?

[16/Jul/2019 21:02:15] "GET / HTTP/1.1" 200 3224
Not Found: /kgqa-demo
[16/Jul/2019 21:03:12] "POST /kgqa-demo HTTP/1.1" 404 2107
Using the URLconf defined in KGQA_Based_On_medicine.urls, Django tried these URL patterns, in this order:

^$
^static/(?P.*)$
The current path, kgqa-demo, didn't match any of these.
这个是什么原因呢,求回答

运行出现错误

EndPointNotFound: it was impossible to connect with the endpoint in that address, check if it is correct.

tdb数据上传有问题

windows数据无法上传成功
我尝试在localhost:3030界面里操作总提示
总是提示Result: failed with message "SyntaxError: JSON.parse Error: Invalid character at position:1"
是发布者给了我们错误数据吗
有没有传成功了的,对fuseki不熟

http://120.78.207.99:8000/kgqa-demo 运行出错

怎么预防肌肉疼痛?

Request Method: POST
http://120.78.207.99:8000/kgqa-demo
2.0.3
URLError
<urlopen error [Errno 99] Cannot assign requested address>
/usr/lib/python3.5/urllib/request.py in do_open, line 1256
/usr/bin/python3
3.5.2
['/var/www/project_2018', '/var/www/project_2018', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages', '/var/www/project_2018/kgqa/KB_query', '/var/www/project_2018/kgqa', '/var/www/project_2018/kgqa/KB_query', '/var/www/project_2018/project_2018', '/var/www/project_2018/kgqa/KB_query']
Thu, 30 Aug 2018 05:10:54 +0000

http503

一切正常,路径按照实际改过,可输入文字提交后转到错误界面,提示HTTP Error 503: Service Unavailable,各库版本与您一致,query_main运行后输入问题也报同样的错误,重启也试过,不知怎么回事

没有结果响应

您好,命令行,页面我都可以运行,但是输入没有正确响应

页面:按照提示输入
蜘蛛咬伤的概述是什么?,

def search_post(request):
ctx = {}
if request.POST:
question = request.POST['q']
ctx['rlt'] = query_main.query_function(question) #执行到这里报错了
print(ctx['rlt'])
return render(request, "post.html", ctx)

print 结果:
SELECT DISTINCT ?x WHERE {
?s :jibingname '蜘蛛咬伤'.?s :gaishu ?x
}

出现503错误,

其他就是无法理解之类,

命令行都是I dont .....之类

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.