知识图谱的典型应用
语义理解
智能搜索:基于人的关键词直接匹配其摘要信息 返回其摘要 改造搜索引擎对外展示信息的方式
智能问答:准备知识库,eg:EVI,Siri,头条智能问车
辅助决策:IBM沃森系统 医疗助手 诊断疾病
人工智能:感知能力 认知能力 服务能力
知识图谱是人工智能进步的阶梯
知识图谱的体系结构:
知识获取(爬虫众包)→知识存储→知识表示→知识应用
知识架构
语义类型设计:节点分类的研究
语义关系设计: 节点与节点关系的研究
语义关系:相关关系(概念相关 空间相关 时间相关 物理相关 功能相关) 向下位关系
通用关系 :高级抽象层面 复用别人已经抽象好的
特殊关系 :追加
知识图谱设计方法
专家法
参照法
归纳法
混合法
原则:围绕业务规划产品 基于团队选择方法
数据价值链模型
数据:50kg
信息:人的体重是50kg
知识:身高是170 合理体重是60kg
信息是可以被人理解的内容 知识可以被机器理解的内容
语义类型设计
以音乐领域知识图谱构建为例
singer
song
album
style
语义关系设计
本体对象设计
对象识别 (本体建模平台工具:protege protege.stanford.edu)
属性设计
知识存储模型
三种方式:
关系数据库RDBMS:体量比较小 属性相似的主语聚为一张表
三元组RDF:语义网而产生的 (三元组包括:对象 对象的属性 对象的取值)问题:1数据量多的时候不适合 2存取多个属性存在自连接操作,开销巨大
rdf本身是基于xml来描述的
图数据库:体量比较大 单机/集群
不需要研究实体之间关系的内容
需要频繁计算的内容
不放入
节点 会包括类型和属性
RDF数据库 MarkLogic 类似mongodb
图数据库 Neo4j
工业级应用Titan
Neo4j可视化操作基础
命令编辑器:shift+enter 换行
将结果展示页全部清空
同一个节点可以创建多次 但id不同
使用创建唯一属性的操作
CQL语法基础
对标关系型数据库
Node Labels:一张表
每个节点:表里的一条记录
Relationship Types关系类型:关系表(学生选课的关系表)
Property Keys:表中每一列的名称
code部分与通过api调用产生的结果一样
知识图谱存储CQL操作基础
:help
help Cypher → play Cypher
create
match(等同select)
创建一个节点
如何保证节点对象全局唯一呢?允许有多个节点name相容 其id不同
删除数据库
1.清空数据库(语法delete):表的列属性无法删除
2.把数据库全部删掉:停掉neo4j服务,找到数据库文件,直接删掉
启动会自动重新生成新的数据库
neo4j 社区办启动一个新的数据库
Neo4j操作实例
:play movie graph
neo4j数据库管理
系统监控
:sysinfo 查看数据库信息(社区版没有)
数据备份
neo4j-admin.bat help
查看该批量操作脚本提供哪些功能
命令help memrec 等
与备份相关的命令:load dump
dump 将某个数据库存储到某个目录下面
所需要的环境变量
备份
dump (neo4j-admin.bat dump --help)
具体 neo4j-admin.bat dump --to"e://003.db"
数据库恢复:load
数据库删除
:play start 欢迎界面吊起
cmd以管理员身份运行,否则有些命令不能执行(dump load 等)
直接删除库的文件夹(因为只能删除节点和关系 没法删除列属性,所以只能删库)
Neo4j开发环境部署
分为服务器版和桌面版 选择服务器版 可35亿节点左右
有些数据集只使用于neo4j早期版本,可下载早期版本进行数据格式的转换导入最新的版本
bin目录:如何启动图数据库(安全验证等),执行文件的位置,存储neo4j的可执行程序
conf目录:启动配置文件(验证是否开启 内存空间设置 默认监听地址)
log目录:定位错误问题
plugins目录:存储neo4j的插件
import目录:本地往neo4j导入csv文件的时候需要用到的文件夹,放入文件系统会自动识别
HOME:
PATH:bin目录
运行方式1.命令行 2.安装到windows服务的方式
知识图谱应用
智能聊天机器人
https://pypi.org/project/python-aiml/ 下载的时候选择源码或安装包
aiml文件夹存储了 大量基于英文的对话语料库
github地址:https:github.com/cdwfs/pyaiml(通过研究源码了解更多的东西)
import aiml 导入语料库
import sys 导入系统库
import os 导入操作系统库
人工智能标记语言AIML
python与neo4j的集成
noe4j支持的开发语言:Java Javasript python .net
python setup.py install 源码安装参考
py2neo目录下 pip show py2neo 可查看版本等信息
Neo4j与AIML的集成
调度预先配置好的问答对,在特定场景下通过调用知识图谱里的内容来形成答案。
人机交互精在知识图谱中的应用往往集中在特定领域,比如精准内容的检索
输入宝马X3 返回完整宝马X3的配置信息 放在知识图谱中
研究人与人之间的关系 人与事物之间的关系,问答对需要设定特定的句式
比如姚明的女儿,也可自己开发解析程序去明确识别节点 和节点所要寻找对象之间的关系,通过这种方式查找精准的内容
知识图谱获取
常用知识获取方式
国内外知识图谱资源
OpenKG