neo4j的基本操作(NLP用的一些基本操作)

参考内容:Clauses - Cypher Manual

CREATE示例(增):

CREATE 关系 = (country:国家 {name: '中国', 备注: "我爱中国", 随意添加你想要的内容:"想添加的任何内容"})-[:首都 {city: '北京', xx:'xx'}]->(city:地区 {name: '北京'})-[:管辖]->(海淀区:XX路 {name: 'XX大学'})-[:属于{任意定义:'任意定义'}]-> (country) return 关系

关系讲解:中国的首都是北京,北京管辖XX大学,XX大学属于中国

要注意的点:

1. CREATE(主体-关系)-> (客体) 意思就是主体和关系用-连接,只有带了关系的实体才称之为主体,才能用->指向客体,否则会报错;

2.主体除了第一个name属性名是规定之外,其他属性名都可以自定义,往后面一直加用,隔开就可以了;

3.不能重复CREATE一个结点,例如本例中,不能重复的CREATE(country: ) country已经创建过了,后面跟什么都会报错;如果要给创建好的结点添加一个属性,可以用SET;

MATCH示例(查):

match的作用是查找,给一个要查找的label,然后根据需要返回label的属性

查找结点:

match (n:国家)
return n.name

查找关系:

1.给定结点,返回和该结点所有有关的结点name,-- 表示不考虑方向的关系,可以根据相应关系选择是否带方向

match (n {name:'中国'})--(rela)
return rela.name

2.给定两个结点,返回对应结点的name

match (:国家{name:'中国'})--(rela:XX路)
return rela.name

对照我们一开始创建结点的逻辑关系来看

3.给定两个结点,返回对应关系

match (n:国家{name:'中国'})-[r]->(city)
return type(r)

4.给定关系,返回两头的结点

match (a)-[:属于{任意定义:'任意定义'}]-(b)
return a, b

5.1给定一个结点和一个关系,返回该条件下所有结点(我们例子中只有一个,就返回一个)

match (school:XX路{name:'XX大学'})<-[:管辖]-(xx)
return xx.name

5.2如果是需要返回多个关系下的结点,关系之间用' | '隔开即可

match (school:XX路{name:'XX大学'})<-[:管辖|属于]-(xx)
return xx.name

DELETE示例(删):

删除单结点:

match (n:地区{name:'北京'})
delete n

如果是单结点,会直接删除,我们这里有关系,所以必须先删除关系:

match (n:地区{name:'北京'})-[r:管辖]->()
delete r

match (n:地区{name:'北京'})<-[r:首都]-()
delete r

分别删除了'北京'作为主体和客体的两个关系使其变成单结点,然后在删除'北京'这个单结点

match (n:地区{name:'北京'})
delete n
# 这里的delete 和 nodetach delete 功能是一样的,都只能删除单结点

删除结点及其关系:慎用

match (n:地区{name:'北京'})
detach delete n

SET示例(改):主要用来更新结点的标签、属性、关系等等

1.修改关系的属性:最开始创建的首都的xx属性是:'xx'

match (country:国家{name:'中国'})-[r:首都]->(m)
set r.xx = '繁华'
return r

2.根据参数来修改属性:参数定义好之后,set n.xx = $xx

{
    'xx' = '美丽'
}

match (n {name:'中国'})
set n.xx = $xx
return n.xx

3.修改/添加标签labels

match (n {name:'中国'})
set n:中华人民共和国:中华民族
return n.name, labels(n) AS labels

LOAD CSV:

CSV文件要用LOAD CSV必须满足以下特征:

  1. 文件需要改为UTF-8格式
  2. 结束行:Unix上是\n,在windows上是\r\n
  3. 默认字段的结束符为,
  4. 字段结束符可以通过使用LOAD CSV命令中的FIELDTERMINATOR选项来更改
  5. CSV文件中允许使用带引号的字符串,并且在读取数据时删除引号
  6. 字符串引号的字符要用双引号"
  7. 双引号必须位于带引号的字符串中,并使用转义字符或第二个双引号进行转义

所以我们在导入CSV文件时,需要先构造这个CSV文件;这里我们直接用一个官方处理好的csv文件示例

导入CSV文件:直接用neo4j的命令行代码即可

LOAD CSV WITH HEADERS FROM "https://data.neo4j.com/northwind/products.csv" AS row
CREATE (n:Product)
SET n = row,
n.unitPrice = toFloat(row.unitPrice), 
n.unitsInStock = toInteger(row.unitsInStock), n.unitsOnOrder = toInteger(row.unitsOnOrder),
n.reorderLevel = toInteger(row.reodderLevel), n.discontinued = (row.discontinued <> "0")

倒数三行代码是修改属性类型,不改的话是字符串

点击Product

date和datetime:区别在于需不需要时分秒;

date示例

Java可以使用Neo4j来进行NLP(自然语言处理)的数据训练。Neo4j是一种图形数据库,它的图形结构非常适合处理NLP任务中的复杂关系和语义网络。 在Java中使用Neo4j,我们首先需要导入Neo4j的相关库和依赖。然后,我们可以使用JavaNeo4j驱动程序来连接和操作Neo4j数据。通过这个驱动程序,我们可以执行查询、插入、更新和删除数据等操作。 在NLP数据训练中,我们可以将文本数据转换为图形结构,并使用Neo4j来存储和处理这些数据。例如,我们可以将句子中的词和实体作为节点,将它们之间的关系(如依赖关系、语义关系)作为边。通过构建这样的图形结构,我们可以更好地表示和理解文本中的语义关系。 使用Neo4j进行NLP训练的一个常见任务是实体识别和关系抽取。我们可以使用已有的语料库和机器学习算法来训练模型,然后将模型结果存储到Neo4j中。这样,在实际应用中,我们可以使用已经训练好的模型来进行实体识别和关系抽取。 此外,通过Neo4j的图形查询语言Cypher,我们可以方便地进行复杂的查询和分析。例如,我们可以通过Cypher查询来查找具有特定关系的实体对,或者查找具有特定属性的实体。 总之,Java可以使用Neo4j来进行NLP数据训练。Neo4j的图形数据库特性使得它非常适合处理NLP中的复杂关系和语义网络。我们可以利用Neo4j的功能来存储、处理和查询NLP数据,从而提高NLP任务的效率与精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值