def test_nqueries(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        jan, moest, piet, slaan, volgens, kees, omte, marie, helpen = [
            amcattest.create_test_token(sentence=s, position=i) for i in range(1,10)]
        with self.checkMaxQueries(1):
            s._get_tokens(get_words=True)

        for child, parent, rel in [(jan, moest, "su"),
                                   (jan, slaan, "su"),
                                   (moest, slaan, "vc"),
                                   (piet, slaan, "obj1"),
                                   (volgens, slaan, "mod"),
                                   (kees, volgens, "obj1"),
                                   (omte, slaan, "om"),
                                   (helpen, omte, "body"),
                                   (marie, helpen, "obj1"),
                                   ]: 
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)

            roles = ((jan.position, "su", slaan.position),
                     (piet.position, "obj", slaan.position),
                     (kees.position, "quote", moest.position))

        from amcat.tools.djangotoolkit import list_queries
            
        with self.checkMaxQueries(3):
            statements = set(get_statements(s, roles))
            
        with self.checkMaxQueries(0):
            s = str(statements)
Example #2
0
    def test_nqueries(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        jan, moest, piet, slaan, volgens, kees, omte, marie, helpen = [
            amcattest.create_test_token(sentence=s, position=i) for i in range(1,10)]
        with self.checkMaxQueries(1):
            s._get_tokens(get_words=True)

        for child, parent, rel in [(jan, moest, "su"),
                                   (jan, slaan, "su"),
                                   (moest, slaan, "vc"),
                                   (piet, slaan, "obj1"),
                                   (volgens, slaan, "mod"),
                                   (kees, volgens, "obj1"),
                                   (omte, slaan, "om"),
                                   (helpen, omte, "body"),
                                   (marie, helpen, "obj1"),
                                   ]: 
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)

            roles = ((jan.position, "su", slaan.position),
                     (piet.position, "obj", slaan.position),
                     (kees.position, "quote", moest.position))

        from amcat.tools.djangotoolkit import list_queries
            
        with self.checkMaxQueries(1):
            statements = set(get_statements(s, roles))
            
        with self.checkMaxQueries(0):
            s = str(statements)
Example #3
0
    def test_fill_out_and_predicate(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        de, liberale, premier, moest, piet, een, klap, geven = [
            amcattest.create_test_token(sentence=s, position=i)
            for i in range(1, 9)
        ]
        for child, parent, rel in [(premier, geven, "su"),
                                   (premier, moest, "su"),
                                   (geven, moest, "vc"), (de, premier, "det"),
                                   (liberale, premier, "mod"),
                                   (piet, geven, "obj2"),
                                   (klap, geven, "obj1"), (een, klap, "det")]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)
        roles = ((premier.position, "su", geven.position),
                 (piet.position, "obj", geven.position))

        self.assertEqual(fill_out(s, [premier], roles),
                         {de, liberale, premier})
        predicate = fill_out(s, [moest, geven], roles)
        self.assertEqual(predicate, {moest, een, klap, geven})

        predicate_paths = list(get_predicate_structure(s, predicate))
        self.assertEqual(predicate_paths, [[een, klap, geven, moest]])
Example #4
0
    def test_get_tokens_order(self):
        s = amcattest.create_test_analysis_sentence()
        t1, t2, t3 = [
            amcattest.create_test_token(sentence=s, position=i)
            for i in [2, 1, 3]
        ]

        self.assertEqual(list(s.tokens.all()), [t2, t1, t3])
Example #5
0
 def _get_test_tokens(self, aa, words):
     s = amcattest.create_test_analysis_sentence(analysed_article=aa)
     if not words: words = "abcde"
     return [
         amcattest.create_test_token(
             sentence=s,
             position=i,
             word=amcattest.create_test_word(word=w))
         for (i, w) in enumerate(words)
     ]
Example #6
0
    def todo_test_statements(self):
        # jan moest piet slaan, volgens kees, om marie te helpen
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        jan, moest, piet, slaan, volgens, kees, omte, marie, helpen = [
            amcattest.create_test_token(sentence=s, position=i)
            for i in range(1, 10)
        ]
        for child, parent, rel in [
            (jan, moest, "su"),
            (jan, slaan, "su"),
            (moest, slaan, "vc"),
            (piet, slaan, "obj1"),
            (volgens, slaan, "mod"),
            (kees, volgens, "obj1"),
            (omte, slaan, "om"),
            (helpen, omte, "body"),
            (marie, helpen, "obj1"),
        ]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)

        roles = ((jan.position, "su", slaan.position), (piet.position, "obj",
                                                        slaan.position),
                 (kees.position, "quote", moest.position))

        direct = {Statement(s, {jan}, {moest, slaan}, {piet}, source={kees})}

        statements = set(get_statements(s, roles))
        self.assertEqual(statements, direct)

        # om marie te helpen
        roles += ((marie.position, "obj", helpen.position), )

        statements = set(get_statements(s, roles))
        self.assertEqual(statements, direct)

        roles += ((moest.position, "om", helpen.position), )

        om = {
            Statement(s, {jan}, {helpen}, {marie},
                      type={"Affective"},
                      source={kees}),
            Statement(s, {piet}, {helpen}, {marie},
                      source={jan, kees},
                      condition={moest, slaan},
                      type={"Causal"}),
        }

        statements = set(get_statements(s, roles))
        self.assertEqual(statements, direct | om)
Example #7
0
    def test_predicates(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        #jan moest piet slaan
        jan, wilde, piet, slaan = [amcattest.create_test_token(sentence=s, position=i) for i in range(1,5)]
        for child, parent, rel in [(jan, moest, "su"),
                                   (jan, slaan, "su"),
                                   (moest, slaan, "vc"),
                                   (piet, slaan, "obj1")]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)

        preds = get_predicates(s)
        self.assertEqual(preds, {moest : {moest, slaan},
                                 slaan : {moest, slaan}})
    def todo_test_predicates(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        #jan moest piet slaan
        jan, moest, piet, slaan = [amcattest.create_test_token(sentence=s, position=i) for i in range(1,5)]
        for child, parent, rel in [(jan, moest, "su"),
                                   (jan, slaan, "su"),
                                   (moest, slaan, "vc"),
                                   (piet, slaan, "obj1")]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)

        preds = get_predicates(s)
        self.assertEqual(preds, {moest : {moest, slaan},
                                 slaan : {moest, slaan}})
    def todo_test_statements(self):
        # jan moest piet slaan, volgens kees, om marie te helpen
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        jan, moest, piet, slaan, volgens, kees, omte, marie, helpen = [
            amcattest.create_test_token(sentence=s, position=i) for i in range(1,10)]
        for child, parent, rel in [(jan, moest, "su"),
                                   (jan, slaan, "su"),
                                   (moest, slaan, "vc"),
                                   (piet, slaan, "obj1"),
                                   (volgens, slaan, "mod"),
                                   (kees, volgens, "obj1"),
                                   (omte, slaan, "om"),
                                   (helpen, omte, "body"),
                                   (marie, helpen, "obj1"),
                                   ]: 
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)

        roles = ((jan.position, "su", slaan.position),
                 (piet.position, "obj", slaan.position),
                 (kees.position, "quote", moest.position))

        direct = {Statement(s, {jan}, {moest, slaan}, {piet}, source={kees})}
        
        statements = set(get_statements(s, roles))
        self.assertEqual(statements, direct)

        
        # om marie te helpen
        roles += ((marie.position, "obj", helpen.position), )
        
        statements = set(get_statements(s, roles))
        self.assertEqual(statements, direct)

        roles += ((moest.position, "om", helpen.position), )


        om = {Statement(s, {jan}, {helpen}, {marie}, type={"Affective"}, source={kees}),
              Statement(s, {piet}, {helpen}, {marie}, source={jan, kees},
                        condition={moest, slaan}, type={"Causal"}),
              }
        

        
        statements = set(get_statements(s, roles))
        self.assertEqual(statements, direct | om)
Example #10
0
    def test_reality(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        # VVD stijgt (dwz in de peilingen)
        vvd, stijgt = [
            amcattest.create_test_token(sentence=s, position=i) for i in range(1,3)]

        for child, parent, rel in [(vvd, stijgt, "su")]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)
            

        roles = ((None, "su", stijgt.position),
                 (vvd.position, "obj", stijgt.position))

        
        rea = {Statement({None}, {stijgt}, {vvd}, type={"Reality"})}
        
        statements = set(get_statements(s, roles))
        self.assertEqual(statements, rea)
    def test_reality(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        # VVD stijgt (dwz in de peilingen)
        vvd, stijgt = [
            amcattest.create_test_token(sentence=s, position=i) for i in range(1,3)]

        for child, parent, rel in [(vvd, stijgt, "su")]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)
            

        roles = ((None, "su", stijgt.position),
                 (vvd.position, "obj", stijgt.position))

        
        rea = {Statement(s, {None}, {stijgt}, {vvd}, type={"Reality"})}
        
        statements = set(get_statements(s, roles))
        self.assertEqual(statements, rea)
    def test_fill_out_and_predicate(self):
        from amcat.models import Triple, Relation
        s = amcattest.create_test_analysis_sentence()
        de, liberale,premier, moest, piet, een, klap, geven = [
            amcattest.create_test_token(sentence=s, position=i) for i in range(1,9)]
        for child, parent, rel in [(premier, geven, "su"),
                                   (premier, moest, "su"),
                                   (geven, moest, "vc"),
                                   (de, premier, "det"),
                                   (liberale, premier, "mod"),
                                   (piet, geven, "obj2"),
                                   (klap, geven, "obj1"),
                                   (een, klap, "det")]:
            rel = Relation.objects.create(label=rel)
            Triple.objects.create(parent=parent, child=child, relation=rel)
        roles =  ((premier.position, "su", geven.position),
                  (piet.position, "obj", geven.position))

        self.assertEqual(fill_out(s, [premier], roles), {de, liberale, premier})
        predicate = fill_out(s, [moest, geven], roles)
        self.assertEqual(predicate, {moest, een, klap, geven})

        predicate_paths = list(get_predicate_structure(s, predicate))
        self.assertEqual(predicate_paths, [[een, klap, geven, moest]])
Example #13
0
 def _get_test_tokens(self, aa, words):
     s = amcattest.create_test_analysis_sentence(analysed_article=aa)
     if not words: words = "abcde"
     return [amcattest.create_test_token(sentence=s, position=i, word=amcattest.create_test_word(word=w))
             for (i,w) in enumerate(words)]
Example #14
0
    def test_get_tokens_order(self):
        s = amcattest.create_test_analysis_sentence()
        t1,t2,t3 = [amcattest.create_test_token(sentence=s, position=i) for i in [2,1,3]]

        self.assertEqual(list(s.tokens.all()), [t2,t1,t3])