Python+neo4j构建豆瓣电影知识图谱

文章目录

        • 数据来源
        • 数据整理导入
        • 节点和关系导入
          • 使用Subgraph批量导入节点和关系
        • 多标签实体和实体去重

数据来源

http://www.openkg.cn/dataset/douban-movie-kg

在这里插入图片描述
该网址拥有丰富的中文知识图谱数据集,OpenKG(Open Knowledge Graph),可供研究人员使用研究。

数据整理导入

在这里插入图片描述

import json with open('douban.json','r',encoding='utf-8') as f:res = json.load(f)for r in res:print(r)
{'id': 25746375, 'title': '我是路人甲', 'url': 'http://movie.douban.com/subject/25746375/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2252471054.jpg', 'rate': 7.4, 'director': ['尔冬升'], 'composer': ['尔冬升'], 'actor': ['万国鹏', '王婷', '沈凯', '徐小琴', '林晨', '魏星', '蒿怡帆', '蒿怡菲', '覃培军', '王昭', '张文斌', '林俭', '耿立树', '张喜来', '周鹏', '寇骏', '姜涛', '袁咏仪', '方中信', '刘伟强', '冯德伦', '吴彦祖', '尔冬升', '麦兆辉', '庄文强', '方平', '张静初', '许鞍华', '林更新', '蒋梦婕', '陆剑明'], 'category': ['剧情', '喜剧'], 'district': ['China_中国大陆'], 'language': ['汉语普通话', '粤语', '浙江方言'], 'showtime': 2015.0, 'length': 134.0, 'othername': ['I Am Somebody']}
{'id': 5446197, 'title': '铁拳', 'url': 'http://movie.douban.com/subject/5446197/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2239723542.jpg', 'rate': 7.1, 'director': ['安东尼·福奎阿'], 'composer': ['科特·萨特'], 'actor': ['杰克·吉伦哈尔', '福里斯特·惠特克', '瑞秋·麦克亚当斯', '娜奥米·哈里斯', '50分', '乌娜·劳伦斯', '米格尔·戈麦斯', '瑞塔·奥拉', '维克托·奥尔蒂斯', '克莱尔·弗利', '博·纳普', '约翰·塞纳迭姆博'], 'category': ['剧情', '动作', '运动'], 'district': ['United States of America_美国', 'China_中国大陆'], 'language': ['英语'], 'showtime': 2015.0, 'length': 123.0, 'othername': ['左撇子', '震撼擂台(台)', '再战击情(港)']}
{'id': 25885212, 'title': '我们梦中见', 'url': 'http://movie.douban.com/subject/25885212/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2264068617.jpg', 'rate': 7.6, 'director': ['布雷特·海利'], 'composer': ['Marc Basch', '布雷特·海利'], 'actor': ['布莱思·丹纳', '马丁·斯塔尔', '琼·斯奎布', '雷亚·普尔曼', '玛丽·凯·普莱斯', '玛琳·阿克曼', '山姆·艾里奥特', '瑞德·斯科特', '麦克斯·盖尔', '马克·阿戴尔-里奥斯', '阿什利·斯皮尔斯', '阿尔蒂·曼', '卡罗琳-拉格菲尔特'], 'category': ['剧情', '喜剧'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2015.0, 'length': 92.0, 'othername': None}
{'id': 25728581, 'title': '少年透明人', 'url': 'http://movie.douban.com/subject/25728581/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2212138459.jpg', 'rate': 6.6, 'director': ['加布里埃尔·萨瓦特瑞斯'], 'composer': None, 'actor': ['卢多维科·吉拉尔德罗', 'Ludovico Girardello', '瓦莱莉·高利诺'], 'category': ['奇幻', '冒险'], 'district': ['Italy_意大利'], 'language': ['意大利语'], 'showtime': 2014.0, 'length': 100.0, 'othername': ['The Invisible Boy']}
{'id': 5156558, 'title': '撒迦利亚', 'url': 'http://movie.douban.com/subject/5156558/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2265577230.jpg', 'rate': 6.0, 'director': ['克雷格·卓贝'], 'composer': ["Robert C. O'Brien", 'Nissar Modi'], 'actor': ['玛格特·罗比', '克里斯·派恩', '切瓦特·埃加福特'], 'category': ['剧情', '科幻', '惊悚'], 'district': ['United States of America_美国', 'Iceland_冰岛'], 'language': ['英语'], 'showtime': 2015.0, 'length': 95.0, 'othername': None}
{'id': 24325815, 'title': '非我', 'url': 'http://movie.douban.com/subject/24325815/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2251424605.jpg', 'rate': 6.3, 'director': ['塔西姆·辛'], 'composer': ['大卫·帕斯特尔', '亚历克斯·帕斯特尔'], 'actor': ['瑞恩·雷诺兹', '本·金斯利', '马修·古迪', '娜塔丽·马丁内兹', '米歇尔·道克瑞', '德里克·卢克', '维克多·加博', '玛丽安娜·宝拉·韦森特', '山姆·佩吉', '特瑞·韦伯', '格里夫·弗斯特', '艾米莉·特里梅因', '加里·维克斯'], 'category': ['科幻', '悬疑', '惊悚'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2015.0, 'length': 117.0, 'othername': ['换命法则(台)', '换命游戏', '无我', 'Selfless']}
{'id': 25922902, 'title': '唇上之歌', 'url': 'http://movie.douban.com/subject/25922902/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2207639509.jpg', 'rate': 7.5, 'director': ['三木孝浩'], 'composer': ['持地佑季子', '登米裕一', '中田永一', '乙一'], 'actor': ['新垣结衣', '木村文乃', '桐谷健太', '恒松祐里', '下田翔大', '葵若菜', '柴田杏花', '山口麻友', '佐野勇斗', '室井響', '渡边大知', '真岛秀和', '石田光', '木村多江', '小木茂光', '角替和枝', '井川比佐志'], 'category': ['剧情'], 'district': ['Japan_日本'], 'language': ['日语'], 'showtime': 2015.0, 'length': 132.0, 'othername': ['再会吧 ! 青春小鸟(台)', 'Have a Song on Your Lips']}
{'id': 25738406, 'title': '如晴天,似雨天', 'url': 'http://movie.douban.com/subject/25738406/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2225420926.jpg', 'rate': 8.1, 'director': ['弗兰克·威利'], 'composer': ['弗兰克·威利'], 'actor': ['朱利安·夏特金', '莉顿·梅斯特', '黛博拉·梅辛', '欧嘉·梅雷迪斯', '韦恩·普雷特洛', '乔治娅·希梅内斯·里弗谢', '阿尔弗雷多·纳西索', '比利·乔·阿姆斯特朗', '萨布丽娜·马查多', '达茜·福勒', 'Heather Whaley', 'Sammy Pignalosa', 'Frank Shattuck', 'Tamara Torres', 'Buster Whaley'], 'category': ['剧情', '音乐'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2014.0, 'length': 104.0, 'othername': ['像星期日,像下雨']}
{'id': 25767747, 'title': '故事的故事', 'url': 'http://movie.douban.com/subject/25767747/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2264871852.jpg', 'rate': 7.4, 'director': ['马提欧·加洛尼'], 'composer': ['Giambattista Basile', '马提欧·加洛尼', 'Edoardo Albinati', 'Ugo Chiti', 'Massimo Gaudioso'], 'actor': ['萨尔玛·海耶克', '文森特·卡索', '约翰·C·赖利', '托比·琼斯', '雪莉·亨德森', '斯塔西·马汀', '阿尔芭·洛尔瓦彻', '卡特里内尔·马龙', 'Hayley Carmichael', '碧碧·凯芙', 'Christian Lees', 'Jonah Lees', 'Guillaume Delaunay', 'Kathryn Hunter', 'Jessie Cave'], 'category': ['历史', '奇幻'], 'district': ['Italy_意大利', 'France_法国', 'United Kingdom_英国'], 'language': ['英语', '意大利语'], 'showtime': 2015.0, 'length': 125.0, 'othername': ['异色童话集(台)', '故事中的故事', 'The Tale of Tales']}
{'id': 25823840, 'title': '奸臣', 'url': 'http://movie.douban.com/subject/25823840/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2235239810.jpg', 'rate': 6.3, 'director': ['闵奎东'], 'composer': ['闵奎东'], 'actor': ['朱智勋', '金康宇', '林智妍', '千浩振', '李宥英'], 'category': ['剧情', '情色', '古装'], 'district': ['South Korea_韩国'], 'language': ['韩语'], 'showtime': 2015.0, 'length': 133.0, 'othername': ['The Treacherous']}
{'id': 10533913, 'title': '头脑特工队', 'url': 'http://movie.douban.com/subject/10533913/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2266293606.jpg', 'rate': 9.0, 'director': ['彼特·道格特 ', ' 罗纳尔多·德尔·卡门'], 'composer': ['彼特·道格特', '罗纳尔多·德尔·卡门', '梅格·勒福夫', '乔什·库雷', '迈克尔·阿恩特', '西蒙·里奇', '鲍勃·彼德森', '比尔·哈德尔', '艾米·波勒'], 'actor': ['艾米·波勒', '菲利丝·史密斯', '理查德·坎德', '比尔·哈德尔', '刘易斯·布莱克', '敏迪·卡灵', '凯特林·迪亚斯', '戴安·琳恩', '凯尔·麦克拉克伦', '波拉·庞德斯通', '鲍比·莫伊尼汉', '保拉·佩尔', '大卫·戈尔兹', '弗兰克·奥兹', '乔什·库雷', '弗利', '约翰·拉岑贝格', '卡洛斯·阿拉斯拉奇', '皮特·萨加尔', '拉什达·琼斯', '罗里·艾伦', '约翰·齐甘', '雪莉·琳恩', '拉瑞恩·纽曼', '帕丽斯·冯·戴克'], 'category': ['喜剧', '动画', '冒险'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2015.0, 'length': 94.0, 'othername': ['玩转脑朋友(港)', '脑筋急转弯(台)', '头脑大作战', '大脑环游记', '脑中小小人', '大脑内外', '由内而外', '头脑总动员']}
{'id': 25814707, 'title': '小森林 冬春篇', 'url': 'http://movie.douban.com/subject/25814707/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2215147728.jpg', 'rate': 8.9, 'director': ['森淳一'], 'composer': ['森淳一'], 'actor': ['桥本爱', '三浦贵大', '松冈茉优', '温水洋一', '桐岛加恋'], 'category': ['剧情'], 'district': ['Japan_日本'], 'language': ['日语'], 'showtime': 2015.0, 'length': 120.0, 'othername': ['Winter & Spring']}
{'id': 10773239, 'title': '小男孩', 'url': 'http://movie.douban.com/subject/10773239/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2230105606.jpg', 'rate': 8.2, 'director': ['阿加多·蒙特沃德'], 'composer': ['阿加多·蒙特沃德', 'Pepe Portillo'], 'actor': ['雅各布·萨尔瓦提', '凯文·詹姆斯', '迈克尔·拉帕波特', '大卫·亨瑞', '艾米丽·沃森', '埃杜瓦多·维拉斯蒂吉', '泰德·拉文', '田川洋行', '汤姆·威尔金森', '本·卓别林', '阿丽·兰德里', '亚布拉哈姆·本鲁比', '托比·胡斯', '凯莉·格蕾森', 'Candice Azzara'], 'category': ['剧情', '喜剧', '战争'], 'district': ['Mexico_墨西哥', 'United States of America_美国'], 'language': ['英语'], 'showtime': 2015.0, 'length': 106.0, 'othername': None}
{'id': 25870236, 'title': '可爱的你', 'url': 'http://movie.douban.com/subject/25870236/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2232074658.jpg', 'rate': 7.8, 'director': ['关信辉'], 'composer': ['关信辉', '张佩琼'], 'actor': ['杨千嬅', '古天乐', '吴耀汉', '吴浣仪', '姜皓文', '刘玉翠', '狄哲龙', '冯淬帆', '马浴柯', '火火', '黄文慧'], 'category': ['剧情'], 'district': ['China_香港', 'China_中国大陆'], 'language': ['汉语普通话', '粤语'], 'showtime': 2015.0, 'length': 113.0, 'othername': ['五个小孩的校长', '5个小孩的校长', 'Little Big Master']}
{'id': 26147706, 'title': '花与爱丽丝杀人事件', 'url': 'http://movie.douban.com/subject/26147706/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2222398443.jpg', 'rate': 8.0, 'director': ['岩井俊二'], 'composer': ['岩井俊二'], 'actor': ['苍井优', '铃木杏', '胜地凉', '黑木华', '木村多江', '平泉成', '相田翔子', '铃木兰兰', '郭智博', '木村绿子'], 'category': ['喜剧', '动画'], 'district': ['Japan_日本'], 'language': ['日语'], 'showtime': 2015.0, 'length': 100.0, 'othername': ['Hana to Alice Satsujin Jiken', 'The Case of Hana & Alice']}
{'id': 25761178, 'title': '百元之恋', 'url': 'http://movie.douban.com/subject/25761178/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p2205471169.jpg', 'rate': 8.3, 'director': ['武正晴'], 'composer': ['足立紳'], 'actor': ['安藤樱', '新井浩文', '稲川実代子', '早織', '宇野祥平', '坂田聡', '沖田裕樹', '吉村界人', '松浦慎一郎', '伊藤洋三郎', '重松収', '根岸季衣'], 'category': ['剧情', '喜剧', '运动'], 'district': ['Japan_日本'], 'language': ['日语'], 'showtime': 2014.0, 'length': 115.0, 'othername': ['百圆之恋', '一百日元的爱情', "100 Yen's Love"]}
{'id': 26219652, 'title': '少年班', 'url': 'http://movie.douban.com/subject/26219652/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2247339285.jpg', 'rate': 5.7, 'director': ['肖洋'], 'composer': ['张冀', '肖洋'], 'actor': ['孙红雷', '周冬雨', '董子健', '王栎鑫', '柳希龙', '李佳奇', '夏天', '赵立新', '王森'], 'category': ['剧情', '喜剧'], 'district': ['China_中国大陆'], 'language': ['汉语普通话'], 'showtime': 2015.0, 'length': 106.0, 'othername': ['The Ark of Mr. Chow']}
{'id': 25786077, 'title': '末日崩塌', 'url': 'http://movie.douban.com/subject/25786077/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2247341513.jpg', 'rate': 7.1, 'director': ['布拉德·佩顿'], 'composer': ['卡尔顿·库斯', '安德烈·法布里齐奥', '杰里米·帕斯莫尔'], 'actor': ['道恩·强森', '亚历珊德拉·达达里奥', '卡拉·古奇诺', '雨果·约翰斯通-伯特', '雅奇·潘嘉比', '科尔顿·海恩斯', '艾恩·格拉法德', '保罗·吉亚玛提', '凯莉·米洛', '李威尹', '瓦内萨·罗斯', '马特·杰拉德', '阿特·帕金森', '罗宾·阿特金·唐斯', '艾伦·D·柏温', '亚历克·乌特戈夫', '摩根·格莉芬', '杰米斯·巴特勒', '艾伦·波普尔顿'], 'category': ['动作', '冒险', '灾难'], 'district': ['United States of America_美国', 'Australia_澳大利亚'], 'language': ['英语'], 'showtime': 2015.0, 'length': 114.0, 'othername': ['加州大地震(台)', '圣安地列斯']}
{'id': 25958787, 'title': '深夜食堂 电影版', 'url': 'http://movie.douban.com/subject/25958787/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2205014862.jpg', 'rate': 7.8, 'director': ['松冈锭司'], 'composer': ['真边克彦', '小嶋健作', '松冈锭司', '安倍夜郎'], 'actor': ['小林薰', '绫田俊树', '不破万作', '松重丰', '安藤玉惠', '山中崇', '宇野祥平', '光石研', '小田切让', '高冈早纪', '柄本时生', '多部未华子', '余贵美子', '筒井道隆', '菊池亚希子', '田中裕子', '平田薫'], 'category': ['剧情'], 'district': ['Japan_日本'], 'language': ['日语'], 'showtime': 2015.0, 'length': 119.0, 'othername': ['Midnight Diner']}
{'id': 3608742, 'title': '冲出康普顿', 'url': 'http://movie.douban.com/subject/3608742/', 'cover': 'http://img3.douban.com/view/photo/photo/public/p2249238790.jpg', 'rate': 7.6, 'director': ['F·加里·格雷'], 'composer': ['乔纳森·赫尔曼', 'S·雷·利萨维治', '艾伦·温库', '安德丽亚·贝尔洛夫'], 'actor': ['科里·霍金斯', '杰森·米切尔', '小奥谢拉·杰克逊', '阿尔迪斯·霍吉', '保罗·吉亚玛提', '凯斯·斯坦菲尔德', '小尼尔·布朗', '小马龙·耶茨', '马修·博兰', 'R·马科斯·泰勒', '卡拉·帕特森', '亚历山德拉·希普', '科瑞·雷诺兹'], 'category': ['剧情', '音乐', '传记'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2015.0, 'length': 147.0, 'othername': ['再别康城']}
{'id': 11541282, 'title': '魔力麦克2', 'url': 'http://movie.douban.com/subject/11541282/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2251269074.jpg', 'rate': 5.9, 'director': ['格里高利·雅各布'], 'composer': ['雷德·卡罗林', '查宁·塔图姆'], 'actor': ['查宁·塔图姆', '马特·波莫', '乔·曼根尼罗', '安布尔·赫德', '贾达·萍克·史密斯', '伊丽莎白·班克斯', '安迪·麦克道威尔', '加布里埃尔·伊格莱西亚斯', '迈克尔·斯特拉罕', '克丽丝特尔·亨特', '简·麦克尼尔', '唐纳德·格洛弗', '凯文·纳什', '亚当·罗德里格兹', '史蒂芬·布斯', '罗达·格里菲丝', '金柏莉·德拉蒙德', '瑞克·佛莱尔', '胡安·彼德拉伊塔'], 'category': ['剧情', '喜剧', '音乐'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2015.0, 'length': 115.0, 'othername': ['巨揪舞壮士(港)', '舞力麦克:尺度极限XXL(台)', '魔力麦克XXL', 'Magic Mike 2']}
{'id': 25837175, 'title': '谜城', 'url': 'http://movie.douban.com/subject/25837175/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2257443441.jpg', 'rate': 5.5, 'director': ['林岭东'], 'composer': ['林岭东'], 'actor': ['古天乐', '余文乐', '佟丽娅', '张孝全', '谢天华', '元秋', '李璨琛', '伍允龙', '姜皓文', '林子善', '任达华', '高捷', '马浴柯', '谭炳文'], 'category': ['动作', '惊悚', '犯罪'], 'district': ['China_中国大陆', 'China_香港'], 'language': ['汉语普通话', '粤语', '闽南语'], 'showtime': 2015.0, 'length': 105.0, 'othername': ['迷城', '暴走迷城', 'Wild City']}
{'id': 10463953, 'title': '模仿游戏', 'url': 'http://movie.douban.com/subject/10463953/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2255040492.jpg', 'rate': 8.5, 'director': ['莫滕·泰杜姆'], 'composer': ['格拉汉姆·摩尔', '安德鲁·霍奇斯'], 'actor': ['本尼迪克特·康伯巴奇', '凯拉·奈特莉', '马修·古迪', '罗里·金奈尔', '艾伦·里奇', '马修·比尔德', '查尔斯·丹斯', '马克·斯特朗', '詹姆斯·诺斯科特', '汤姆·古德曼-希尔', '史蒂芬·威丁顿', '伊兰·古德曼', '杰克·塔尔登', '埃里克斯·劳瑟', '杰克·巴农'], 'category': ['剧情', '同性', '传记', '战争'], 'district': ['United Kingdom_英国', 'United States of America_美国'], 'language': ['英语', '德语'], 'showtime': 2015.0, 'length': 114.0, 'othername': ['模拟游戏', '解码游戏']}
{'id': 24397586, 'title': '小羊肖恩', 'url': 'http://movie.douban.com/subject/24397586/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2249261202.jpg', 'rate': 8.5, 'director': ['马克·伯顿 ', ' 理查德·斯塔扎克'], 'composer': ['马克·伯顿', '理查德·斯塔扎克'], 'actor': ['贾斯汀·弗莱彻', '约翰·斯帕克斯', '欧米德·吉亚李利', '理查德·韦伯', '凯特·哈伯', '蒂姆·汉兹', '安迪·尼曼', '西蒙·格林诺', '艾玛·泰特', '杰克·保尔森', '西恩·康诺利', '亨利·伯顿', '迪曼特·维瓦斯', '苏菲·劳顿', '妮娅·梅迪·詹姆斯'], 'category': ['喜剧', '动画', '冒险'], 'district': ['United Kingdom_英国', 'France_法国'], 'language': ['无对白'], 'showtime': 2015.0, 'length': 85.0, 'othername': ['小羊肖恩大电影', '超级无敌羊咩咩大电影之咩最劲(港)', '笑笑羊大电影(台)', '超级无敌羊咩咩 电影版', '笑笑羊 电影版']}
{'id': 6866928, 'title': '进击的巨人真人版:前篇', 'url': 'http://movie.douban.com/subject/6866928/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p2239093805.jpg', 'rate': 5.1, 'director': ['樋口真嗣'], 'composer': ['渡边雄介', '町山智浩', '谏山创'], 'actor': ['三浦春马', '长谷川博己', '水原希子', '本乡奏多', '三浦贵大', '樱庭奈奈美', '松尾谕', '石原里美', '皮埃尔泷', '国村隼', '渡部秀', '水崎绫女', '武田梨奈'], 'category': ['动作', '科幻', '惊悚'], 'district': ['Japan_日本'], 'language': ['日语'], 'showtime': 2015.0, 'length': 98.0, 'othername': ['The Movie']}
...
{'id': 1422954, 'title': '吮拇指的人', 'url': 'http://movie.douban.com/subject/1422954/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p1563658637.jpg', 'rate': 7.2, 'director': ['迈克·米尔斯'], 'composer': ['迈克·米尔斯', 'Walter Kirn'], 'actor': ['Ted Beckman', '本杰明·布拉特', '文森特·多诺费奥', 'Arvin V. Entena', 'Tyler Gannon', '凯丽·加纳', 'Allen Go', 'Dakota Goldhor', 'Walter Kirn', 'Kit Koenig', 'Sarah Lucht', 'Eric Normington', '南希·奥黛尔', 'Lanette Prazeau', '卢·泰勒·普奇'], 'category': ['剧情', '喜剧'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2005.0, 'length': 96.0, 'othername': ['吸拇指的人', '吮吸拇指的人']}
{'id': 2215609, 'title': '歌舞青春3:毕业季', 'url': 'http://movie.douban.com/subject/2215609/', 'cover': 'http://img3.douban.com/lpic/s3055372.jpg', 'rate': 7.3, 'director': ['肯尼·奥特加'], 'composer': ['Peter Barsocchini'], 'actor': ['扎克·埃夫隆', '瓦妮莎·哈金斯', '阿什丽·提斯代尔', '科宾·布鲁', '巴特·约翰逊', 'Leslie Wing', '艾莉森·瑞德'], 'category': ['剧情', '喜剧', '家庭'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 2008.0, 'length': 112.0, 'othername': ['歌舞青春3:毕业年', '歌舞青春3:毕业嘉年华']}
{'id': 1292718, 'title': '大河恋', 'url': 'http://movie.douban.com/subject/1292718/', 'cover': 'http://img4.douban.com/view/movie_poster_cover/lpst/public/p949393266.jpg', 'rate': 8.4, 'director': ['罗伯特·雷德福'], 'composer': ['理查德·弗雷登伯格'], 'actor': ['布拉德·皮特', '克莱格·谢佛', '汤姆·斯凯里特', '布兰达·布莱斯', '伊迪·迈克莱尔', '约瑟夫·高登-莱维特', '艾米丽·劳伊德', '斯蒂芬·谢伦', '塞尔玛·布莱尔'], 'category': ['剧情', '家庭'], 'district': ['United States of America_美国'], 'language': ['英语'], 'showtime': 1992.0, 'length': 123.0, 'othername': ['川流岁月(港)', '大河之恋', '一条贯穿的大河', '一条奔腾而过的河流']}
{'id': 1296835, 'title': '青春年少', 'url': 'http://movie.douban.com/subject/1296835/', 'cover': 'http://img3.douban.com/view/movie_poster_cover/lpst/public/p456194105.jpg', 'rate': 7.9, 'director': ['韦斯·安德森'], 'composer': ['韦斯·安德森', '欧文·威尔逊'], 'actor': ['詹森·舒瓦兹曼', '比尔·默瑞', '奥莉维亚·威廉姆斯', '卢克·威尔逊', '康妮·尼尔森'], 'category': ['剧情', '喜剧'], 'district': ['United States of America_美国'], 'language': ['英语', '拉丁语'], 'showtime': 1999.0, 'length': 93.0, 'othername': ['都是爱情惹的祸', '撬墙角', '冲动少年']}
节点和关系导入
from py2neo import Graph, Node, Relationship
# 连接neo4j数据库,输入地址、用户名、密码
graph = Graph("http://localhost:7474", name="neo4j", password='xxx')

添加四类实体:电影film,导演director,编剧composer和演员actor
以及建立电影film与其他三类实体entity之间的关系。

import json 
graph.delete_all() #清除neo4j中原有的结点等所有信息with open('douban.json','r',encoding='utf-8') as f:res = json.load(f)for r in res:node_title = Node('film',name=r['title'],id=r['id'],rate=r['rate'],category=','.join(r['category']) if r['category'] != None else None,district=','.join(r['district']) if r['district'] != None else None,showtime=r['showtime'],length=r['length'],language=','.join(r['language']) if r['language'] != None else None,othername=','.join(r['othername']) if r['othername'] != None else None)graph.create(node_title)if r['director'] != None: for di in r['director']:node_director = Node('director',name=di)rel = Relationship(node_title,'director',node_director)graph.create(node_director)graph.create(rel)if r['composer'] != None:for co in r['composer']:node_composer = Node('composer',name=co)rel = Relationship(node_title,'composer',node_composer)graph.create(node_composer)graph.create(rel)if r['actor'] != None:for ac in r['actor']:node_actor = Node('actor',name=ac)rel = Relationship(node_title,'actor',node_actor)graph.create(node_composer)graph.create(rel)
使用Subgraph批量导入节点和关系

每次导入节点和关系非常耗时,py2neo提供了子图的方式可以批量导入节点和关系。

import json 
from py2neo import Subgraph
graph.delete_all() #清除neo4j中原有的结点等所有信息nodes = []
relationships = []with open('douban.json','r',encoding='utf-8') as f:res = json.load(f)for r in res:node_title = Node('film',name=r['title'],id=r['id'],rate=r['rate'],category=','.join(r['category']) if r['category'] != None else None,district=','.join(r['district']) if r['district'] != None else None,showtime=r['showtime'],length=r['length'],language=','.join(r['language']) if r['language'] != None else None,othername=','.join(r['othername']) if r['othername'] != None else None)nodes.append(node_title)if r['director'] != None: for di in r['director']:node_director = Node('director',name=di)rel = Relationship(node_title,'director',node_director)nodes.append(node_director)relationships.append(rel)if r['composer'] != None:for co in r['composer']:node_composer = Node('composer',name=co)rel = Relationship(node_title,'composer',node_composer)nodes.append(node_composer)relationships.append(rel)if r['actor'] != None:for ac in r['actor']:node_actor = Node('actor',name=ac)rel = Relationship(node_title,'actor',node_actor)nodes.append(node_actor)relationships.append(rel)
subgraph = Subgraph(nodes,relationships)
tx = graph.begin() 
tx.create(subgraph)graph.commit(tx)
多标签实体和实体去重

有些人既是导演又是编剧或者演员,重复生成节点会导致重复,所以需要对实体进行去重,然后对唯一实体添加他的多个标签。

import json 
from py2neo import NodeMatcher
graph.delete_all() #清除neo4j中原有的结点等所有信息entity = []
with open('douban.json','r',encoding='utf-8') as f:res = json.load(f)for r in res:node_title = Node('film',name=r['title'],id=r['id'],rate=r['rate'],category=','.join(r['category']) if r['category'] != None else None,district=','.join(r['district']) if r['district'] != None else None,showtime=r['showtime'],length=r['length'],language=','.join(r['language']) if r['language'] != None else None,othername=','.join(r['othername']) if r['othername'] != None else None)#entity.append(node_title)graph.create(node_title)if r['director'] != None:for di in r['director']:if di not in entity:entity.append(di)node_director = Node('director',name=di)rel = Relationship(node_title,'导演',node_director)graph.create(node_director)else:node_matcher = NodeMatcher(graph)node = node_matcher.match('director').where(name=di).first()if node == None:node = node_matcher.match('composer').where(name=di).first()if node == None:node = node_matcher.match('actor').where(name=di).first()node.add_label('director')else:node.add_label('director')rel = Relationship(node_title,'导演',node)graph.create(rel)if r['composer'] != None:for co in r['composer']:if co not in entity:entity.append(co)node_composer = Node('composer',name=co)rel = Relationship(node_title,'编剧',node_composer)graph.create(node_composer)else:node_matcher = NodeMatcher(graph)node = node_matcher.match('composer').where(name=co).first()if node == None:node = node_matcher.match('director').where(name=co).first()if node == None:node = node_matcher.match('actor').where(name=co).first()node.add_label('composer')else:node.add_label('director')rel = Relationship(node_title,'编剧',node)graph.create(rel)if r['actor'] != None:for ac in r['actor']:if ac not in entity:entity.append(ac)node_actor = Node('actor',name=ac)rel = Relationship(node_title,'演员',node_actor)graph.create(node_actor)else:node_matcher = NodeMatcher(graph)node = node_matcher.match('actor').where(name=ac).first()if node == None:node = node_matcher.match('director').where(name=ac).first()if node == None:node = node_matcher.match('composer').where(name=ac).first()node.add_label('actor')else:node.add_label('actor')rel = Relationship(node_title,'演员',node)graph.create(rel)
  • 最终知识图谱
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【golang】25、图片操作

用 “github.com/fogleman/gg” 可以画线, 框 用 “github.com/disintegration/imaging” 可以变换颜色 一、渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (st…

Python爬虫——Urllib库-3

目录 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 获取豆瓣电影前十页的数据 ajax的post请求 总结 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 首先可以在浏览器找到发送数据的接口 那么我们的url就可以在header中找到了 再加上UA这个header 进行请…

Facebook的元宇宙实践:数字化社交的新前景

近年来,元宇宙(Metaverse)这一概念备受瞩目,被认为是数字化社交的未来趋势之一。而在众多科技巨头中,Facebook(现更名为Meta)一直处于元宇宙发展的前沿。在本文中,我们将深入探讨Fac…

万字带你走过数据库的这激荡的三年

本文收集了卡内基梅隆大学计算机科学系数据库学副教授 Andy Pavlo 从 2021 到 2023 连续三年对数据库领域的回顾,希望通过连续三年的回顾让你对数据库领域的技术发展有所了解。 关于 Andy Pavlo:卡内基梅隆大学计算机科学系数据库学副教授,数…

vuepress项目侧边栏菜单配置使用

第一种菜单配置,自定义菜单名称 {text: 菜单名称,// 是否折叠collapsible: true,children: [{text: "自定义md菜单名称",sidebarDepth: 2,link: "/xxx/aa.md",children: [],}],},第二种菜单配置 标题自动生成菜单,使用需要搭配sideb…

c语言求矩阵的局部极大值

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。 输入格式: 输入在第一行中给出矩阵A的行数M和列数N(3≤…

C语言创建结构体时 什么时候需要C++引用 什么情况下下不需要引用

在C语言中,结构体通常通过传递指针来实现对结构体的修改。当在函数中需要修改结构体的内容,并且希望这些修改在调用函数后仍然保持,可以考虑使用指针。引用是C中的一种特殊机制,用于更方便地传递参数,但在纯粹的C语言中…

《springcloud alibaba》 三 sentinel流量控制

目录 sentinel准备流控规则 qpspom.xmlapllication.yml启动类controller查看结果流控提示不太友好 流控规则 线程数全局异常处理pom.xmlapplication.yml启动类实体类controller类异常类测试 关联流控模式关联jmeter 链路servicecontroller代码调整 流控效果Warm UP 熔断降级规则…

[Flutter]用16进制颜色字符串初始化Color

使用: // 使用Color的静态方法 fromARGB() 来创建颜色对象。透明度为 255(完全不透明) Color a Color.fromARGB(255, 42, 35, 72); // 使用八位的十六进制数来表示颜色,其中前两位表示透明度,后六位表示红色、绿色和…

本科毕业设计:计及并网依赖性的分布式能源系统优化研究。(C语言实现)(内包含NSGA II优化算法)(二)

目录 前言 1、sofc函数 2、光伏板函数 3、集热场函数 4、sofc电跟随策略函数 5、二分法找sofc运行点函数 6、目标函数:成本 7、目标函数:二氧化碳排放量 8、目标函数:并网依赖性 前言 本篇文章介绍的是我的毕业设计,我将C…

JavaScript DOM操作笔记记录回忆总结

一、什么是DOM? 1、通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。 2、当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model) 二、操作DOM 1、在操作DOM之前,我们需要先获取到…

DOM 创建节点、添加节点和删除节点

创建元素节点 document.createElement(‘标签名’) 创建文本节点document.createTextNode ( 内容 ) 根据传入的标签名创建出一个空的元素对象创建出来的默认不显示,要成为别人的子元素才能显示,所以要结合appendChild使用 添加节点(后面&am…

团体程序设计天梯赛 L2-001 紧急救援(迪杰斯特拉算法)

L2-001 紧急救援 分数 25 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&…

python笔记_运算符

A,算术运算符 运算符描述举例结果加011-减2-11*乘1*11/除1/11%取模(取余)6%51(余1)//除,且向下取整 3//2 -1//2 1 -1 **返回x的y次幂2**01 取模运算公式 a % b a - a // b * b print(-10%…

【复现】蓝凌OA SQL注入漏洞_61

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 蓝凌智能OA是由深圳市蓝凌软件股份有限公司开发,是一款针对中小企业的移动化智能办公产品,融合了钉钉数字…

C习题002:澡堂洗澡【仅供参考】

问题 输入样例 在这里给出一组输入。例如&#xff1a; 2 5 1 3 3 2 3 3 输出样例 在这里给出相应的输出。例如&#xff1a; No代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB 代码 #include<stdio.h> int main() {int N,W,s,t,p;int arr_s[…

递归算法题练习(数的计算、带备忘录的递归、计算函数值)

递归的介绍 概念:递归是指函数直接或间接调用自身的过程。 解释递归的两个关键要素: 基本情况(递归终止条件):递归函数中的一个条件&#xff0c;当满足该条件时&#xff0c;递归终止&#xff0c;避免无限递归。可以理解为直接解决极小规模问题的方法。递归表达式(递归调用):递…

k8s 中 namspace deployment pod services 之间的关系

在Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Namespace&#xff08;命名空间&#xff09;是一种用于将集群内部资源划分为不同逻辑组的机制。Deployment、Pod和Service是Kubernetes中常见的资源&#xff0c;它们之间的关系如下&#xff1a; Namespace&#xff08;命…

网络安全攻防演练:企业蓝队建设指南

第一章 概述 背景 网络实战攻防演习是当前国家、重要机关、企业组织用来检验网络安全防御能力的重要手段之一,是对当下关键信息系统基础设施网络安全保护工作的重要组成部分。网络攻防实战演习通常是以实际运行的信息系统为攻击目标,通过在一定规则限定下的实战攻防对抗,最…

认识通讯协议——TCP/IP、UDP协议的区别,HTTP通讯协议的理解

目录 引出认识通讯协议1、TCP/IP协议&#xff0c;UDP协议的区别2、HTTP通讯协议的讲解 Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 认识通讯协议——TCP/IP、UDP协议的区别&#xff0c;HTTP通讯协议的理解 认识通讯协议 …