def test_p_negative_lte_zero(self): to_test = assign_random_negatives(self.paragraph, p_negative=0.0) self.assertEqual(to_test.sentence_list(), self.sentence_list) self.assertEqual(to_test.tags, self.tags.add(StatusTag.HAS_NEGATIVES)) to_test = assign_random_negatives(self.paragraph, p_negative=-0.1) self.assertEqual(to_test.sentence_list(), self.sentence_list)
def test_p_negative_gte_one(self): expected_list = [ Sentence([BasicWord('a'), Verb('b').negative(), BasicWord('c')]), Sentence([BasicWord('d'), Verb('e').negative()]) ] to_test = assign_random_negatives(self.paragraph, p_negative=1.0) self.assertEqual(to_test.sentence_list(), expected_list) self.assertEqual(to_test.tags, self.tags.add(StatusTag.HAS_NEGATIVES)) to_test = assign_random_negatives(self.paragraph, p_negative=1.1) self.assertEqual(to_test.sentence_list(), expected_list) self.assertEqual(to_test.tags, self.tags.add(StatusTag.HAS_NEGATIVES))
def generate_paragraphs(self) -> Tuple[Paragraph, Paragraph]: """ :return: answer, error """ paragraph_size = self.get('paragraph_size') probability_pronoun = self.get('probability_pronoun') generator = RandomParagraph(probability_pronoun, self.get_verbs(), self.get_nouns()) if self.get('paragraph_type') == 'chain': raw = generator.create_chain_paragraph(paragraph_size) else: raw = generator.create_pool_paragraph(self.get('pool_size'), paragraph_size) probability_plural_noun = self.get('probability_plural_noun') with_plurals = PluralsAssignment(raw).assign_random_plurals(probability_plural_noun) probability_negative_verb = self.get('probability_negative_verb') with_negatives = assign_random_negatives(with_plurals, probability_negative_verb) grammarizer = Grammarizer(with_negatives) if self.get('tense') == 'simple_present': answer = grammarizer.grammarize_to_present_tense() else: answer = grammarizer.grammarize_to_past_tense() error_maker = self._create_errors(answer) return answer, error_maker.get_paragraph()
def test_p_negative_middle_value(self): random.seed(489) past_verbs = [[Verb('e')], [Verb('b')], [], [Verb('b')], [Verb('b'), Verb('e')]] for index in range(5): to_test = assign_random_negatives(self.paragraph, 0.5) expected = self.paragraph for verb in past_verbs[index]: indices = self.paragraph.find(verb)[0] expected = expected.set(*indices, verb.negative()) self.assertEqual(to_test.sentence_list(), expected.sentence_list())
def test_create_answer_paragraph_fully_formed_paragraph_singular_now_assigned_plural(self): base_sentences = [Sentence([Noun('dog'), Verb('like'), Noun('cat'), Punctuation.PERIOD])] paragraph = Paragraph(base_sentences) with_negatives = assign_random_negatives(paragraph, 1.0) without_plurals = PluralsAssignment(with_negatives).assign_random_plurals(0.0) grammatical = Grammarizer(without_plurals).grammarize_to_present_tense() self.assertEqual(str(grammatical), "A dog doesn't like a cat.") paragraph_str = "dogs cats" answer = create_answer_paragraph(paragraph_str, grammatical) with_plurals = PluralsAssignment(with_negatives).assign_plural([Noun('dog'), Noun('cat')]) expected = Grammarizer(with_plurals).grammarize_to_present_tense() self.assertEqual(answer, expected) self.assertEqual(str(answer), "Dogs don't like cats.")