知识图谱学习笔记05 Neo4j 图数据库查询
Neo4j在前面的笔记中已简单介绍过,这里主要介绍Cypher和基于知识图谱的问题系统主题类AnswerSearing框架及相关代码
QASystemOnMedicalGraph
1. Cypher
Cypher是一个描述性的图形查询语言,允许不必编写图形结构的遍历代码对图形存储有表现力和效率的查询。Cypher目前还在发展,后续可持续学习~
Cypher的焦点在于从图中如何找回 (what to retrieve),而不是怎么去做哦,这使得在不对用户公布的实现细节里关心的是怎么优化查询。
2.基于知识图谱的问题系统 主体类 AnswerSearching框架
class AnswerSearching:
def __init__(self):
pass
# 主要是根据不同的实体和意图构造cypher查询语句
def question_parser(self, data):
"""
主要是根据不同的实体和意图构造cypher查询语句
:param data: {"Disease":[], "Alias":[], "Symptom":[], "Complication":[]}
:return:
"""
pass
# 将问题转变为cypher查询语句
def transfor_to_sql(self, label, entities, intent):
"""
将问题转变为cypher查询语句
:param label:实体标签
:param entities:实体列表
:param intent:查询意图
:return:cypher查询语句
"""
pass
# 执行cypher查询,返回结果
def searching(self, sqls):
"""
执行cypher查询,返回结果
:param sqls:
:return:str
"""
pass
# 根据不同意图,返回不同模板的答案
def answer_template(self, intent, answers):
"""
根据不同意图,返回不同模板的答案
:param intent: 查询意图
:param answers: 知识图谱查询结果
:return: str
"""
pass
3. 代码分模块介绍
3.1 根据不同的实体和意图构造cypher查询语句
def question_parser(data):
""