[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍

Content

  • 1. Intro
    • 1.1 任务理解
  • 2. 实战练习
    • 2.1 数据读取
    • 2.2 实现步骤
    • 2.3 熟悉 Cypher 语法的操作
    • 2.4 问答系统操作
  • 参考来源

1. Intro

1.1 任务理解

需要将医疗数据导入到 Neo4j 数据库,并成功建立节点、主要以疾病名称(name)为实体所延伸的栏位,例如:疾病的症状描述(Symptom)、好發群体(Age)、發生部位(part)…etc 。
建立而成的医疗知识图谱,将能帮助我们看到:各个疾病之间在好發群体、疾病發生部位、治疗药物等等的关係呈现。

2. 实战练习

2.1 数据读取

用 pandas 读入,原数据14336条内容,简单看下前五条是:阳痿、乙肝、癫痫、月经不调、颈椎病等。依照任务来看,他们是本次医疗知识图谱的『实体』,也是 build_graph.py 的第一步:create_node
[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第1张图片
編碼格式 GB18030 是跟簡體中文字符相關的編碼方式:

GB18030,全稱《信息技術 中文編碼字符集》,是中華人民共和國國家標準所規定的變長多位元組字元集。其對GB2312-1980完全向下相容,與GBK基本向下相容,並支援Unicode(GB 13000)的所有碼位。GB18030共收錄漢字70,244個。
(Source: 維基百科)

主要有以下特點:

  • 採用變長多位元組編碼,每個字可以由1個、2個或4個位元組組成。編碼空間龐大,最多可定義161萬個字元。
  • 完全支援Unicode,無需動用造字區即可支援中國國內少數民族文字、中日韓和繁體漢字以及emoji等字元。

2.2 实现步骤

首先需要辨识哪些栏位为实体的『Attribute(属性)』,哪些是作为实体与实体之间的『Relationship(关係)』。

  • 跑的时间:大约为 1.5 hr。
  • 主要有三步骤
  1. Create disease node: 创建疾病实体,然后这个疾病的属性包含了:age(年龄)、infection(传染性)、insurance(医保)、treatment(治疗方法)、checklist(检查项目)、period(治癒週期)、rate(治癒率)、money(费用)。

  2. Create node

  • Symptom(症状)
  • Alias(别名)
  • Part(部位)
  • Department (科室)
  • Complication (併發症)
  • Drug(药品)

3.Create relationship
这裡用了 set() 针对重複的关係去重之后,由于每一笔资料都是独立的,因此无序是可以接受的,接着针对每一条数据执行 create relationship 写回 Neo4j 数据库。

整体执行完后,关于边的数量统计如下:[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第2张图片
查询特定的疾病关係,以月经失调为例:
[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第3张图片
下图将同属妇科的实体一起展开来看(这裡不只包含了疾病,也包含了前面所创建的各种实体 e.g. 症状、别名、部位、併發症…etc。
[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第4张图片

2.3 熟悉 Cypher 语法的操作

# query count of relationship
	MATCH (n)-[r]->() RETURN type(r), count(*)
	
# query specific name
	MATCH (n)-[r]->() 
	WHERE n.name='月经不调'
	RETURN n,r

# delete all nodes
	MATCH (n)
	OPTIONAL MATCH (n)-[r]-()
	DELETE n,r

2.4 问答系统操作

Q: 询问月经失调怎麽治
[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第5张图片
[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第6张图片
Q: 出现 error 的情形,当询问的问题无关键字或是不明确的时候,会自动退出查询程序。e.g. 输入繁体字 or 输入女生常说的『大姨妈』。

  • 可能原因:应该是关键字不在 merge_sgns_bigram_char300.txt 当中

[Datawhale Camp] Task02- 基于医疗知识图谱的问答系统操作介绍_第7张图片

参考来源

  1. Datawhale 知识图谱组队学习之Task 2 基于医疗知识图谱的问答系统操作介绍
  2. QASystemOnMedicalGraph
  3. brew update 长时间没反应解决办法或长时间卡在Updating Homebrew
  4. Neo4j Doc - Cypher Functions

你可能感兴趣的:(知识图谱,python,neo4j)