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

简介: 图数据科学和机器学习自然语言处理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

目录
相关文章
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)的进展与挑战
【6月更文挑战第13天】自然语言处理(NLP)在深度学习推动下取得显著进展,包括循环神经网络、词嵌入技术及预训练模型(如BERT、GPT)的应用,突破了文本分类、问答系统等任务。然而,数据稀疏性、语言复杂性和模型可解释性仍是挑战。未来,NLP有望实现更高效、准确和可解释的技术,需关注数据隐私和伦理问题。
20 10
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
什么是NLP(自然语言处理)?
自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
13 1
|
10天前
|
机器学习/深度学习 数据采集 算法
踏上机器学习之路:探索数据科学的奥秘与魅力
踏上机器学习之路:探索数据科学的奥秘与魅力
15 0
|
15天前
|
机器学习/深度学习 数据采集 自然语言处理
自然语言处理(NLP)在文本分析中的应用
【5月更文挑战第31天】自然语言处理(NLP)在数字化时代助力文本分析,涉及情感分析、信息提取、文本分类、机器翻译和问答系统等领域。Python示例展示了NLP如何提取文本实体。深度学习技术如RNN、LSTM和GRU推动NLP发展,但语言复杂性、语义理解及数据质量仍是挑战。NLP将在处理海量文本信息和跨语言交流中发挥更大作用,创造新机遇。
37 0
|
17天前
|
机器学习/深度学习 自然语言处理 安全
拥抱变革:我的云计算技术感悟之旅探索机器学习中的自然语言处理技术
【5月更文挑战第29天】 在信息技术不断演进的今天,云计算作为一项革命性的技术,正引领着整个行业的未来。本文通过分享个人的技术感悟,探讨了云计算如何影响现代技术生态,以及它对技术专业人士所带来的挑战与机遇。文章基于实际案例和经验,阐述了从传统IT架构向云服务的转型过程中所面临的技术难题,并提出了解决策略。同时,展望了云计算未来的发展趋势及其对技术从业者的影响。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【5月更文挑战第29天】随着人工智能的飞速发展,自然语言处理(NLP)技术已从理论研究走向实际应用。本文将深入剖析NLP的核心概念、关键技术及应用实例,并探讨其在未来发展中所面临的挑战与机遇。通过逻辑严密的分析,我们将展示NLP如何改善人机交互效率,推动智能化信息处理的进步。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【5月更文挑战第28天】 在数字化时代,自然语言处理(NLP)技术作为人工智能领域的核心分支之一,正在引领信息理解和智能交互的新浪潮。本文将深入探讨NLP的基本概念、关键技术以及在不同领域的创新应用。通过解析NLP的工作原理和挑战,我们旨在为读者呈现一个清晰的技术蓝图,并分享最新的研究进展和实践案例。
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【5月更文挑战第27天】 在数字化时代的浪潮中,自然语言处理(NLP)作为人工智能的一个分支,正以前所未有的速度和能力重塑我们与机器的交互方式。本文将深入探讨自然语言处理的核心概念、关键技术以及在不同领域的应用实例。我们将从基础理论出发,逐步解析NLP如何处理和理解人类语言的复杂性,并展示如何利用这些技术解决实际问题,如情感分析、机器翻译和智能问答系统。
|
19天前
|
机器学习/深度学习 自然语言处理 安全
探索机器学习中的自然语言处理技术网络安全与信息安全:保护数据的关键策略
【5月更文挑战第27天】 在数字化时代,自然语言处理(NLP)技术是连接人类语言与计算机理解的桥梁。本文将深入探讨NLP的核心概念、关键技术以及在不同领域的应用实例。我们将从基础原理出发,解析词嵌入、语法分析到深度学习模型等关键步骤,并讨论NLP如何推动聊天机器人、情感分析和自动文摘等技术的发展。通过案例分析,揭示NLP在实际应用中的挑战与前景,为未来研究和应用提供参考。
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
探索机器学习中的自然语言处理技术
【5月更文挑战第25天】 在数字化时代的浪潮中,自然语言处理(NLP)技术正迅速成为机器学习领域的一个重要分支。本文将深入探讨NLP的核心概念、关键技术及其在不同行业中的应用实例。我们将通过实际案例分析来揭示NLP如何改善信息检索、情感分析和智能对话系统,并讨论其在现实世界中所面临的挑战与未来的发展趋势。