从寻医问药、百科名医等网站上看了疾病相关的信息,包含说明、病因、症状、并发症等等信息,如果利用这些信息?尝试一下知识图谱来解决。
一开始使用了 Apache 的 jena,花了几天,弄懂了基本原理,但使用起来还是比较费劲。有试用了neo4j,感觉比jena还用一点,先用neo4j吧。
准备数据:
- 抓取网页,使用到了 scrapy
- 网页数据提取,使用到了xpath
- 数据存储使用到redis 和 mongodb
- 花了几天时间,整理 disease、symptom、cause、drug、check等医疗知识,大约40多万条,他们之间的关系大约500万条。
- 一开始导入neo4j,花了几十个小时,后面查资料,可以通过 neo4j-admin.bat import --mode=csv 导入,几分钟就行了
第一个查询: MATCH p=(d:Disease)-[r:cause_highlight]->(h:Highlight) WHERE h.name = '吸烟' RETURN p LIMIT 2500
结果如下图:
从关联关系来看,吸烟对身体还是有很多害处的,肺癌、心脏病、冠心病