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))
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
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))
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
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))