def make_domain_contradiction(): """ Creates two Nile intents that contradict each other due to domains """ sentence_entities = {"id": "stn", "actions": []} hypothesis_entities = {"id": "hyp", "actions": []} sentence_entities, hypothesis_entities = sample_contradicting_endpoints( sentence_entities, hypothesis_entities, mixed=True) option = randint(0, 7) if option == 0: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) elif option == 1: sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) elif option == 2: sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') if option == 3: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) elif option == 4: sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') elif option == 5: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') else: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') contradiction = { 'type': 'domain', 'sentence': interpreter.translate(sentence_entities), 'hypothesis': interpreter.translate(hypothesis_entities), 'contradiction': 1 } return contradiction
def make_qos_contradiction(): """ Creates two Nile intents that contradict each other due to qos constraints """ sentence_entities = {"id": "stn", "actions": []} hypothesis_entities = {"id": "hyp", "actions": []} sentence_entities, hypothesis_entities = sample_contradicting_endpoints( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities) contradiction = { 'type': 'qos', 'sentence': interpreter.translate(sentence_entities), 'hypothesis': interpreter.translate(hypothesis_entities), 'contradiction': 1 } return contradiction
def make_time_contradiction(): """ Creates two Nile intents that contradict each other due to time constraints""" sentence_entities = {"id": "stn", "actions": []} hypothesis_entities = {"id": "hyp", "actions": []} sentence_entities, hypothesis_entities = sample_contradicting_endpoints( sentence_entities, hypothesis_entities) # middleboxes if randint(1, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_chaining( sentence_entities, hypothesis_entities) else: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) # allow/block if randint(1, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_rules( sentence_entities, hypothesis_entities) else: sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) # qos if randint(1, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_qos( sentence_entities, hypothesis_entities) else: sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities) # start/end sentence_entities, hypothesis_entities = sample_contradicting_timeranges( sentence_entities, hypothesis_entities) contradiction = { 'type': 'time', 'sentence': interpreter.translate(sentence_entities), 'hypothesis': interpreter.translate(hypothesis_entities), 'contradiction': 1 } return contradiction
def make_path_entailment(): """ Creates two Nile intents that entail each other due to non coference""" sentence_entities = {"id": "stn", "actions": []} hypothesis_entities = {"id": "hyp", "actions": []} sentence_entities, hypothesis_entities = sample_entailing_endpoints( sentence_entities, hypothesis_entities) if randint(0, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_chaining( sentence_entities, hypothesis_entities) else: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) if randint(0, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_rules( sentence_entities, hypothesis_entities) else: sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) if randint(0, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_qos( sentence_entities, hypothesis_entities) else: sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities) if randint(0, 10) % 2 == 0: sentence_entities, hypothesis_entities = sample_entailing_timeranges( sentence_entities, hypothesis_entities) entailment = { 'type': 'path', 'sentence': interpreter.translate(sentence_entities), 'hypothesis': interpreter.translate(hypothesis_entities), 'contradiction': 0 } return entailment
def make_path_contradiction(): """ Creates two Nile intents that contradict each other due to path overlap""" sentence_entities = {"id": "stn", "actions": []} hypothesis_entities = {"id": "hyp", "actions": []} sentence_entities, hypothesis_entities = sample_contradicting_endpoints( sentence_entities, hypothesis_entities) option = randint(0, 7) # if randint(0, 10) % 2 == 0: # _, hypothesis_entities = sample_contradicting_chaining(sentence_entities, hypothesis_entities) # else: # sentence_entities, _ = sample_contradicting_chaining(sentence_entities, hypothesis_entities) # # if randint(0, 10) % 2 == 0: # sentence_entities, _ = sample_contradicting_rules(sentence_entities, hypothesis_entities) # else: # _, hypothesis_entities = sample_contradicting_chaining(sentence_entities, hypothesis_entities) # # if randint(0, 10) % 2 == 0: # sentence_entities, hypothesis_entities = sample_entailing_qos(sentence_entities, hypothesis_entities) # else: # sentence_entities, hypothesis_entities = sample_contradicting_qos(sentence_entities, hypothesis_entities) # # if randint(0, 10) % 2 == 0: # sentence_entities, hypothesis_entities = sample_entailing_timeranges(sentence_entities, hypothesis_entities) if option == 0: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) elif option == 1: sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) elif option == 2: sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') if option == 3: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) elif option == 4: sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') elif option == 5: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') else: sentence_entities, hypothesis_entities = sample_contradicting_chaining( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_rules( sentence_entities, hypothesis_entities) sentence_entities, hypothesis_entities = sample_contradicting_qos( sentence_entities, hypothesis_entities, stn_action='set', hyp_action='unset') entailment = { 'type': 'path', 'sentence': interpreter.translate(sentence_entities), 'hypothesis': interpreter.translate(hypothesis_entities), 'contradiction': 0 } return entailment