知识图谱

一、知识图谱的概念

如果说人工智能是帮助机器感知这个世界,那么知识图谱就是帮助机器理解这个世界。

图谱图谱,首先是个图,那就必须要有节点和边。我们都知道计算机里的“图”,是由同种类型的节点和同种类型的边组成的。那么知识图谱呢?

可以将“知识图谱”看成是“多关系图Multi-relational Graph”,由不同类型的节点和不同类型的边组成。这种一种模拟人脑对知识的学习理解过程的关联网络。这些节点和边组成的结构化的语义知识库,抽象地描述了现实世界中各种实体及其之间的相互关系。

二、知识图谱的表示方法

  1. 第1种:属性图。图中有实体(节点)+关系(边)+(属于实体的)属性property。常见的关系的种类有:①实例关系②属性关系③分类关系④成员关系⑤聚合关系⑥位置关系⑦相近关系
  2. 第2种:RDF(Resource Description Framework资源描述框架)三元组SPO(Subject Predicate Object)

三、知识信息的抽取

知识信息有2种来源:

  1. 第1种:业务数据库中本来就存在的结构化数据。
  2. 第2种:抓取/爬取出的非结构化数据。

知识信息抽取的难点在于:如何将非结构化的数据转换为结构化的数据:

  1. 实体命名识别Name Entity Recognition:①规则(正则表达式)+专业词汇词典,主要还是字符串匹配识别②基于特征模板来训练统计机器学习算法③不依赖特征工程,利用神经网络进行无监督学习
  2. 关系抽取Relation Extraction
  3. 实体统一Entity Resolution
  4. 指代消除Coreference Resolution

四、知识图谱的存储

知识图谱_第1张图片

Neo4j系统是目前使用率最高的图数据库,它拥有活跃的社区,而且系统本身的查询效率高,但唯一的不足就是不支持准分布式。

五、知识图谱的应用

一般来说,知识图谱会应用在问答、搜索、个性化推荐等场景中。知识图谱的类型决定了其能够发挥作用的领域。总的来说,知识图谱分为通用型知识图谱(Open Domain)领域型/垂直型/行业型知识图谱(Domain-Specific)

通用型知识图谱,关注的是知识的宽度,一般是对常识性知识的沉淀,比如搜索引擎类的百度、Google等的知识图谱、维基百科等等。

领域型/专业型/垂直型知识图谱,关注的是知识的深度。通常沉淀的是专业领域内的知识,知识结构结构比较复杂,要求推理的准确性和可解释性。

1、智能搜索

传统的搜索,底层关键技术是关键词匹配技术,搜索的结果就是与关键词匹配得上的结果。

而运用知识图谱的智能搜索,底层关键技术是知识图谱技术,不仅可以输入关键词进行搜索,还可以输入更符合人脑思考的自然语言组成的语句,而智能搜索得到的结果也不只是与关键词匹配的上的结果,除此之外还有大量与核心结果相关的其他结果,共同组成这次搜索的最终结果。总结起来,就是在传统搜索的基础上,输入可以是更复杂的自然语言,输出的结果也更丰富。

2、智能推荐

可以采用知识图谱对用户进行用户画像,让不同的行销活动达到最合适的人群上去精准营销,获得最高的投入产出比。这其中就用到了基于大量知识图谱数据做的知识推理,现在的推荐算法中常用知识推理来帮助算法挖掘出更多的信息。算法就可以基于这些信息向用户推荐其从未接触过或从未见到过的东西,用户对这些东西的反应有2种。第1种就是显式反馈,好比推荐给你一部新电影,你的评分就显式地反映了你的喜好;第2种就是隐式反馈,好比推荐给你一些衣服,你对这些衣服的不同行为就隐式地反映了你对这些衣服的喜好程度。

3、智能问答

传统方式大多采用配置问答对的方式实现各种问答场景,这种方式适用于比较简单的场景,在关联关系特别复杂或海量数据中还存在着大量多跳关系的场景中就不行了,这时候知识图谱就派的上用场了,智能搜索将加快数据搜索的速度与搜索结果的丰富度。

4、智能专家

知识图谱技术里面本身就包含了“知识抽取”“知识表示”“知识融合”“知识存储”“知识推理”等技术,可以进行领域知识的构建与关联。

六、知识图谱的创建

好比一个业务系统的设计,关键在于数据库表的设计一样。知识图谱系统的设计,一个是要对业务有深入的了解,另一个就是要对业务未来的变化有充分的预估。因此,有大神总结出知识图谱的构建有以下几个步骤:

1、具体业务问题的定义

在具体情境下,不是为了使用知识图谱而使用知识图谱,而是确实有以下强烈的需求和条件需要使用知识图谱,才可以选择构建一个知识图谱系统:

  • 有强烈的可视化需求
  • 常常涉及到对关系的深度搜索
  • 对关系的查询有非常严格的实时性要求
  • 数据类型多样化,不希望出现数据孤岛的情况
  • 有条件搭建知识图谱系统

2、数据的收集&预处理

比如数据源的确认、把非结构化的数据处理成结构化的数据,这个过程中可能会用到自然语言处理技术(NLP)等等。

3、知识图谱的设计

通常要考虑的因素包括:实体,实体的属性,实体间的关系,可以作为属性的实体,可以作为实体的属性。知识图谱的设计要遵循“BEAF”原则:

  • Business Principle业务原则:这个知识图谱的出发点肯定是要解决的业务问题,不仅要贴近业务现状,还要适应业务未来的变化。
  • Analytics Principle分析原则:让这个知识图谱轻量化。类比内存的概念,只有命中率高的数据存在内存中才有意义,同理,只有经常要用于关系查询的数据存储在知识图谱中才有意义。
  • Efficiency Principle效率原则
  • Redundancy Principle冗余原则

4、知识图谱数据的存入

要根据不同的业务情况使用不同的图数据库:

知识图谱_第2张图片

5、上层应用的开发

使用知识图谱来解决实际问题。从算法的角度看,知识图谱有2种不同的使用方式:①基于规则的方式,②基于概率统计的方式,③基于动态网络的分析。

在数据量不大时或者专业性较强的领域,通常会基于规则进行。因为一来数据量不大,基于概率统计会使得知识图谱变得稀疏(Sparse),二来专业性较强的领域规则的制定会相对容易一些。

在数据量很大的时候,通常会基于概率统计进行。一来是因为数据量大,概率统计不会使知识图谱很稀疏,二来是因为在大量数据中进行规则制定也是一件成本极高的事情。

5.1基于规则的方式:

  • 不一致性验证:用一些人为定义的规则去找出潜在的矛盾点。
  • 基于规则提取特征:通常这些特征都是要从知识图谱的2度/3度/4度/n度关系中提取出来,绝不是一眼就可以观察出来的特征。具体要依赖对业务的理解。
  • 基于模式判断:通过一些模式来找出具有特定特征的子图(sub-graph),然后对这个子图做进一步分析。比如这个子图是多个实体的公共部分,或者这个子图是一个具有很强关系的强连通图(Strongly Connected Component)。

5.2基于概率统计的方式:

  • 社区挖掘:社区内部节点的关系密度明显大于社区外部节点的关系密度。
  • 标签传播:节点之间信息的传递对节点本身的影响,有点像“近朱者赤近墨者黑”。
  • 聚类。

知识图谱_第3张图片

5.3基于动态网络的分析:

上述2种方式是基于静态的知识图谱进行分析的,也就是说,关注点只在当前的图谱形状,并未考虑到图谱结构未来的变化。但往往图谱结构的变化中是蕴藏着一些隐含信息的。

6、开发工具

本体/实体开发工具:protege,基于Jena开发的本体设计编辑工具。

 

 

你可能感兴趣的:(算法,知识图谱)