在前面两个章节,给大家讲解了豆瓣电影数据的爬取,和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://edu.ichenhua.cn/read/602