Spaces:
Runtime error
Runtime error
# coding=utf-8 | |
# Copyright 2021 The IDEA Authors. All rights reserved. | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
import collections | |
from typing import List, Dict, Tuple | |
def get_choice(spo_choice: list) -> tuple: | |
""" 把关系schema中的关系、实体获取出来 | |
Args: | |
spo_choice (list): 关系schema | |
Returns: | |
tuple: | |
choice_ent (list) | |
choice_rel (list) | |
choice_head (list) | |
choice_tail (list) | |
entity2rel (dict) | |
""" | |
choice_head = [] | |
choice_tail = [] | |
choice_ent = [] | |
choice_rel = [] | |
entity2rel = collections.defaultdict(list) # "subject|object" -> [relation] | |
for head, rel, tail in spo_choice: | |
if head not in choice_head: | |
choice_head.append(head) | |
if tail not in choice_tail: | |
choice_tail.append(tail) | |
if head not in choice_ent: | |
choice_ent.append(head) | |
if tail not in choice_ent: | |
choice_ent.append(tail) | |
if rel not in choice_rel: | |
choice_rel.append(rel) | |
entity2rel[head, tail].append(rel) | |
return choice_ent, choice_rel, choice_head, choice_tail, entity2rel | |