Ejemplo n.º 1
0
def _generate_ungrounded_graph(nodes, edges, ungrounded_query_id=1):
    '''ungrounded graph'''
    return UngroundedGraph(ungrounded_query_id=ungrounded_query_id,
                           nodes=nodes,
                           edges=edges,
                           important_words_list=[],
                           abstract_question=[],
                           grounded_linking=[],
                           grounded_graph_forest=[])
Ejemplo n.º 2
0
def generate_ungrounded_graph(ungrounded_nodes=None, span_tree_hybrid_dependency_graph=None):
    '''
    :param ungrounded_nodes:
    :param span_tree_hybrid_dependency_graph:
    :return: path: ungrounded edges
    '''
    visit_set.clear()
    global ungrounded_edges
    ungrounded_edges = []
    path.clear()
    construct_edges(ungrounded_nodes=ungrounded_nodes, span_tree_hybrid_dependency_graph=span_tree_hybrid_dependency_graph)
    ungrounded_graph = UngroundedGraph(
        ungrounded_query_id=1, nodes=ungrounded_nodes, edges=ungrounded_edges,
        important_words_list=[], abstract_question=[], grounded_linking=[], grounded_graph_forest=[])
    return ungrounded_graph
Ejemplo n.º 3
0
def _run_ner_topic_entities(qid=None, question_normal=None, gold_graph_query=None, gold_answer=None, gold_sparql_query=None,
                            node_is_gold=False, q_mode='lcquad'):
    """node mention annotation"""
    tokens = parsing_utils.create_tokens(question_normal.split(" "))
    """generate nodes"""
    if node_is_gold:
        ungrounded_nodes = node_recognition.generate_gold_nodes(question_normal=question_normal)
    else:
        ungrounded_nodes = node_recognition.generate_nodes(question_normal=question_normal, tokens=tokens)
    ungrounded_graphs_list = []
    main_ungrounded_graph = UngroundedGraph(
        ungrounded_query_id=1, nodes=ungrounded_nodes, edges=[],
        important_words_list=[], abstract_question=[], grounded_linking=[], grounded_graph_forest=[])
    main_ungrounded_graph.set_blag('ir')
    """"""
    abstract_question_word = parsing_utils.abstract_question_word_generation(tokens=tokens,
                                                                             ungrounded_nodes=ungrounded_nodes)
    sequence_bert_ner_tag_dict = parsing_utils.get_nertag_sequence(ungrounded_nodes=ungrounded_nodes)
    main_ungrounded_graph.sequence_ner_tag_dict = str(sequence_bert_ner_tag_dict)
    main_ungrounded_graph.abstract_question = str(abstract_question_word)
    main_ungrounded_graph.important_words_list = str([])
    ungrounded_graphs_list.append(main_ungrounded_graph)
    """question type"""
    compositionality_type, q_function = qtype_interface.question_type_interface(question_normal=question_normal, q_mode=q_mode)
    """generate question annotation"""
    question_annotation = QuestionAnnotation(qid=qid,
                                             question=question_normal,
                                             question_normal=question_normal,
                                             tokens=tokens,
                                             span_tree=None,
                                             span_tree_hybrid_dependency_graph=None,
                                             main_ungrounded_graph=main_ungrounded_graph,
                                             sequence_ner_tag_dict=sequence_bert_ner_tag_dict,
                                             gold_graph_query=gold_graph_query,
                                             gold_answer=gold_answer,
                                             gold_sparql_query=gold_sparql_query,
                                             compositionality_type=compositionality_type,
                                             q_function=q_function)
    """generate structure"""
    structure = question_annotation.convert_to_structure()
    structure.set_ungrounded_graph_forest(ungrounded_graph_forest=ungrounded_graphs_list)
    return structure
Ejemplo n.º 4
0
def read_ungrounded_graph(ungrounded_graph_json):
    '''
        function: read ungrounded_graph data
        :param ungrounded_graph_json: ungrounded_graph json file
        :return: ungrounded_graph structure list
    '''
    ungrounded_query_id = ungrounded_graph_json['ungrounded_query_id']
    blag = ''
    if 'blag' in ungrounded_graph_json.keys():
        blag = ungrounded_graph_json['blag']
    nodes = []
    edges = []
    for node_json in ungrounded_graph_json['nodes']:
        if 'score' in node_json.keys():
            score = node_json['score']
        else:
            score = 0.0
        if 'ordinal' in node_json.keys():
            ordinal = node_json['ordinal']
        else:
            ordinal = "none"
        nodes.append(
            UngroundedNode(
                nid=node_json["nid"],
                node_type=node_json["node_type"],
                friendly_name=node_json["friendly_name"],
                question_node=node_json["question_node"],
                function_str=node_json["function"],
                score=score,
                normalization_value=node_json["normalization_value"],
                type_class=node_json['type_class'],
                ordinal=ordinal))
    for edge_json in ungrounded_graph_json['edges']:
        if 'score' in edge_json.keys():
            score = edge_json['score']
        else:
            score = 0.0
        edges.append(
            UngroundedEdge(start=edge_json["start"],
                           end=edge_json["end"],
                           friendly_name=edge_json["friendly_name"],
                           score=score))
    important_words_list = ungrounded_graph_json['important_words_list']
    abstract_question = ungrounded_graph_json['abstract_question']
    sequence_ner_tag_dict = ungrounded_graph_json['sequence_ner_tag_dict']
    grounded_linking = None
    if 'grounded_linking' in ungrounded_graph_json.keys():
        grounded_linking = ungrounded_graph_json['grounded_linking']
    grounded_graph_list = []
    if 'grounded_graph_forest' in ungrounded_graph_json.keys():
        # add grounded_graph_forest
        for grounded_graph_json in ungrounded_graph_json[
                'grounded_graph_forest']:
            grounded_graph_list.append(
                read_grounded_graph(grounded_graph_json))
    return UngroundedGraph(ungrounded_query_id=ungrounded_query_id,
                           blag=blag,
                           nodes=nodes,
                           edges=edges,
                           important_words_list=important_words_list,
                           abstract_question=abstract_question,
                           sequence_ner_tag_dict=sequence_ner_tag_dict,
                           grounded_linking=grounded_linking,
                           grounded_graph_forest=grounded_graph_list)