コード例 #1
0
    def caption(self, predication, world):
        assert predication.empty()

        predication1 = predication.sub_predication()
        clause1 = self.captioner1.caption(predication=predication1, world=world)
        if clause1 is None:
            return None

        predication2 = predication.sub_predication()
        clause2 = self.captioner2.caption(predication=predication2, world=world)
        if clause2 is None:
            return None

        return Proposition(proptype='conjunction', clauses=(clause1, clause2))
コード例 #2
0
    def caption(self, predication, world):
        assert predication.empty()

        predication1 = predication.copy()
        predication2 = predication1.sub_predication()

        if self.correct_mode == 0:  # 0: first correct
            clause2 = self.captioner2.caption(predication=predication2.copy(),
                                              world=world)
            if clause2 is None:
                return None
            if not self.captioner2.incorrect(
                    caption=clause2, predication=predication2, world=world):
                return None
            if clause2.agreement(predication=predication2, world=world) >= 0.0:
                return None

        else:
            clause2 = self.captioner2.caption(predication=predication2,
                                              world=world)
            if clause2 is None:
                return None

        if self.correct_mode == 1:  # 1: second correct
            clause1 = self.captioner1.caption(predication=predication1.copy(),
                                              world=world)
            if clause1 is None:
                return None
            if not self.captioner1.incorrect(
                    caption=clause1, predication=predication1, world=world):
                return None
            predication1.sub_predications.append(
                predication1.sub_predications.pop(0))
            if clause1.agreement(predication=predication1, world=world) >= 0.0:
                return None

        else:
            clause1 = self.captioner1.caption(predication=predication1,
                                              world=world)
            if clause1 is None:
                return None

        proposition = Proposition(proptype='disjunction',
                                  clauses=(clause1, clause2))

        if not self.correct(caption=proposition, predication=predication):
            return None

        return proposition
コード例 #3
0
    def caption(self, predication, world):
        assert predication.empty()

        predication1 = predication.sub_predication()

        if self.correct_mode == 1:  # 1: second correct
            predication_copy = predication1.copy()
            clause1 = self.captioner1.caption(predication=predication_copy,
                                              world=world)
            if clause1 is None:
                return None
            if not self.captioner1.incorrect(
                    caption=clause1, predication=predication1, world=world):
                return None
            predication_test = predication1.copy(include_sub_predications=True)
            if clause1.agreement(predication=predication_test,
                                 world=world) >= 0.0:
                return None

        else:
            clause1 = self.captioner1.caption(predication=predication1,
                                              world=world)
            if clause1 is None:
                return None

        predication2 = predication.sub_predication()

        if self.correct_mode == 0:  # 0: first correct
            predication_copy = predication2.copy()
            clause2 = self.captioner2.caption(predication=predication_copy,
                                              world=world)
            if clause2 is None:
                return None
            if not self.captioner2.incorrect(
                    caption=clause2, predication=predication2, world=world):
                return None
            predication_test = predication2.copy(include_sub_predications=True)
            if clause2.agreement(predication=predication_test,
                                 world=world) >= 0.0:
                return None

        else:
            clause2 = self.captioner2.caption(predication=predication2,
                                              world=world)
            if clause2 is None:
                return None

        return Proposition(proptype='disjunction', clauses=(clause1, clause2))
コード例 #4
0
    def caption(self, predication, world):
        assert predication.empty()

        predication1 = predication.copy()
        predication2 = predication1.sub_predication()

        if self.both_correct:
            clause2 = self.captioner2.caption(predication=predication2,
                                              world=world)
            if clause2 is None:
                return None

            clause1 = self.captioner1.caption(predication=predication1,
                                              world=world)
            if clause1 is None:
                return None

        else:
            clause2 = self.captioner2.caption(predication=predication2.copy(),
                                              world=world)
            if clause2 is None:
                return None
            if not self.captioner2.incorrect(
                    caption=clause2, predication=predication2, world=world):
                return None
            if clause2.agreement(predication=predication2, world=world) >= 0.0:
                return None

            clause1 = self.captioner1.caption(predication=predication1.copy(),
                                              world=world)
            if clause1 is None:
                return None
            if not self.captioner1.incorrect(
                    caption=clause1, predication=predication1, world=world):
                return None
            predication1.sub_predications.append(
                predication1.sub_predications.pop(0))
            if clause1.agreement(predication=predication1, world=world) >= 0.0:
                return None

        proposition = Proposition(proptype='equivalence',
                                  clauses=(clause1, clause2))

        if not self.correct(caption=proposition, predication=predication):
            return None

        return proposition
コード例 #5
0
    def caption(self, predication, world):
        assert predication.empty()

        predication1 = predication.sub_predication()

        if self.correct_mode == 2:  # 2: second correct
            predication_copy = predication1.copy()
            clause1 = self.captioner1.caption(predication=predication_copy,
                                              world=world)
            if clause1 is None:
                return None
            if not self.captioner1.incorrect(
                    caption=clause1, predication=predication1, world=world):
                return None

        else:
            clause1 = self.captioner1.caption(predication=predication1,
                                              world=world)
            if clause1 is None:
                return None

        predication2 = predication.sub_predication()

        if self.correct_mode == 1:  # 1: first correct
            predication_copy = predication2.copy()
            clause2 = self.captioner2.caption(predication=predication_copy,
                                              world=world)
            if clause2 is None:
                return None
            if not self.captioner2.incorrect(
                    caption=clause2, predication=predication2, world=world):
                return None

        else:
            clause2 = self.captioner2.caption(predication=predication2,
                                              world=world)
            if clause2 is None:
                return None

        return Proposition(proptype='disjunction', clauses=(clause1, clause2))