• 知识图谱的感性认识


    定义

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

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

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

    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

  • 相关阅读:
    2020牛客暑期多校训练营(第三场)
    2020牛客暑期多校训练营(第二场)
    C# 获取枚举类型中所有描述信息 Xinner
    XPath Xinner
    02kubeadm安装
    thinkphp6:访问redis6(thinkphp 6.0.9/php 8.0.14)
    npm8.3.0 安装@vue/cli 4.5.15
    linux(ubuntu 21.10): php8.0.14:安装phpredis以访问redis(phpredis5.3.5)
    linux(ubuntu21.10):apt方式安装redis6.0.15
    阿里云何万青:南坡VS北坡,阿里云高性能计算行业实践
  • 原文地址:https://www.cnblogs.com/kukafeiso/p/13917946.html
Copyright © 2020-2023  润新知