知识图谱笔记-(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案例

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

Original: https://blog.csdn.net/yanghaoji/article/details/123761822
Author: Andy杨
Title: 知识图谱笔记-(2)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/555026/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球