KG简要构建流程

知识图谱可以简单理解为语义网络或多关系图——图结构

涉及技术

数据获取

  • 爬虫抓取自己所需的数据——公开或半公开数据
  • 数据库读取已有数据——业务数据
  • API——第三方数据

所有的数据需要整合到MySQL之类的数据库中——数据持久化

数据预处理

  • 数据清洗:去掉无关信息,提前做字段对齐(数据融合中要用到)
  • 知识抽取:从非结构化文本抽取关键信息
  • 消歧分析:实体统一——比较关键的步骤

导入数据到知识图谱

  • 数据筛选——业务所需的知识

  • 知识图谱设计——类似于数据库设计,需要耗费较多时间

  • 批量导入——高效导入历史数据,此时数据已经处理为node-relationship 格式

    MySQL -> MySQL Connector -> APOC -> Neo4j

    • 可用neo4j数据库从MySQL中导入数据
    • 可用APOC插件,可实现功能
      • 索引管理:加快查找
      • 图算法:PR 、中心算法 、社区检测
      • 实用函数:域名提取,时间和日期,数字格式转换等
      • 空间函数:地理编码、位置计算、空间与时间搜索等
      • 数据集成:JSON、JDBC、CSV等数据加载——数据传导
      • 图形重构:节点合并、属性规范化与分类等
      • 虚拟节点/关系:创建虚拟图——类似于虚表
      • Cypher操作:Cypher语句和脚本运行
      • 触发器
  • 增量导入——实时导入更新数据

    • 基于Canal的数据库增量日志解析 Canal Server -> Canal Client -> Kafka producer
    • 基于Kafka的实时分布式消息 Kafka producer -> Kafka -> Kafka consumer -> Neo4j Driver

应用层的搭建

基于业务需求在分布式或微服务平台上搭建数据模型 Neo4j -> Restful API 或 Spark Graph X

  • 如抽取实体的相关特征,构建特征工程
  • 基于特征工程用逻辑回归(常用于二分类问题)、GBDT、SVM、神经网络等方法搭建模型——更复杂的模型如DL,需要更多的数据。
    • 定义目标函数:模型的实例化
    • 优化目标函数:训练模型——梯度下降法(迭代比较低效),随机梯度下降法(参数更新只依赖一个样本,非常高效)
  • 优化目标函数
  • 模型评估:准确率(存在样本不均衡问题,两种错误代价相同问题)、AUC
  • 微服务:将功能按进行细分,每个功能对应一个服务,运行在独立的进程,服务间采用轻量级的通信机制,通常是基于HTTP协议的RESTful API ——基于协议的通信方式,与语言无关。但是不要多度拆分