neo4j在线增量批量插入三元组

本文介绍了如何使用Python生成csv文件,并详细步骤进行Neo4j数据库的节点与关系的批量及增量插入操作,强调了每种关系需单独导入的重要性。
摘要由CSDN通过智能技术生成

1.python代码生成words.csv、relations_daixiang.csv relations_yongxiang.csv relations_xiangguan.csv 注意:每种关系单独导入!

# 生成三元组
with open('d2019.txt', 'r', encoding='utf-8') as f:
    all = f.read()
records = all.split('*NEWRECORD')
tuples = []
mapd = {
   }
for record, i in zip(records[1:], range(1, len(records))):
    tuplesitem = []
    items = record.split('\n')
    idcount = 0
    for item in items:
        if item.startswith('MH = '):
            heading = re.findall('MH = ([^"]+)', item)[0]
            mapd[heading] = "D" + str(i)
        if item.startswith('ENTRY = '):
            entry = re.findall('[^\|]+', item)[0]
            entry = re.findall('ENTRY = ([^"]+)', entry)[0]
            tuples.append((heading, entry, '代项'))
            tuples.append((entry, heading, '用项'))
            if not mapd.get(entry,0):
                idcount = idcount + 1
                mapd[entry] = mapd[heading] + "_" + str(idcount)
        if item.startswith('PRINT ENTRY = '):
            printentry = re.findall('[^\|]+', item)[0]
            printentry = re.findall('PRINT ENTRY = ([^"]+)', printentry)[0]
            tuples.append((heading, printentry, '代项'))
            tuples.append((printentry, heading, '用项'))
            if not mapd.get(printentry, 0):
                idcount = idcount + 1
                mapd[printentry] = mapd[heading] + "_" + str(idcount)
        if item.startswith('MN = '):
            nid = re.findall('MN = ([^"]+)', item)[0]
            hypernyms = find_hypernym(nid)
            for hypernym in hypernyms:
                tuples.append((heading, hypernym, '上位词'))
            hyponyms = find_hyponym(nid)
            for hyponym in hyponyms:
                tuples.append((heading, hyponym, '下位词'))
            homoionyms = find_homoionym(nid)
            for homoionym in homoionyms:
                tuples.append((heading, homoionym, '兄弟'
Neo4j 是一个开源的图数据库,可以用来存储和管理知识图谱。在 Neo4j 中读取三元组(即主语、谓语、宾语组成的三元组)并插入知识图谱,可以按照以下步骤进行: 1. 连接到 Neo4j 数据库:首先,需要通过设置连接参数,使用适当的驱动程序连接到 Neo4j 数据库。可以选择使用 Neo4j 的官方驱动程序或其他第三方驱动程序。 2. 创建三元组节点:在 Neo4j 中,知识图谱可以通过节点来表示。根据三元组中的主语和宾语,创建相应的节点,并将其添加到数据库中。可以使用节点的唯一标识属性来确保节点的唯一性。 3. 创建谓语关系:通过谓语将主语节点和宾语节点连接起来。在 Neo4j 中,可以使用关系来表示谓语关系。创建一个关系来表示谓语,并将其连接到主语和宾语节点之间。可以为关系设置属性,以增加关系的描述性信息。 4. 插入三元组数据:在 Neo4j 中执行适当的 Cypher 查询来插入三元组数据。Cypher 是 Neo4j 提供的用于查询和操作图数据的查询语言。使用合适的 Cypher 查询语句,将创建的节点和关系添加到图数据库中。 5. 验证插入结果:在插入完三元组数据之后,可以执行相应的查询来验证数据是否正确插入到了知识图谱中。可以使用 Cypher 查询来检索所插入的节点和关系,以确保它们已正确地添加到图数据库中。 通过以上步骤,可以在 Neo4j 中读取三元组,并将其插入到知识图谱中。这样可以建立起图数据库中的图结构,并利用图数据库的各种功能来进行知识图谱的查询和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值