Esempio n. 1
0
    def handle_sentence(self, sentence):
        """Creates a `TigerGraph` for a sentence specification and feeds it to the indexer."""
        graph = TigerGraph(sentence.get("id"))

        graph_elem = sentence.find("graph")

        self._read_nodes(graph_elem.getiterator("t"), graph.nodes,
                         TerminalNode, self._postproc_terminal)
        self._read_nodes(graph_elem.getiterator("nt"), graph.nodes,
                         NonterminalNode, self._postproc_nonterminal)

        graph.root_id = graph_elem.get("root")

        self._indexer.add_graph(graph)
        return self.DELETE_BRANCH
Esempio n. 2
0
    def handle_sentence(self, sentence):
        """Creates a `TigerGraph` for a sentence specification and feeds it to the indexer."""
        graph = TigerGraph(sentence.get("id"))
        
        graph_elem = sentence.find("graph")
        
        self._read_nodes(graph_elem.getiterator("t"), graph.nodes, TerminalNode, 
                         self._postproc_terminal)
        self._read_nodes(graph_elem.getiterator("nt"), graph.nodes, NonterminalNode, 
                         self._postproc_nonterminal)
        
        graph.root_id = graph_elem.get("root")

        self._indexer.add_graph(graph)
        return self.DELETE_BRANCH
    def deserialize_graph(self, graph_id, graph_data_buffer):
        graph = TigerGraph(graph_id)
        up = cPickle.Unpickler(
            cStringIO.StringIO(zlib.decompress(graph_data_buffer)))

        graph.root_id = up.load()
        data = up.load()
        for i in xrange(0, len(data), 3):
            node = NonterminalNode(data[i])
            node.features = self._get_features(self._nt_features, data[i + 1])

            node.edges = self._get_edge_list(data[i + 2],
                                             self._edge_label_rmap)

            graph.nodes[node.id] = node

        data = up.load()
        for i in xrange(0, len(data), 3):
            node = TerminalNode(data[i])
            node.features = self._get_features(self._t_features, data[i + 1])
            node.order = data[i + 2]
            graph.nodes[node.id] = node

        data = up.load()
        for i in xrange(0, len(data), 4):
            node = NonterminalNode(data[i])
            node.features = self._get_features(self._nt_features, data[i + 1])
            node.edges = self._get_edge_list(data[i + 2],
                                             self._edge_label_rmap)
            node.secedges = self._get_edge_list(data[i + 3],
                                                self._secedge_label_rmap)

            graph.nodes[node.id] = node

        data = up.load()
        for i in xrange(0, len(data), 4):
            node = TerminalNode(data[i])
            node.features = self._get_features(self._t_features, data[i + 1])
            node.order = data[i + 2]
            node.secedges = self._get_edge_list(data[i + 3],
                                                self._secedge_label_rmap)

            graph.nodes[node.id] = node

        return graph
Esempio n. 4
0
    def deserialize_graph(self, graph_id, graph_data_buffer):
        graph = TigerGraph(graph_id)
        up = cPickle.Unpickler(cStringIO.StringIO(zlib.decompress(graph_data_buffer)))

        graph.root_id = up.load()
        data = up.load()
        for i in xrange(0, len(data), 3):
            node = NonterminalNode(data[i])
            node.features  = self._get_features(self._nt_features, data[i+1])

            node.edges = self._get_edge_list(data[i+2], self._edge_label_rmap)
            
            graph.nodes[node.id] = node
        
        data = up.load()
        for i in xrange(0, len(data), 3):
            node = TerminalNode(data[i])
            node.features  = self._get_features(self._t_features, data[i+1])
            node.order = data[i+2]
            graph.nodes[node.id] = node
        
        data = up.load()
        for i in xrange(0, len(data), 4):
            node = NonterminalNode(data[i])
            node.features  = self._get_features(self._nt_features, data[i+1])
            node.edges = self._get_edge_list(data[i+2], self._edge_label_rmap)
            node.secedges = self._get_edge_list(data[i+3], self._secedge_label_rmap)
            
            graph.nodes[node.id] = node
            
        data = up.load()
        for i in xrange(0, len(data), 4):
            node = TerminalNode(data[i])
            node.features  = self._get_features(self._t_features, data[i+1])
            node.order = data[i+2]
            node.secedges = self._get_edge_list(data[i+3], self._secedge_label_rmap)
            
            graph.nodes[node.id] = node
        
        return graph