需要根据你的应用场景和数据情况来决定。如果数据量比较小,且图谱节点之间关系较少且不太需要多跳查询,其实mysql就能搞定问题。如果数据量比较小,且会进行多跳查询。
一、构建知识图谱用什么数据库
需要根据你的应用场景和数据情况来决定。
如果数据量比较小,且图谱节点之间关系较少且不太需要多跳查询,其实mysql就能搞定问题。
如果数据量比较小,且会进行多跳查询,比如“姚明老婆的女儿叫什么?”,这种用图数据neo4j比较合适(它的开源版本是单机版,如果要支持分布式需要用收费版)
如果数据量比较大,且会进行多跳查询,可以考虑用titan,我们是用公司自己研发的分布式图数据库。
RDF存储的那种jena系统,没有见到有工业界同事使用,不做评价。
PS:有时候单一的存储无法满足所有需求,可能需要几个系统搭配使用。比如我们使用图数据库来查多跳查询,使用elasticsearch来进行模糊搜索和相关度排序。
知识图谱的基本单位,是“实体(Entity)-关系(Relationship)-实体(Entity)”构成的三元组,这也是知识图谱的核心。
若两个节点之间存在关系,他们就会被一条无向边连接在一起,那么这个节点,我们就称为实体(Entity),它们之间的这条边,我们就称为关系(Relationship)。
在逻辑上,我们通常将知识图谱划分为两个层次:数据层和模式层。
· 数据层:存储真实的数据。如 C罗-足球运动员-皇家马德里;C罗-金靴奖-世界杯。
· 模式层:在数据层之上,是知识图谱的核心,存储经过提炼的知识,通常通过本体库来管理。即实体-关系-实体,实体-属性-性值。
延伸阅读:
二、信息抽取是什么
信息抽取(infromation extraction)信息抽取是一种自动化地从半结构化和无结构数据中抽取实体、关系以及实体属性等结构化信息的技术。关键技术包括:实体抽取、关系抽取和属性抽取。
1、实体抽取,也称为命名实体识别(named entity recognition,NER),是指从文本数据集中自动识别出命名实体。
当前主流技术为面向开放域(open domain)的实体抽取。
2、关系抽取,为了得到语义信息,从相关语料中提取出实体之间的关联关系,通过关系将实体联系起来,才能够形成网状的知识结构。其技术研究已经从早期的“人工构造语法和语义规则”(模式匹配),“统计机器学习”发展到“面向开放域的信息抽取方法”与“面向封闭领域的方法”相结合。
3、属性抽取,目标是从不同信息源中采集特定实体的属性信息,如针对某个公众人物,可以从网络公开信息中得到其昵称、生日、国籍、教育背景等信息。采用数据挖掘的方法直接从文本中挖掘实体属性和属性值之间的关系模式,据此实现对属性名和属性值在文本中的定位。