Exemple #1
0
    def constructTreeFromRulesFile(self, rulesFileP):
        '''
        #-----------------------------------------------------------
        # rdrpostaggerv1.1: New implementation scheme: using FWObject
        # Build tree from file containing rules
        #-----------------------------------------------------------
        '''
        
        self.root = Node(FWObject(False), "NN", None, None, None, [], 0)
        
        currentNode = self.root
        currentDepth = 0
        
        rulesFile = open(rulesFileP, "r")
        lines = rulesFile.readlines()
        
        for i in (range(1, len(lines))):
            line = lines[i]
            depth = 0           
            for c in line:
                if c == '\t':
                    depth = depth + 1
                else:
                    break

            line = line.strip()
            if len(line) == 0:
                continue
                
            temp = line.find("cc")
            if temp == 0:   
                continue
            
            condition = getCondition(line.split(" : ", 1)[0].strip())
            conclusion = getConclusion(line.split(" : ", 1)[1].strip())
            node = Node(condition, conclusion, None, None, None, [], depth)
            #print line
            #print condition.toStr(), conclusion
            if depth > currentDepth:
                currentNode.exceptChild = node
            elif depth == currentDepth:
                currentNode.elseChild = node
            else:
                while currentNode.depth != depth:
                    currentNode = currentNode.father;
                currentNode.elseChild = node
            
            node.father = currentNode;
            
            currentNode = node;
            currentDepth = depth;