Esempio n. 1
0
    def get_all_tuples_of_relations(self):
        '''
        Returns list of tuples of relations which connects 'self.concepts' sequence in the path.
        '''
        relations_tuples = []

        for index, (concept1, concept2) in enumerate(pairwise(self.concepts)):
            search = Search(start=concept1, end=concept2)
            data = search.search()
            result = Result(data)
            if result.get_num_found() > 0:
                edges = result.parse_all_edges()
                if index == 0:
                    for e in edges:
                        if not [e.rel] in relations_tuples:
                            relations_tuples.append([e.rel])
                else:
                    for relation_tuple in relations_tuples:
                        if len(relation_tuple) == index:
                            for e in edges:
                                relation_tuple_copy = copy.deepcopy(
                                    relation_tuple)
                                relation_tuple_copy.append(e.rel)
                                if not relation_tuple_copy in relations_tuples:
                                    relations_tuples.append(
                                        relation_tuple_copy)

        for relation_tuple in relations_tuples:
            if len(relation_tuple) != len(self.concepts) - 1:
                relations_tuples.remove(relation_tuple)

        return relations_tuples
Esempio n. 2
0
    def get_all_tuples_of_relations(self):
        '''
        Returns list of tuples of relations which connects 'self.concepts' sequence in the path.
        '''
        relations_tuples = []
        
        for index, (concept1, concept2) in enumerate(pairwise(self.concepts)):
            search = Search(start=concept1, end=concept2)
            data = search.search()
            result = Result(data)
            if result.get_num_found() > 0:
                edges = result.parse_all_edges()
                if index == 0:
                    for e in edges:
                        if not [e.rel] in relations_tuples:
                            relations_tuples.append([e.rel])
                else:
                    for relation_tuple in relations_tuples:
                        if len(relation_tuple) == index:
                            for e in edges:
                                relation_tuple_copy = copy.deepcopy(relation_tuple)
                                relation_tuple_copy.append(e.rel)
                                if not relation_tuple_copy in relations_tuples:
                                    relations_tuples.append(relation_tuple_copy)
                            
        for relation_tuple in relations_tuples:
            if len(relation_tuple) != len(self.concepts)-1:
                relations_tuples.remove(relation_tuple)

        return relations_tuples
Esempio n. 3
0
    def does_exist(self, print_where_breaks=False):
        '''
        Checks whether this path exists in ConceptNet5.

        :param print_where_breaks: prints the assertion, if the assertion does not exist in the path.
        '''
        for assertion in self.assertions:
            search = Search(start=assertion.start, rel=assertion.relation, end=assertion.end, limit=1000)
            data = search.search()
            result = Result(data)
            if result.get_num_found() == 0:
                if print_where_breaks == True:
                    print('Assertion breaking the path: [ %s --> (%s) --> %s) ]' % (
                        assertion.start, assertion.relation, assertion.end))
                return False
        return True
Esempio n. 4
0
    def does_exist(self, print_where_breaks=False):
        '''
        Checks whether this path exists in ConceptNet5.

        :param print_where_breaks: prints the assertion, if the assertion does not exist in the path.
        '''
        for assertion in self.assertions:
            search = Search(start=assertion.start,
                            rel=assertion.relation,
                            end=assertion.end,
                            limit=1000)
            data = search.search()
            result = Result(data)
            if result.get_num_found() == 0:
                if print_where_breaks == True:
                    print 'Assertion breaking the path: [ %s --> (%s) --> %s) ]' % (
                        assertion.start, assertion.relation, assertion.end)
                return False
        return True