构建上市公司知识图谱
由于我的数据都存储在mysql中,格式较为友好,避免了复杂的知识抽取的过程.
首先,类似于数据库的ER图设计,设计出各个表之间对应的关系,构建出符合知识图谱结构的实体和关系,大概设计一下,类似于下图这样:
知识图谱概念图
接着开始连接mysql数据库,使用python3中的pymysql
安装pymysql: pip3 install pymysql
之后开始编写,直接用csv.writer()写入
import pymysql
import csv
config={
"host":"*.*.*.*",
"port": **,
"user":"**",
"password":"**",
"database":"**"
}
def read_mysql_to_csv(sql, file_name):
# 打开数据库连接
db = pymysql.connect(**config)
with open(file_name, 'w', encoding='utf-8') as f:
head = []
write = csv.writer(f)
cursor = db.cursor()
print('读取数据库表中,请稍后.')
count = cursor.execute(sql)
for index in cursor.description:
head.append(index[0])
head = tuple(head)
print('读取到总数据行数为:',count)
write.writerow(head)
data = cursor.fetchall()
for row in data:
write.writerow(row)
# 关闭数据库连接
db.close()
数据库中的每张表都应具有唯一id用于关系间的对应
分别导出实体和关系至csv文件中,生成'机构.csv','人物.csv','机构-人物.csv'等文件,表结构如下图所示,其中标题字段的含义我们将在之后的几篇文章中进行解释
下一篇,我们将安装Neo4J,并将生成的csv文件上传至Neo4J数据库中
网友评论