示例#1
0
文件: store.py 项目: szroland/nlu
    def integrate(self, concept: Concept) -> Concept:
        integrated = self.get_concept(concept)
        if integrated is None:
            ip = []  # type: list[Concept]
            for p in concept.parents:
                ip.append(self.integrate(p))

            integrated = Concept(concept.name, concept.relation, ip,
                                 concept.probability)
            integrated.store = self
            integrated.register_with_parents()
            self.add_concept(integrated)

            if integrated.relation == Relation.Word:
                word = integrated.name
                if word not in self._words:
                    w = Word(word)
                    w.add_meaning(integrated)
                    self._words[word] = w
            elif integrated.relation == Relation.Implication:
                integrated.propagate_probability_from_parent(
                    integrated.parents[0])

        else:
            integrated.merge_probability(concept.probability)

        return integrated