基于Neo4j构建的外贸企业关系图谱做企业相似度查询

一、外贸企业关系图谱的构建

说来惭愧,本科、研究生期间还没写过博客,正巧最近在写论文,想结合自己开发的项目来构思,于是就通过这篇博客记录一下使用Neo4j图数据库来做企业相似度查询的过程,方便以后参考。
这次外贸企业关系图谱的构建用到以前项目中测试库(Oracle)的数据,导入成csv格式后,再通过python的py2neo导入到neo4j中。
-----------由于数据涉及项目的私密信息,暂时就不分享出来了------------

1.从Oracle导出数据

该表在Oracle数据库中的部分结构如下:
在这里插入图片描述
目前数据库中的外贸企业数据约30多万条,经过两轮的数据清洗和过滤,我选出了约12万条数据导出,并保存为csv格式。

2.导入数据到Neo4j

Neo4j有自己的csv导入工具,还可以通过cypher语句导入csv格式的数据,但是这里我使用的是pyhon的py2neo库来完成数据的导入。
编写的python代码结构如下:
在这里插入图片描述
下面介绍每个函数的详细代码实现:

'''初始化,用于连接到Neo4j'''
def __init__(self, data):
    self.data = data
    self.g = Graph(
        host="127.0.0.1",  # neo4j 搭载服务器的ip地址
        http_port=7474,  # neo4j 服务器监听的端口号
        user="neo4j",  # 数据库user name
        password="112233") # 密码
'''读取文件'''
def read_nodes(self):
    # 共5类节点
    enterprise = self.data['COMP_NAME_CH']  # 企业
    region = set(self.data['PROVINCE_CH'])  # 地区
    if (np.nan in region):
        region.remove(np.nan)
    country = []  # 出口国家
    for index, row in self.data.iterrows():
        for r in row['EXPORT_COUNTRY_MXT'].split(','):
            country.append(r)
    # 企业类型:1-manufacture-生产型、2-trader-贸易型(贸信通)3-服务型
    enterprise_type = ['生产型', '贸易型', '服务型']  # 企业类型
    legal_representative = self.data['LEGAL_REPRESENTATIVE']  # 法人代表

    # 构建节点实体关系
    rels_region = []  # 企业-地区关系 locate
    rels_country = []  # 企业-出口国家关系 export
    rels_type = []  # 企业-企业类型关系 type
    # rels_product = [] # 企业-产品关系 product
    rels_legal = []  # 企业-法人代表关系 legal
    for index, row in self.data.iterrows():
        if (row['PROVINCE_CH'] is not np.nan):
            rels_region.append([row['COMP_NAME_CH'], row['PROVINCE_CH']])
        for r in row['EXPORT_COUNTRY_MXT']
  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值