KBQA项目 P1 加载电影json数据并解析
在前面两个章节,给大家讲解了豆瓣电影数据的爬取,和Neo4j的Cpyher语法。从这节课开始,终于可以正式进入电影知识问答这个项目了。
首先,我们需要把爬取到的数据,导入到Neo4j数据库中。现在的json数据是,一部电影一行的形式存储的,接下来,就需要分别把实体和关系解析出来,才能导入到Neo4j中。
解析目标格式
entity_data = {
'MOVIE': [{'name': '霸王别姬', '评分': 9.6 ...}, {'name': '阿甘正传', '评分': 9.5} ...]
'PERSON': [{'name': '张国荣'}, {'name': '周星驰'}, ...]
}
relation_data = {
'主演': [('霸王别姬', '张国荣'), ('家有喜事', '周星驰'), ('家有喜事', '张国荣') ...],
'导演': [('霸王别姬': '陈凯歌'), ...]
'编剧': [('功夫': '周星驰'), ...]
}
代码示例
1、新建配置文件
#config.py import os BASE_PATH = os.path.dirname(__file__) RAW_DATA_PATH =os.path.join(BASE_PATH, './data/douban_top250_movies.json')
2、创建图谱构建类
# build_graph.py
import json
class BuildGraph():
def __init__(self):
# 解析json数据
self.parse_raw_data()
def parse_raw_data(self):
with open(RAW_DATA_PATH, encoding='utf-8') as file:
lines = file.readlines()
# 逐行解析
for line in lines:
movie = json.loads(line)
movie_name = movie['name']
if __name__ == '__main__':
bg = BuildGraph()
后面的解析过程,还是比较复杂的,节奏稍慢一点,后面数据组装的过程,放到下节课再介绍。
本文链接:http://www.chenhuax.com/edu/note/594
版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!