图数据科学和机器学习自然语言处理NLP概览

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 图数据科学和机器学习自然语言处理NLP概览

知识图谱neo4j的相关使用

1. neo4j下载

neo4j下载地址及安装:https://neo4j.com/download/

下载社区版neo4j不支持创建多个数据库怎么办?

两种方法:

  1. 修改neo4j.conf配置文件中的#dbms.active_database=graph.db,将graph.db修改为新的数据库的位置(配置文件一般在neo4j\conf下);
  2. 更改原先的graph.db的文件夹名称(如改为graph_1.db),新建graph.db作为新的数据库。

2. neo4j简单使用

cypher语句:https://neo4j.com/developer/cypher/intro-cypher/

2.1创建节点及关系

同时创建多部电影

create (:film {name:'肖申克的救赎',type:'犯罪',score:9.7}),
(:film {name:'霸王别姬',type:'剧情',score:9.6}),
(:film {name:'辛德勒的名单',type:'历史',score:9.5}),
(:film {name:'盗梦空间',type:'剧情',score:9.3}),
(:film {name:'星际穿越',type:'剧情',score:9.3}),
(:film {name:'荆轲刺秦王',type:'历史',score:8.2}),
(:film {name:'绿里奇迹',type:'剧情',score:8.9})

一般create创建关系和节点,但需要注意的是create会产生一样的节点,只是id会不一样,因此当不确定已有的库中是否包含某个节点时,可以使用merge进行创建,因为merge是有去重功能的。

同时创建多个导演

在这里插入代码片create (:director {name:'弗兰克·德拉邦特'}),
(:director {name:'陈凯歌'}),
(:director {name:' 史蒂文·斯皮尔伯格'}),
(:director {name:'克里斯托弗·诺兰'})

同时创建多个演员

create (:actor {name:'蒂姆·罗宾斯'}),
(:actor {name:'张国荣'}),
(:actor {name:'连姆·尼森'}),
(:actor {name:'马修·麦康纳'}),
(:actor {name:'张丰毅'})

创建电影“肖申克的救赎”和导演“弗兰克·德拉邦特”关系

MATCH(a:director),(b:film)
WHERE a.name='弗兰克·德拉邦特' AND b.name='肖申克的救赎'
CREATE(a)-[r:direct]->(b)

创建电影和演员关系

MATCH(a:actor),(b:film)
WHERE a.name='张国荣' AND b.name='霸王别姬'
CREATE(a)-[r:play]->(b)

创建一个导演与多个电影的关系

MATCH(a:actor),(b:film)
WHERE a.name='张丰毅' AND (b.name='霸王别姬' or b.name='荆轲刺秦王')
CREATE(a)-[r:play]->(b)

2.2 查询节点及关系

查询某个电影

MATCH(a:film)
WHERE a.name='霸王别姬'
RETURN a

查询某个标签下的所有节点

MATCH(a:director)
RETURN a

查询两个节点间的关系

MATCH (:director {name:'弗兰克·德拉邦特'})-[r]->(:film{name:'肖申克的救赎'})
RETURN r

通过函数type获取关系的类型

MATCH ()-[r]->(:film{name:'肖申克的救赎'})
RETURN type(r)

2.3 删除节点及关系

删除某个节点

MATCH(a:actor)
WHERE a.name='马修·麦康纳'
DELETE a

删除某个标签的所有节点

MATCH(a:actor)
DELETE a

删除所有节点

MATCH(n)
DELETE n

删除两个节点的关系

MATCH (:actor {name:'张国荣'})-[r]->(:film {name:'霸王别姬'})
DELETE r

删除某节点的关系

MATCH (:actor {name:'张国荣'})-[r]->()
DELETE r

删除某个标签全部的关系

MATCH ()-[r]->(:film) 
DELETE r

增加节点属性

MATCH(n:film) WHERE n.name='盗梦空间' SET n.language='english'

删除节点属性

MATCH(n:film) WHERE n.name='盗梦空间' REMOVE n.language

需要注意的是,在删除节点之前需要先将和节点相关的关系删除。

2.4 neo4j批量构建节点和关系

基于csv文件导入的方式批量构建节点

基于csv文件导入的方式批量构建关系

  1. 首先要把文件放到neo4j的对应数据库的import文件(和上文中的conf是同级目录)下
  2. 导入节点和关系
# 基于csv文件导入的方式批量构建交易所节点
load csv with headers from 'file:///exchange.csv' as line
create(:exchange{name:line.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)
# 基于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)

3. py2neo的使用

import py2neo
from py2neo import Graph,Node,Relationship,NodeMatcher
#账号密码
g = Graph('http://localhost:7474',user='neo4j',password='123456')
import pandas as pd
df = pd.read_csv('DreamOfRedChamber.csv')
from tqdm import tqdm
for i, row in tqdm(df.iterrows()):
    print(row['head'],row['tail'],row['relation'],row['label'])
    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(p:Person {name:'林黛玉'})-[k:丫鬟]-(r)return p,k,r")

4. 相关算法链接

lovain算法:

https://neo4j.com/docs/graph-data-science/current/algorithms/louvain/

Page-Rank算法:https://neo4j.com/docs/graph-algorithms/current/algorithms/page-rank/

基于pytorch的知识表示:

https://github.com/thunlp/OpenKE

图神经网络框架:

https://github.com/rusty1s/pytorch_geometric

目录
相关文章
|
9天前
|
机器学习/深度学习 自然语言处理 搜索推荐
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
32 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】自然语言处理NLP概述及应用
自然语言处理(Natural Language Processing,简称NLP)是一门集计算机科学、人工智能以及语言学于一体的交叉学科,致力于让计算机能够理解、解析、生成和处理人类的自然语言。它是人工智能领域的一个关键分支,旨在缩小人与机器之间的交流障碍,使得机器能够更有效地识别并响应人类的自然语言指令或内容。
41 4
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】GPT-5技术突破预测:引领自然语言处理革新的里程碑
随着科技的飞速发展,人工智能(AI)领域正迎来一场前所未有的革命。近日,OpenAI首席技术官米拉·穆拉蒂在采访中透露,新一代大语言模型GPT-5将在一年半后发布,这一消息无疑在科技界掀起了巨大的波澜。GPT-5的即将登场,预示着AI技术将迈入一个新的时代,我们的工作和日常生活也将随之发生深刻的变化。 GPT-5的发布,将为我们带来前所未有的智能体验。穆拉蒂将其与高中生到博士生的成长相比,可见其在智能水平上的巨大飞跃。GPT-5将具备更高的智能水平,能够处理更为复杂、精细的任务,如高级数据分析、自动化编程、智能内容生成等。这将极大地提高各行各业的工作效率,推动社会生产力的快速发展。
45 4
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】自然语言处理(NLP)的突破,关注NLP在机器翻译、情感分析、聊天机器人等方面的最新研究成果和应用案例。
自然语言处理(NLP)作为人工智能的一个重要分支,近年来取得了显著的突破,特别在机器翻译、情感分析、聊天机器人等领域取得了显著的研究成果和广泛的应用。以下是对这些领域最新研究成果和应用案例的概述,并附带相应的代码实例。
64 1
|
2月前
|
机器学习/深度学习 存储 人工智能
自然语言处理 Paddle NLP - 检索式文本问答-理论
自然语言处理 Paddle NLP - 检索式文本问答-理论
20 1
|
2月前
|
Apache UED 数据安全/隐私保护
揭秘开发效率提升秘籍:如何通过Apache Wicket组件重用技巧大翻新用户体验
【8月更文挑战第31天】张先生在开发基于Apache Wicket的企业应用时,发现重复的UI组件增加了维护难度并影响加载速度。为优化体验,他提出并通过面板和组件重用策略解决了这一问题。例如,通过创建`ReusableLoginPanel`类封装登录逻辑,使得其他页面可以轻松复用此功能,从而减少代码冗余、提高开发效率及页面加载速度。这一策略还增强了应用的可维护性和扩展性,展示了良好组件设计的重要性。
35 0
|
2月前
|
人工智能 自然语言处理 机器人
掌握未来沟通的艺术:运用TensorFlow与自然语言处理(NLP)技术,从零开始构建你的专属智能对话机器人,让机器理解你的一言一行
【8月更文挑战第31天】本文详细介绍如何利用TensorFlow与自然语言处理技术开发对话机器人。从准备问答数据集开始,通过预处理、构建Seq2Seq模型、训练及预测等步骤,最终实现了一个简易的聊天机器人。示例代码涵盖数据加载、模型搭建及对话功能,适合希望在实际项目中应用AI技术的开发者参考。
27 0
|
2月前
|
机器学习/深度学习 自然语言处理 搜索推荐
自然语言处理 Paddle NLP - 预训练模型产业实践课-理论
自然语言处理 Paddle NLP - 预训练模型产业实践课-理论
26 0
|
2月前
|
机器学习/深度学习 自然语言处理 区块链
自然语言处理 Paddle NLP - 开放域对话系统-理论
自然语言处理 Paddle NLP - 开放域对话系统-理论
14 0
|
2月前
|
机器学习/深度学习 自然语言处理
自然语言处理 Paddle NLP - 任务式对话系统-理论
自然语言处理 Paddle NLP - 任务式对话系统-理论
45 0
下一篇
无影云桌面