コード例 #1
0
    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)
コード例 #2
0
    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))
コード例 #3
0
    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()
コード例 #4
0
 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())
コード例 #5
0
    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.")