Ejemplo n.º 1
0
def unknown_2_entity_2_generation(current_uid: int, question_template: Dict[str, Any], generated_questions: List[Dict[str, Any]],
old_entities_ids: List[str] = None, old_entities: List[str] = None) -> Dict[str, Any]:
    generated_template = deepcopy(question_template)
    if old_entities_ids is None:
        sparql_query = generated_template['sparql_wikidata']
        old_entities_ids = questions_generator.get_elements_from_query(sparql_query, [0, 1])
    found, old_entities = questions_generator.entity_2_generation_common_part(current_uid, generated_template, generated_questions, old_entities_ids, old_entities)
    if not found:
        return unkown_2_entity_generation(current_uid, generated_template, generated_questions, old_entities_ids, old_entities)
    else:
        unknown_2_nnqt_question_construction(generated_template)
        return generated_template
def right_subgraph_2_entity_2_generation(current_uid: int, question_template: Dict[str, Any], generated_questions: List[Dict[str, Any]],
old_entities_ids: List[str] = None, old_entities: List[str] = None) -> Dict[str, Any]:
    generated_template = deepcopy(question_template)
    if old_entities_ids is None:
        sparql_query = generated_template['sparql_wikidata']
        old_entities_ids = questions_generator.get_elements_from_query(sparql_query, [0])
    found, old_entities = questions_generator.entity_2_generation_common_part(current_uid, generated_template, generated_questions, old_entities_ids, old_entities)
    if not found:
        # There aren't valid candidates, so try with a random entity
        return right_subgraph_2_entity_generation(current_uid, question_template, generated_questions, old_entities_ids, old_entities)
    else:
        right_subgraph_2_nnqt_question_construction(generated_template)
        return generated_template
def statement_property_entity_2_generation(current_uid: int, question_template: Dict[str, Any], generated_questions: List[Dict[str, Any]],
old_entities_ids: List[str] = None, old_entities: List[str] = None) -> Dict[str, Any]:
    generated_template = deepcopy(question_template)
    if old_entities_ids is None:
        sparql_query = generated_template['sparql_wikidata']
        # Check if there is a filter: if not so the last element is an entity
        if 'filter' in sparql_query.lower():
            old_entities_ids = questions_generator.get_elements_from_query(sparql_query, [0])
        else:
            old_entities_ids = questions_generator.get_elements_from_query(sparql_query, [0, 1])
    found, old_entities = questions_generator.entity_2_generation_common_part(current_uid, generated_template, generated_questions, old_entities_ids, old_entities)
    if not found:
        # There aren't valid candidates, so try with a random entity
        return statement_property_entity_generation(current_uid, question_template, generated_questions, old_entities_ids, old_entities)
    else:
        statement_property_nnqt_question_construction(generated_template)
        return generated_template