Exemplo n.º 1
0
 def getN(self, E):
     result = set()
     for (x1, x2) in E:
         un = x1.extent.union(x2.extent)
         toadd = Concept(self.arrowUp(un), self.arrowDown(self.arrowUp(un)))
         result.add(toadd)
     return result
Exemplo n.º 2
0
    def RSALG(self):
        C = set()
        D = set()
        for x in self.X:
            elem = Concept(self.arrowUp([x]),
                           self.arrowDown(self.arrowUp([x])))
            C.add(elem)
            D.add(elem)

        print("uvodna dlzka C:", len(C))
        print("uvodna dlzka D:", len(D))
        print([str(c) for c in C])

        i = 0
        while (len(D) > 1):
            i += 1
            print("iteracia: ", i)
            m = self.getMin(D)
            print("min: ", m)
            E = self.getE(D, m)
            print("E: ", [(str(c), str(c2)) for (c, c2) in E])
            V = self.getV(D, E)
            print("V: ", [str(c) for c in V])
            N = self.getN(E)
            print("N: ", [str(c) for c in N])
            D = D.difference(V).union(N)
            print("dlzka D:", len(D))
            C = C.union(N)
            print("dlzka C:", len(C))
        return C
Exemplo n.º 3
0
    def __init__(self):
        """
        Initial function
        Generate the ontology.

        """

        """
        private members:
            1. concepts ----> concept list(elements are Concept object)
            2. __record ----> record list(elements are tuple)
            3. Root --------> Root node of the whole tree
        """
        self.concepts = []
        self.__record = []
        self.Root = Concept('0', None)

        self.nfg, self.fg = self.__read()
        self.token = 0
        self.token_1 = 0
        self.back_point = 0

        for concept in self.nfg:
            self.flag = True
            self.__search_sub_concept(concept)

        for concept in self.concepts:
            if concept.ancestor == None:
                self.__link(self.Root, concept)
        self.concepts.append(self.Root)
        self.__record.append(('0',None))
Exemplo n.º 4
0
    def __search_sub_concept_in_fg(self, length_fg, cid, concept, ancestor):
        while True:
            self.__correct_token(concept)
            if self.token >= length_fg:
                self.token = self.back_point
                break

            next = self.fg[self.token]
            next_cid = self.__extract_code(next)

            if (len(cid) == 3 and len(next_cid) == 4 and cid == next_cid[0:3]) \
                    or (len(cid) == 4 and len(next_cid) == 5 and cid == next_cid[0:4]):
                descendant = Concept(next[0], next[1])
                self.concepts.append(descendant)
                self.__record.append(next)
                self.__link(ancestor, descendant)
                self.token += 1
            elif (len(cid) == 3 and len(next_cid) == 5 and cid == next_cid[0:3]):
                if self.flag == True:
                    self.back_point = self.token
                    self.flag = False
                self.token += 1
                continue
            else:
                if self.flag == False:
                    self.token = self.back_point
                break
	def match_lexicon(self,token):
		concept_list = []
		for concept in self.lexicon:
			if token.content.lower() in concept.keywords.split(","):
				tmp = Concept(concept,token)
				if tmp.type==1:
					for num in range(token.quant):
						concept_list.append(copy.copy(tmp))
				else:
					concept_list.append(tmp)
		return concept_list
Exemplo n.º 6
0
    def __correct_token(self, concept):
        """
        For several cases, there exist dislocation of token.
        This function is used for token correction
        :param concept:
        :param token:
        :return token:
        """
        length_fg = len(self.fg)
        cid = self.__extract_code(concept)
        while True:
            if self.token >= length_fg:
                break
            next = self.fg[self.token]
            next_cid = self.__extract_code(next)
            if (len(cid) == 4 and len(next_cid) == 4 and cid[0:3] == next_cid[0:3]): # sibling nodes
                if next_cid[0] == 'E' and len(next_cid) == 4:
                    a = Concept(next[0], next[1])
                    self.concepts.append(a)
                    self.__record.append(next)
                    self.__link(self.Root, a)

                self.token += 1
            elif (len(cid) == 3 and len(next_cid) == 4 and cid > next_cid[0:3]): # previous concepts
                self.token += 1
            elif len(next_cid) == 3:  # fine-grained concept but has no parents except for root
                a = Concept(next[0], next[1])
                self.concepts.append(a)
                self.__record.append(next)
                self.__link(self.Root, a)
                self.token += 1
            elif next_cid[0] == 'E' and len(next_cid) == 4: # fine-grained concept begun with E but has no parents
                a = Concept(next[0], next[1])
                self.concepts.append(a)
                self.__record.append(next)
                self.__link(self.Root, a)
                self.token += 1
            else:
                break
Exemplo n.º 7
0
 def __search_sub_concept_in_nfg(self, length_nfg, cid, ancestor):
     while True:
         self.token_1 += 1
         if self.token_1 >= length_nfg:
             break
         next = self.nfg[self.token_1]
         next_cid = self.__extract_code(next)
         if cid == next_cid[0:3]:
             descendant = Concept(next[0], next[1])
             self.concepts.append(descendant)
             self.__record.append(next)
             self.__link(ancestor, descendant)
         else:
             break
Exemplo n.º 8
0
 def __duplicate_judge(self, concept):
     """
     Check if the concept has been in the list of record
     :param concept:
     :return ancestor:
     """
     if concept not in self.__record:
         # if not record, then record it
         ancestor = Concept(concept[0], concept[1])
         self.concepts.append(ancestor)
         self.__record.append(concept)
     else:
         # record, then return it
         ancestor = [obj for obj in self.concepts if obj.cid == concept[0]]
         ancestor = ancestor[0]
     return ancestor
Exemplo n.º 9
0
def index():
    c = Concept()
    return render_template("index.html", inspiration=c.conceptualize())
Exemplo n.º 10
0
def concept_route(subject, descriptor, setting):
    print subject, descriptor, setting
    c = Concept([subject, descriptor, setting])
    return render_template("index.html", inspiration=c.conceptualize())
Exemplo n.º 11
0
def index():
    c = Concept()
    return render_template("index.html", inspiration=c.conceptualize())
Exemplo n.º 12
0
def concept_route(subject, descriptor, setting):
    print subject, descriptor, setting
    c = Concept([subject, descriptor, setting])
    return render_template("index.html", inspiration=c.conceptualize())