知识图谱笔记-(2)

图数据库:neo4j, arangodb, 
知识表示和表示学习是两个概念
知识链接可以简单的认为是知识融合
知识图谱的应用案例:推荐、搜索、问答、决策
--基于图谱增强的可解释推荐 : 冰箱(一次买,使用周期长);可乐(消耗品)
    可解释性推荐,
    基于知识图谱,实现自动生成只能创意文案
--基于图谱的智能搜索
    搜索对于语言处理的要求越来越高,体现在以下方面:
    -语义精确理解:输入的不仅仅是关键词,可能是一句包含逻辑关系的文本
    -意图精准理解:“苹果味 唇膏” “唇膏 苹果味”, 都是搜索唇膏,而不是苹果
    -跨媒体协同搜索:根据图片定位文字,根据文字定位视频等等
--基于图谱的智能问答
--基于图谱的智能决策
    知识图谱为决策支持提供深层关系发现和推理能力。kenshou系统

二、知识的存储和检索
1.neo4j简介和安装

--图数据库:graph database, 是NoSQL数据库,用于存储丰富的关系数据,支持完整的事务
--属性图:顶点(Vertex)、边(Edge)、属性(Property)组成;顶点和边都可以设置属性,顶点也称节点,边也称关系,每个节点和关系都可以由一个或多个属性。
--Neo4j创建的图是用顶点和边构建的一个有向图,其查询语言cypher。
--图形数据库适合查询关系数据
--图形数据库不适合做海量数据统计分析
--Neo4j只访问与遍历相关的节点,不受到总数据集大小的影响。
--安装:
    -安装JDK
    -下载neo4j的安装包
    -保存Desktop Key
    -双击安装包
    -填写保存的Key,等待安装完成

2.neo4j的基础语法

--创建一个新的DB
--创建一个节点的命令:create(variable:label{key1:value1,key2:value2})
--创建一个电影节点的命令:create(n:film{name:'龙争虎斗',type:‘犯罪’,score:8.9})
--同时创建多个节点:create(:film{name:'龙争虎斗',type:‘犯罪’,score:9.1})
            (:film{name:'西游降魔',type:‘科幻’,score:6.9}),
            (:film{name:'霸王别姬',type:‘剧情’,score:8.9}),
            (:film{name:'盗梦空间',type:‘剧情’,score:9.9}),
            (:film{name:'绿里奇迹',type:‘剧情’,score:8.2})
--merge命令会起到去重的功能
--创建关系: match(a:director),(b:film)
         where a.name='弗拉德.德拉邦德' and b.name='肖申克的救赎'
         create(a)-[r:direct]-->(b)
--查询结果:match(a:director) return a
--删除节点和关系:match(a:actor)
          where a.name='马修。麦康纳'
              delete a

3.neo4j批量构建节点和关系

--基于csv文件导入的方式批量构建节点
    -load csv with headers from 'file:///exchange.csv' as line 
         create(:exchange{name:linke.name,ch_name:line.ch_name,code:line_code})
--基于csv文件导入的方式批量构建关系
    -load csv with headers from 'file:///stock_exchange.csv' as line
     match(a:stock{code:line.stock_code}),
         (b:exchange{code:line.exchange_code})
         create(a)-[r:交易所]-->(b)

4.py2neo的使用

--如何基于py2neo创建节点和关系
import py2neo 
from py2neo import Graph
from py2neo import Node
from py2neo import Relationship as rls
from py2neo import NodeMatcher as nmc

test_graph = Graph('http://localhost:7474',user='neo4j',password='123456')
test_node1 = Node("Person",name="Tom")
test_node2 = Node("Person",name="Jerry")
test_node1['age'] = 8
test_node2['age'] = 19
test_node1['sex'] = 'male'
test_node2['sex'] = 'female'

test_graph.create(test_node1)
test_graph.create(test_node2)

fried = rls(test_node1,'friend',test_node2)
test_graph.create(friend)

matcher = nmc(test_graph)
print(matcher.match("Person",name="Jerry").first())


--构建红楼梦人物图谱

import py2neo
from py2neo import Graph,Node,Relationship,NodeMatcher
import pandas as pd
from tqdm import tqdm

g = Graph("http://localhost:7474",user='neo4j',password='123456')
df = pd.read_csv('DreamOfRedChamber.csv')

for i,row in tqdm(df.iterrows()):
    start_node = Node('Person',name=row['head'])
    g.create(start_node)
    end_node = Node('Person',name=row['tail'])
    g.create(end_node)
    relation = Relationship(start_node,row['label'],end_node)
    g.create(relation)

千年以后
查找

g.run("match(n:Person {name:'林黛玉'})-[r:丫鬟]-(k) return r,k")


neo4j案例

朋友圈关系检测
--六度空间理论
    -关系数据库不能有效表达和描述用户之间广发而复杂的网络关系
    -而图数据库天然适用关系网络结构,构建方便,查询速度快,有非常大的优势
    -查找一度关系,查找二度关系,查找某两人之间的最短路径
--欺诈环检测


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值