예제 #1
0
    def value_for_text(self, t, rp=default_rp):
        engine = rp.idd3_engine()
        graphs = rp.dep_trees(t)
        raw_words = rp.raw_words(t)

        total_nprops = 0
        for index in range(len(graphs)):
            relations = []
            for relation in graphs[index].nodes.values():
                relations.append(idd3.Relation(**relation))

            # print('Propositions:')
            try:
                engine.analyze(relations)
                # for i, prop in enumerate(engine.props):
                #     print(str(i + 1) + ' ' + str(prop))

                n_props = len(engine.props)
            except Exception as e:
                n_props = 0

            # print(len(sents[index]), n_props / len(sents[index]) )
            total_nprops += n_props

        return total_nprops / len(raw_words) if raw_words else 0
예제 #2
0
    def value_for_text(self, t, rp=default_rp):
        engine = rp.idd3_engine()
        graphs = rp.dep_trees(t)
        sents = rp.tagged_words_in_sents(t)

        id_values = []
        for index in range(len(graphs)):
            relations = []
            for relation in graphs[index].nodes.values():
                relations.append(idd3.Relation(**relation))

            # print('Propositions:')
            try:
                engine.analyze(relations)
                # for i, prop in enumerate(engine.props):
                #     print(str(i + 1) + ' ' + str(prop))
            except Exception as e:
                LOGGER.error('{0} in engine.analyze: {1}'.format(
                    e.__class__.__name__, e))

            n_props = len(engine.props) if hasattr(engine, 'props') else 0

            # print(len(sents[index]), n_props / len(sents[index]) )
            id_values.append(n_props /
                             len(sents[index]) if sents[index] else 0)

        return sum(id_values) / len(id_values) if id_values else 0
예제 #3
0
파일: test.py 프로젝트: gilzoide/idd3
def test():
    with open('expected.txt', mode='r') as expected_file:
        expected = expected_file.readlines()

    up_to_index = len(expected)

    graphs = nltk.parse.dependencygraph.DependencyGraph.load('corpus.conll')

    engine = idd3.Engine(idd3.rules.all_rulesets,
                         idd3.transform.all_transformations)

    for i in range(up_to_index):
        relations = []
        for relation in graphs[i].nodelist:
            relations.append(idd3.Relation(**relation))

        engine.analyze(relations)
        props = [prop.content for prop in engine.props]

        exp = eval(expected[i])

        # Propositions should be equal to their expected values.
        assert props == exp

        unprocessed_relations = engine.get_unprocessed_relations(relations)

        # No relation should be left unprocessed.
        assert unprocessed_relations == []

        kinds = [prop.kind for prop in engine.props]

        # Relations must have a specific kind.
        assert 'PROP' not in kinds