当前位置:   article > 正文

用Python构造neo4j知识图谱(关于中成药的)_用python构造neo4j知识图谱(关于中成药的)

用python构造neo4j知识图谱(关于中成药的)

代码介绍

用Python先处理csv文件数据,在自动化批量在neo4j生成节点。

从文件中导出数据,并进行处理

# 数据写入
datalists = []
with open('zcydata.csv','r',encoding='utf-8') as f:
    listLists=f.readlines()
for lists in listLists:
    datalists.append(lists.replace('</P>','').replace('<P>','').replace('\n','').split(',',14))

# 用途的数据导入
Datalists = []
with open('zz_data.csv', 'r', encoding='utf-8') as f:
    ListLists = f.readlines()
for lists in ListLists:
    Datalists.append(lists.replace('</P>', '').replace('<P>', '').replace('\n', '').split(',', 14))


# 组成的数据导入
Datals = []
with open('zc_data.csv', 'r', encoding='utf-8') as f:
    ListLists=f.readlines()
for lists in ListLists:
    Datals.append(lists.replace('</P>','').replace('<P>','').replace('\n','').split(',',14))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

创建节点和关系


# 创建节点关系
i = 0
tx = graph.begin()
for items in datalists:
    # 药的名称
    a = Node('zcyname', name=items[0])
    tx.create(a)

    a1 = Node('shuxing', name='信息')
    a2 = Node('shuxing', name='经济性')
    a3 = Node('shuxing', name='安全性')
    tx.create(a1)
    tx.create(a2)
    tx.create(a3)
    r1 = Relationship(a, 'xinxi', a1)
    r2 = Relationship(a, 'jingjixing', a2)
    r3 = Relationship(a, 'anquanxing', a3)
    tx.create(r1)
    tx.create(r2)
    tx.create(r3)
    # 第一层关系
    b1 = Node('wxyj', name='文献研究')
    b2 = Node('ypjj', name='药品禁忌')
    b3 = Node('blfy', name='不良反应')
    tx.create(b1)
    tx.create(b2)
    tx.create(b3)
    r11 = Relationship(a3, 'wxyj', b1)
    r12 = Relationship(a3, 'ypjj', b2)
    r13 = Relationship(a3, 'blfy', b3)
    tx.create(r11)
    tx.create(r12)
    tx.create(r13)

    # 文献研究
    if items[7] != '':
        b11 = Node('wxnum', name=items[7])
        tx.create(b11)
        r1_1 = Relationship(b1, 'num', b11)
        tx.create(r1_1)

    # 药品禁忌
    if items[12] != '':
        ypjj_list = items[12].split('。')
        for ypjj in ypjj_list:
            if ypjj !='':
                b12 = Node('ypjj' ,name=ypjj)
                tx.create(b12)
                r1_2 = Relationship(b2, 'ypjj', b12)
                tx.create(r1_2)

    # 不良反应
    if items[13] != '':
        blfy_list = items[13].split('。')
        for blfy in blfy_list:
            if blfy != '':
                b13 = Node('ypjj' ,name=blfy)
                tx.create(b13)
                r1_3 = Relationship(b3, 'blfy', b13)
                tx.create(r1_3)

    c1 = Node('xingzhuang', name='性状')
    c2 = Node('zygg', name='主要规格')
    c3 = Node('yt', name='用途')
    c4 = Node('yfyl', name='用法用量')
    c5 = Node('zc', name='组成')
    c6 = Node('cpfl', name='产品分类')
    c7 = Node('sccj', name='生产厂家')
    tx.create(c1)
    tx.create(c2)
    tx.create(c3)
    tx.create(c4)
    tx.create(c5)
    tx.create(c6)
    tx.create(c7)
    r21 = Relationship(a1, '包含', c1)
    r22 = Relationship(a1, '包含', c2)
    r23 = Relationship(a1, '包含', c3)
    r24 = Relationship(a1, '包含', c4)
    r25 = Relationship(a1, '包含', c5)
    r26 = Relationship(a1, '包含', c6)
    r27 = Relationship(a1, '包含', c7)
    tx.create(r21)
    tx.create(r22)
    tx.create(r23)
    tx.create(r24)
    tx.create(r25)
    tx.create(r26)
    tx.create(r27)

    # 性状节点
    if items[6] != '':
        c11 = Node('xingzhuang', name=items[6])
        tx.create(c11)
        r1_11 = Relationship(c1, 'xingzhuang', c11)
        tx.create(r1_11)

    # 主要规格
    if items[1] != '':
        c21 = Node('zygg', name=items[1])
        tx.create(c21)
        r2_21 = Relationship(c2, 'zygg', c21)
        tx.create(r2_21)

    # 用途
    for its in Datalists[i]:
        # print(its)
        if its != '':
            Datas = re.split(',', its)
            # print(Datas)
            for Data in Datas:
                if Data != '':
                    c31 = Node('yt', name=Data)
                    tx.create(c31)
                    r3_31 = Relationship(c3, 'yt', c31)
                    tx.create(r3_31)
                    # print(Data)
        break

    # 用法用量
    if items[3] != '':
        c41 = Node('yfyl', name='口服,一次15毫升,一日3~4次。')
        tx.create(c41)
        r4_41 = Relationship(c4, 'yfyl', c41)
        tx.create(r4_41)

    # 组成节点
    if Datals[i][1] != '':
        datas = re.split('、', Datals[i][1])
        # print(datas)
        for data in datas:
            if data != '':
                c51 = Node('zc', name=data)
                tx.create(c51)
                r5_51 = Relationship(c5, 'zc', c51)
                tx.create(r5_51)

    # 产品分类
    if items[4] != '':
        c61 = Node('cpfl', name=items[4])
        tx.create(c61)
        r6_61 = Relationship(c6, 'cpfl', c61)
        tx.create(r6_61)

    # 生产厂家
    if items[5] != '':
        c71 = Node('sccj', name=items[5])
        tx.create(c71)
        r7_71 = Relationship(c7, 'sccj', c71)
        tx.create(r7_71)

    d1 = Node('jjml', name='基药目录')
    d2 = Node('ybml', name='医保目录')
    d3 = Node('bzly', name='标准来源')
    tx.create(d1)
    tx.create(d2)
    tx.create(d3)
    r31 = Relationship(a2, 'jyml', d1)
    r32 = Relationship(a2, 'yb', d2)
    r33 = Relationship(a2, 'bzly', d3)
    tx.create(r31)
    tx.create(r32)
    tx.create(r33)

    # 医保
    if items[9] != '':
        d12 = Node('yb', name='非医保')
        tx.create(d12)
        r2_12 = Relationship(d2, 'yb', d12)
        tx.create(r2_12)

    # 基药目录
    if items[10] != '':
        d11 = Node('jyml', name=items[10])
        tx.create(d11)
        r1_11 = Relationship(d1, 'jyml', d11)
        tx.create(r1_11)

    # 标准来源
    if items[11] != '':
        d13 = Node('bzly', name=items[11])
        tx.create(d13)
        r3_13 = Relationship(d3, 'yb', d13)
        tx.create(r3_13)
    i += 1
tx.commit()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188

1、zc_data.csv文件
在这里插入图片描述
2、zz-data.csv文件
在这里插入图片描述
3、zcydata.csv文件
在这里插入图片描述

效果展示

在这里插入图片描述

源代码及相关文件下载

下载

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/161260?site
推荐阅读
相关标签
  

闽ICP备14008679号