All Projects → SimmerChan → Kg Demo For Movie

SimmerChan / Kg Demo For Movie

从无到有构建一个电影知识图谱,并基于该KG,开发一个简易的KBQA程序。

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Kg Demo For Movie

Awesome Kgqa
A collection of some materials of knowledge graph question answering
Stars: ✭ 188 (-78.54%)
Mutual labels:  knowledge-graph, question-answering
Nspm
🤖 Neural SPARQL Machines for Knowledge Graph Question Answering.
Stars: ✭ 156 (-82.19%)
Mutual labels:  knowledge-graph, question-answering
Mspars
Stars: ✭ 177 (-79.79%)
Mutual labels:  knowledge-graph, question-answering
Agriculture knowledgegraph
农业知识图谱(AgriKG):农业领域的信息检索,命名实体识别,关系抽取,智能问答,辅助决策
Stars: ✭ 2,957 (+237.56%)
Mutual labels:  knowledge-graph, question-answering
CONVEX
As far as we know, CONVEX is the first unsupervised method for conversational question answering over knowledge graphs. A demo and our benchmark (and more) can be found at
Stars: ✭ 24 (-97.26%)
Mutual labels:  knowledge-graph, question-answering
Gnn4nlp Papers
A list of recent papers about Graph Neural Network methods applied in NLP areas.
Stars: ✭ 405 (-53.77%)
Mutual labels:  knowledge-graph, question-answering
Shukongdashi
使用知识图谱,自然语言处理,卷积神经网络等技术,基于python语言,设计了一个数控领域故障诊断专家系统
Stars: ✭ 109 (-87.56%)
Mutual labels:  knowledge-graph, question-answering
Knowledge Graphs
A collection of research on knowledge graphs
Stars: ✭ 845 (-3.54%)
Mutual labels:  knowledge-graph, question-answering
Tw5 Tiddlymap
Map drawing and topic visualization for your wiki
Stars: ✭ 620 (-29.22%)
Mutual labels:  knowledge-graph
Insuranceqa Corpus Zh
🚁 保险行业语料库,聊天机器人
Stars: ✭ 821 (-6.28%)
Mutual labels:  question-answering
Research
novel deep learning research works with PaddlePaddle
Stars: ✭ 609 (-30.48%)
Mutual labels:  knowledge-graph
Dgl Ke
High performance, easy-to-use, and scalable package for learning large-scale knowledge graph embeddings.
Stars: ✭ 625 (-28.65%)
Mutual labels:  knowledge-graph
Multi Drug Embedding
Method for drug repurposing from knowledge graphs and literature
Stars: ✭ 18 (-97.95%)
Mutual labels:  knowledge-graph
Knowledge graph attention network
KGAT: Knowledge Graph Attention Network for Recommendation, KDD2019
Stars: ✭ 610 (-30.37%)
Mutual labels:  knowledge-graph
Kbqa Bert
基于知识图谱的问答系统,BERT做命名实体识别和句子相似度,分为online和outline模式
Stars: ✭ 846 (-3.42%)
Mutual labels:  knowledge-graph
Qa Snake
基于多搜索引擎和深度学习技术的自动问答
Stars: ✭ 602 (-31.28%)
Mutual labels:  question-answering
Awesome Qa
😎 A curated list of the Question Answering (QA)
Stars: ✭ 596 (-31.96%)
Mutual labels:  question-answering
Spago
Self-contained Machine Learning and Natural Language Processing library in Go
Stars: ✭ 854 (-2.51%)
Mutual labels:  question-answering
Bert language understanding
Pre-training of Deep Bidirectional Transformers for Language Understanding: pre-train TextCNN
Stars: ✭ 933 (+6.51%)
Mutual labels:  question-answering
Recbole
A unified, comprehensive and efficient recommendation library
Stars: ✭ 780 (-10.96%)
Mutual labels:  knowledge-graph

上手教程

如果对相关概念不是很了解,建议可以先看看该代码配套的知乎专栏系列文章。

Demo效果

image

环境配置

  1. Python版本为3.6
  2. 安装依赖pip install -r requirements.txt
  3. jena版本为3.5.0,已经上传在该repo中(如果不用Docker运行demo,需要自己修改配置文件中的路径)。
  4. d2rq使用的0.8.1

运行方式

这里提供两种运行demo的方式:

  1. 直接构建docker镜像,部署容器服务。推荐这种方式,已经把各种环境配置好了。只需要安装docker,构建镜像。
  2. 直接在本地运行。需要自行修改配置文件(jena/apache-jena-fuseki-3.5.0/run/configuration/fuseki_conf.ttl配置文件中的路径)

构建docker镜像

进入项目根目录

docker build -t kbqa:V0.1 .
docker run -p 80:80

打开浏览器,输入localhost,即能看到demo界面。

本地运行

其实就是把Dockerfile里面的命令直接在本地环境运行(记得修改configuration/fuseki_conf.ttl中的文件路径)。

第一步:安装依赖库

pip3.6 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

第二步:将nt格式的三元组数据以tdb进行存储(怎么得到kg_demo_movie.nt文件请参考实践篇二)。

/kbqa/jena/apache-jena-3.5.0/bin/tdbloader --loc="path_of_tdb" "path_of_kg_demo_movie.nt" # 自行指定tdb的路径,记得和configuration/fuseki_conf.ttl中一致

window环境是使用/kbqa/jena/apache-jena-3.5.0/bat/tdbloader.bat

第三步:设置环境变量(windows如何设置请自行查询;也可以不设置streamlit端口,使用默认端口,第五步启动后会提示服务的端口)

export LANG=C.UTF-8 LC_ALL=C.UTF-8 STREAMLIT_SERVER_PORT=80 FUSEKI_HOME=/kbqa/jena/apache-jena-fuseki-3.5.0

第四步:运行fuseki(进入apache-jena-fuseki-3.5.0子目录,windows运行fuseki-server.bat)

./fuseki-server

第五步:运行web服务。

streamlit run streamlit_app.py --server.enableCORS=true

打开浏览器,输入指定的地址即可。

问题集锦

  1. fuseki-server服务启动后,关闭重启会报错。这是jena的一个bug,把tdb中的文件删了,重新用tdbloader命令生成一次即可。

目录结构

Data文件夹

包含ER图模型文件和创建数据库、表,插入所有数据的sql文件。用户可以直接使用sql文件导入数据到mysql中。

kg_demo_movie文件夹

  • crawler中的movie_crawler用于从The Movie DB下载数据,用户需要自己去网站注册账号,申请API KEY。在脚本中填入自己的API KEY,填写mysql相关参数即可运行。用户需要额外下载的包:requests和pymysql。tradition2simple用于将繁体字转为简体字(声明一下,我找不到该文件的出处了,我是从网上找到的解决方案,如果有用户知道该作者,麻烦告知,我会备注)。
  • KB_query文件夹包含的是完成整个问答demo流程所需要的脚本。
    • "external_dict"包含的是人名和电影名两个外部词典。csv文件是从mysql-workbench导出的,按照jieba外部词典的格式,我们将csv转为对应的txt。
    • "word_tagging",定义Word类的结构(即我们在REfO中使用的对象);定义"Tagger"类来初始化词典,并实现自然语言到Word对象的方法。
    • "jena_sparql_endpoint",用于完成与Fuseki的交互。
    • "question2sparql",将自然语言转为对应的SPARQL查询。
    • "question_temp",定义SPARQL模板和匹配规则。
    • "query_main",main函数。在运行"query_main"之前,读者需要启动Fuseki服务。

ontology.owl

通过protege构建的本体,用户可以直接用protege打开,查看或修改。

kg_demo_movie_mapping.ttl

根据d2rq mapping language编辑的映射文件,将数据库中的数据映射到我们构建的本体上。

kg_demo_movie.nt

利用d2rq,根据mapping文件,由Mysql数据库转换得到的RDF数据。

fuseki_conf.ttl

fuseki server配置文件,指定推理引擎,本体文件路径,规则文件路径,TDB路径等

rules.ttl

规则文件,用于基于规则的推理。

streamlit_app.py

web demo文件,基于streamlit库。

兴趣群

我创建了微信群,给大家提供一个交流的渠道。由于各种原因,我可能无法及时回答大家的问题;同时,个人的力量是渺小的,我对各位遇到的问题也不一定都了解,因此希望大家通过这个群能解决自己遇到的问题。群主题不局限于KG,也包括NLP的一些话题。公众号也会提供一些相关的资源和学习材料。

公众号:尘世美小茶馆(simmer_teahouse)

image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].