2019新冠肺炎知识图谱可视化(一)

摘要:知识图谱与自然语言的处理技术的结合使用愈发广泛,已经成为各大搜索引擎公司所重视的领域之一。
获取数据与预处理:对于通用知识图谱的构建而言,最主要的数据来源是互联网中的网页,(之前也做过中药相关的知识图谱,以后也会来源)通常采用自低向上的方式,先从网页中识别出数据实体,再从实体数据归纳出数据模式。我们这里是用openkg开源的数据,用这些数据简单处理即可得到三元组。

2019新冠肺炎知识图谱可视化(一)_第1张图片
从openkg上得到的数据是这个样子的,我开始以为是网址,打开之后又是404,我把重点放在了后面2019新冠肺炎知识图谱可视化(一)_第2张图片
给我的感觉像是直接的url解码,尝试一下,果然如此,前面的那些是openkg那些人对实体对一些规定,但是我又不是openkg的,所以直接就不要了,可以选择用正则表达式匹配,然后我这里推荐用记事本的替换(我可真是个小机灵鬼)
最后我们要得到的是三元组数据
2019新冠肺炎知识图谱可视化(一)_第3张图片
数据处理:这一部分简单来说就是:从三元组提取出实体与关系
1.读取三元组数据

# 读取三元组文件
h_r_t_name = [":START_ID", "role", ":END_ID"]
h_r_t = pd.read_table("redata.txt",sep=',', names=h_r_t_name)#delimiter
print(h_r_t.info())
print(h_r_t.head())

2.去除重复实体

#去除重复实体
entity = set()
entity_h = h_r_t[':START_ID'].tolist()
entity_t = h_r_t[':END_ID'].tolist()
for i in entity_h:
    entity.add(i)
for i in entity_t:
    entity.add(i)
print(entity)

3.生成实体与关系的csv文件

# 保存节点文件
csvf_entity = open("entity.csv", "w", newline='', encoding='utf-8')
w_entity = csv.writer(csvf_entity)
# 实体ID,要求唯一,名称,LABEL标签,可自己不同设定对应的标签
w_entity.writerow(("entity:ID", "name", ":LABEL"))
entity = list(entity)
entity_dict = {}
for i in range(len(entity)):
    w_entity.writerow(("e" + str(i), entity[i], "my_entity"))
    entity_dict[entity[i]] = "e" + str(i)
csvf_entity.close()
# 生成关系文件,起始实体ID,终点实体ID,要求与实体文件中ID对应,:TYPE即为关系
h_r_t[':START_ID'] = h_r_t[':START_ID'].map(entity_dict)
h_r_t[':END_ID'] = h_r_t[':END_ID'].map(entity_dict)
h_r_t[":TYPE"] = h_r_t['role']
h_r_t.pop('role')
h_r_t.to_csv("roles.csv", index=False)

到这里,第一步算是完成了
github传送门:https://github.com/Real-TomHy/novel-coronavirus-pneumoniaKG
记得点一个小星星,不要白嫖吼
随笔:人跟树是一样的,越是向往高处的阳光,它的根就越要伸进黑暗的深处。 —尼采《查拉特斯特拉如是说》
有上必有下,在下的那段日子叫做扎根

你可能感兴趣的:(知识图谱)