知识图谱的感性认识

定义

知识图谱可以分割为知识和图谱。知识包含实体和实体之间的联系,

图谱就是用图的方式把实体和它们之间的关系用图表示出来。

例如微信,我和我的朋友以好友的关系而关联起来,而我的朋友又有他们的朋友圈,进而把整个关系群以一个网络的方式关联起来。

kg-overview

用途

  • 智能问答

    如果拥有了一个知识图谱,就可以构建一个智能问答系统

    例如如果输入是:我感冒了应该看什么科

    系统通过查找感冒和科室的关系,就可以找到科室应该为呼吸内科

    系统就可以回答:呼吸内科

kg-qa

  • 反欺诈

    在风控领域,数据一般以人为单位,人跟人存在一种关系,人跟消费记录,行为记录,网上浏览记录形成了另外的一些关系,那么风控团队就获得了一张非常大的网络图

    当需要对某人进行风控分析,可以使用Graph embedding对每个人的图进行向量化,然后放入机器学习的模型进行训练和预测,从而得出欺诈的预判

kg-graph-embedding

  • 不一致性检验

    例如借款人张三说李四是他的父亲,王五是他的朋友;而同时王五说李四是他的父亲,张三是他的朋友。那么通过分析知识图谱,并进行推理,朋友的父亲不可能一样,引发不一致。此时就可以检测出,借款人有异常

kg-trick

  • 智能搜索

    例如Google,百度搜索

  • 知识推理

kg-toporve

存储

对于知识图谱,需要存储所有信息只有实体和实体之间的关系

一般来说市面上有非常多的图数据库引擎可以使用

例如最热门的neo4j

图数据库与传统关系性数据库

大家可能有疑问,对于实体和实体之间的关系,是可以通过关系性数据库来存储的。

为什么需要图数据库?

按我的理解

  • -关系型数据库更多的关注实体和实体的属性,对关系的描述并不大看重,虽然有外键
  • 在关系行数据库定义实体,表的数量会随着实体的数量而线性递增,如果单从实体和关系的角度分析,模型过于复杂
  • 关系型数据库难以分布式存储,难以承受大数据
  • 图数据库模型非常简单,就是实体和关系
  • 图数据可以对这种简单的模型使用图算法更好的存储和检索数据
  • 图数据非常容易做到分布式,适合大数据的存储

融合(构建)

需要构建知识图谱,首先需要数据的导入

一般来说数据源都是非结构化的,例如网络上爬取下来的网页,音频文件,视频文件,图片

需要使用到的技术有NLP,图片信息抽取,音频转文本等技术

此篇只关注NLP技术,其他技术,只是在信息提取的细节不一样,对于融合到知识图谱的过程,是一致的。

NLP信息融合

NLP目前市面上有非常多的第三方库可以使用,在避免重复造轮,我们在应用上,应该更多的使用市面上的库,而不是自己写,对于NLP的理论知识,后面会有一篇博文分享。

对于此篇,我们关注NLP库给我们提供了什么,我们可以基于这些库,可以做什么。

pyltp的功能

库的使用如下:

https://pyltp.readthedocs.io/zh_CN/latest/api.html

  • 分句

kg-ltp-fenju

  • 分词

kg-ltp-fenci

  • 词性标注

kg-ltp-cixingbiaozhu

  • 命名实体识别

kg-ltp-mingmingshiti

  • 依存句法分析

kg-ltp-yicunjufa

  • 语义角色标注

kg-ltp-yuyijuese
OK!有了上面对pyltp的感性认识,相信大家如果收到一份文本,通过使用以上的API,就可以轻而易举地分析出文本的信息。

关键词提取

例如我们要构建一个医疗问答系统,我们需要的信息如下:

  • 病名
  • 药名
  • 科室
  • 症状
  • 可以吃的食物
  • 不可以吃的食物

那么我们拿到一份非结构化的医疗报告,我们改怎么把非结构化的报告转化为知识图谱呢?

  • 定义关键词
  • 对文本进行NLP提取
  • 匹配关键词,确定实体和关系
  • 存入图数据库

例如病名,由于病名的数量是确定的,此时我们可以从某个医学的语料库找到大部分的病名,并定义为关键词

例如食物,一般来说食物前的动词时吃,食等动词,通过找到动宾结构,匹配动词,就可以确定谓语是食物

例如科室,通过命名实体识别找到所有的实体,并匹配是否包含关键词 ‘科’ ,就可以找到科室的名字

。。。。

功能

到目前为止,我们有了知识图谱,那么基于它,可以做什么呢?

成为其他机器学习输入参数

有了实体,有了关系,有了图,有了属性。

此时可以通过提取实体在图中的特征,并转化为vector特征,就可以对实体进行任何机器学习模型的输入参数

并进行更深度的数据挖掘。

kg-graph-embedding

Graph2vec

通过分析图的特征,并转化为vector的方法有很多,以下跟大家介绍Deepwalk

Deepwalk

kg-deepwalk

  • 每个节点都有一个向量w
  • 对u进行随机游走t次
  • 那么就可以得到对u节点的1个序列(u,w1,w2, w3...wt)
  • 通过skip-gram得出向量

kg-deepwalk-skip-gram

知识抽取

有了知识图谱在图数据库中

我们就可以各实体之间的关系。

例如我问系统:苏格拉底死了没有?

kg-answer

原文地址:https://www.cnblogs.com/kukafeiso/p/13917946.html