コード例 #1
0
ファイル: test_human_validation.py プロジェクト: 52nlp/iepy
class TextSegmentFormatting(ManagerTestCase):

    def setUp(self):
        self.c1 = colorama.Fore.GREEN
        self.c2 = colorama.Fore.RED
        self.reset = colorama.Style.RESET_ALL
        self.term = TerminalInterviewer([], lambda x: x)
        self.formatter = TerminalEvidenceFormatter()

    def test_colorized_simple(self):
        ev = EvidenceFactory(markup="{Peter|Person*} likes {Sarah|Person**} .")
        fmtted = self.formatter.colored_text(ev, self.c1, self.c2)
        self.assertEqual(
            fmtted,
            u' '.join([self.c1, u'Peter', self.reset, u'likes',
                       self.c2, u'Sarah', self.reset, u'.']))

    def test_colorized_larger(self):
        ev = EvidenceFactory(markup="{Peter|Person*} likes {Sarah Jessica Parker|Person**} .")
        fmtted = self.formatter.colored_text(ev, self.c1, self.c2)
        self.assertEqual(
            fmtted,
            u' '.join([self.c1, u'Peter', self.reset, u'likes',
                       self.c2, u'Sarah', u'Jessica', u'Parker', self.reset, u'.']))

    def test_colorize_when_several_more_occurrences(self):
        ev = EvidenceFactory(markup="{Tom|Person*} hates not {Sarah|Person} but {Peter Parker|Person**} .")
        fmtted = self.formatter.colored_text(ev, self.c1, self.c2)
        self.assertEqual(
            fmtted,
            u' '.join([self.c1, u'Tom', self.reset, u'hates not Sarah but',
                       self.c2, u'Peter Parker', self.reset, u'.']))
コード例 #2
0
def run_tests(rule_regexes, evidences, answers):
    predictions = []
    real_labels = []
    evidences_with_labels = []

    colorama_init()
    formatter = TerminalEvidenceFormatter()

    for name, regex, answer in rule_regexes:
        title = "Matches for rule '{}' (value: {})".format(name, answer)
        print("\n{}\n{}".format(title, "-" * len(title)))

        anything_matched = False
        for evidence in evidences:
            tokens_to_match = generate_tokens_to_match(evidence)
            match = refo.match(regex, tokens_to_match)

            if match:
                anything_matched = True
                print("  * {}".format(formatter.colored_text(evidence)))

            if evidence in answers and answers[evidence] is not None:
                evidences_with_labels.append(evidence)
                real_labels.append(answers[evidence])

                if match:
                    predictions.append(answer)
                else:
                    predictions.append(False)

        if not anything_matched:
            print("  nothing matched")

        print()

    if real_labels:
        results = result_dict_from_predictions(evidences_with_labels,
                                               real_labels, predictions)
        results.pop("end_time")
        keys = [
            "true_positives",
            "true_negatives",
            "false_positives",
            "false_negatives",
            "precision",
            "recall",
            "accuracy",
            "f1",
        ]

        title = "Metrics"
        print("{}\n{}".format(title, "-" * len(title)))
        for key in keys:
            print("{:>15}: {:.2f}".format(key, results[key]))
コード例 #3
0
class TextSegmentFormatting(ManagerTestCase):
    def setUp(self):
        self.c1 = colorama.Fore.GREEN
        self.c2 = colorama.Fore.RED
        self.reset = colorama.Style.RESET_ALL
        self.term = TerminalInterviewer([], lambda x: x)
        self.formatter = TerminalEvidenceFormatter()

    def test_colorized_simple(self):
        ev = EvidenceFactory(markup="{Peter|Person*} likes {Sarah|Person**} .")
        fmtted = self.formatter.colored_text(ev, self.c1, self.c2)
        self.assertEqual(
            fmtted, u' '.join([
                self.c1, u'Peter', self.reset, u'likes', self.c2, u'Sarah',
                self.reset, u'.'
            ]))

    def test_colorized_larger(self):
        ev = EvidenceFactory(
            markup="{Peter|Person*} likes {Sarah Jessica Parker|Person**} .")
        fmtted = self.formatter.colored_text(ev, self.c1, self.c2)
        self.assertEqual(
            fmtted, u' '.join([
                self.c1, u'Peter', self.reset, u'likes', self.c2, u'Sarah',
                u'Jessica', u'Parker', self.reset, u'.'
            ]))

    def test_colorize_when_several_more_occurrences(self):
        ev = EvidenceFactory(
            markup=
            "{Tom|Person*} hates not {Sarah|Person} but {Peter Parker|Person**} ."
        )
        fmtted = self.formatter.colored_text(ev, self.c1, self.c2)
        self.assertEqual(
            fmtted, u' '.join([
                self.c1, u'Tom', self.reset, u'hates not Sarah but', self.c2,
                u'Peter Parker', self.reset, u'.'
            ]))
コード例 #4
0
 def setUp(self):
     self.c1 = colorama.Fore.GREEN
     self.c2 = colorama.Fore.RED
     self.reset = colorama.Style.RESET_ALL
     self.term = TerminalInterviewer([], lambda x: x)
     self.formatter = TerminalEvidenceFormatter()
コード例 #5
0
ファイル: test_human_validation.py プロジェクト: 52nlp/iepy
 def setUp(self):
     self.c1 = colorama.Fore.GREEN
     self.c2 = colorama.Fore.RED
     self.reset = colorama.Style.RESET_ALL
     self.term = TerminalInterviewer([], lambda x: x)
     self.formatter = TerminalEvidenceFormatter()