예제 #1
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def promote_test(self):
        """
        Ensure that the "promote=" keyword works as expected.

        """
        t = self.t.copy()
        t[0].delete(promote=True)

        tgt = IdTree.fromstring('''(ROOT (DT The) (NP (NN Boy)))''')
        self.assertTrue(t.similar(tgt))

        t2 = self.t.copy()
        t2[0].delete(promote=False)

        tgt = IdTree.fromstring('''(ROOT)''')
        self.assertTrue(t2.similar(tgt))

        t3 = self.t.copy()
        t3[0][1].delete(promote=True)
        tgt=IdTree.fromstring('''(ROOT (NP (DT The) (NN Boy)))''')

        self.assertTrue(t3.similar(tgt))

        t4 = self.t.copy()
        t4[0][1].delete(promote=False)
        tgt=IdTree.fromstring('''(ROOT (NP (DT The)))''')
        self.assertTrue(t4.similar(tgt))
예제 #2
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def ordering_test(self):
        """
        This particular tree structure results in changing a child of a tree while iterating through
        the children and required a fix such that if such a change is detected, we start iterating
        over the children again, so we're not holding onto a stale pointer.

        """
        src_t = IdTree.fromstring('''(ROOT (FRAG
                                            (ADVP (RB Probably))
                                            (SBAR (S
                                                    (NP (PRP you))
                                                    (VP (VBP find)
                                                        (ADJP (JJ something))
                                                    )
                                                  )
                                            )
                                           ))''')

        tgt_t = IdTree.fromstring('''(ROOT (FRAG
                                                (VBP chitt-u-m)
                                                (ADVP (RB hola))
                                                (UNK ni)
                                                (UNK hou)
                                                (VBP chitt-u-m)
                                            ))''')
        tgt_w = create_words_tier_from_string('''chitt-u-m hola ni hou chitt-u-m''')
        aln = Alignment([(1,2),(3,1),(3,5)])

        proj = project_ps(src_t, tgt_w, aln)

        self.assertTrue(tgt_t.similar(proj))
예제 #3
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def test_duplicates(self):
        """
        Test the case where an English word aligns to multiple language words.

        """
        src_t = IdTree.fromstring('(ROOT (SBARQ (WHNP (WP Who)) (SQ (VP (VBZ else?)))))')
        tgt_w = create_words_tier_from_string('sa-lo sa-lo')
        tgt_t = IdTree.fromstring('(ROOT (SBARQ (WHNP (WP sa-lo) (WP sa-lo))))')
        aln = Alignment([(1,1),(1,2)])

        result = project_ps(src_t, tgt_w, aln)

        self.assertTrue(tgt_t.similar(result))
예제 #4
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def ctn_merge_2_test(self):
        src_t = IdTree.fromstring('''(ROOT
                                      (UCP
                                        (S
                                          (NP (PRP They))
                                          (VP
                                            (VBP are)
                                            (RB also)
                                            (ADJP
                                              (RB too)
                                              (JJ lazy)
                                              (S
                                                (VP
                                                  (TO to)
                                                  (VP (VB take) (NP (PRP it)) (ADVP (RB out,))))))))
                                        (CC and)
                                        (SBAR
                                          (IN so)
                                          (S
                                            (NP (PRP they))
                                            (VP (VBP do) (RB not) (VP (VB drink) (NP (NN it.))))))))''')
        tgt_w = create_words_tier_from_string('loĩs-ma yaŋ hunci-suma kat-a-ŋs-e kina u-tus-u-kV-nɨŋ')
        aln = Alignment([(16, 6), (3, 2), (7, 1), (15, 3), (9, 3), (11, 3), (12, 6), (14, 6), (13, 6), (4, 3), (5, 3)])

        proj = project_ps(src_t, tgt_w, aln)
        self.assertEqual(len(proj.leaves()), 6)
예제 #5
0
파일: treetests.py 프로젝트: rgeorgi/intent
 def setUp(self):
     self.t = IdTree.fromstring('''(ROOT
                                       (SBARQ
                                         (WHNP (WP Who))
                                         (SQ (VBP do)
                                             (NP (PRP you))
                                         (VP (VB believe)
                                             (VP (VBN called))))))''')
예제 #6
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def failed_insertion_test(self):
        t = IdTree.fromstring('''(ROOT
  (SBARQ
    (WHNP (WDT What) (NP (NN kind) (PP (IN of) (NP (NNP work,)))))
    (SQ (VP (VBZ then?)))))''')
        tgt_w = create_words_tier_from_string('kam-a na them lis-no-kha hou')
        aln = Alignment([(1, 3), (2, 5), (4, 1), (5, 5)])

        project_ps(t, tgt_w, aln)
예제 #7
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def replace_test(self):
        tgt = IdTree.fromstring('''(ROOT (NP (DT The) (NN Dog)))''')

        self.assertFalse(self.t.similar(tgt))

        # Replace the "NP" in (NP (NN Boy)) with (NN Dog)
        self.t[0,1].replace(IdTree('NN',[Terminal('Dog', index=2)]))

        self.assertTrue(self.t.similar(tgt))
예제 #8
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def propagate_test(self):
        tgt = IdTree.fromstring('''(ROOT (NP (DT The)))''')

        self.assertFalse(self.t.similar(tgt))

        # Delete the "NN" in boy.
        self.t[0,1,0].delete()

        self.assertTrue(self.t.similar(tgt))
예제 #9
0
파일: treetests.py 프로젝트: rgeorgi/intent
 def setUp(self):
     self.t = IdTree.fromstring('''
     (S
         (NP
             (DT The)
             (NN teacher)
         )
         (VP
             (VBD gave)
             (NP
                 (DT a)
                 (NN book)
             )
             (PP
                 (IN to)
                 (NP
                     (DT the)
                     (NN boy)
                 )
             )
             (NP
                 (NN yesterday)
             )
         )
     )''')
     self.proj = IdTree.fromstring(
         '''(S
             (VBD rhoddodd)
             (NP
                 (DT yr)
                 (NN athro)
             )
             (NP
                 (NN lyfr)
             )
             (PP
                 (IN+DT i'r)
                 (NN bachgen)
             )
             (NP
                 (NN ddoe)
             )
         )''')
     self.aln = intent.alignment.Alignment.Alignment([(1,2), (2,3), (3,1), (5,4), (6, 5), (7, 5), (8, 6), (9, 7)])
예제 #10
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def test_swap_preterminals(self):
        t2 = self.t2.copy()
        t2.swap(0,2)

        t3 = IdTree.fromstring('''(NP (NN Fox) (DT quick) (ADJ The))''')
        l = t3.leaves()
        l[0].index = 3
        l[2].index = 1

        self.assertTrue(t2.similar(t3))
예제 #11
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def test_merge_preterminal_nodes_no_unify(self):
        t = IdTree.fromstring('''(NP (DT The) (NN Boy) (VB Ran))''')

        self.assertEqual(t.span(), (1,3))
        self.assertEqual(t[0].span(), (1,1))
        self.assertEqual(t[1].span(), (2,2))
        t.merge(0,1, unify_children=False)
        self.assertEqual(t[0].label(), 'DT+NN')
        self.assertEqual(t[0].span(), (1,2))
        self.assertEqual(t.span(), (1,3))
예제 #12
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def test_swap_nonterminals(self):
        t = self.t.copy()
        t.swap(0, 1)

        # Now, set up the leaves with the correct indices...
        t2 = IdTree.fromstring('''(S (VP (VB Ran)) (NP (DT The) (NN Boy)))''')
        l = t2.leaves()

        l[0].index = 3
        l[1].index = 1
        l[2].index = 2

        self.assertTrue(t.similar(t2))
예제 #13
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def test_merge_preterminal_nodes_unify(self):
        t = IdTree.fromstring('''(NP (DT The) (NN The) (VB Ran))''')

        l = t.leaves()
        l[0].index = 1
        l[1].index = 1
        l[2].index = 2

        self.assertEqual(t.span(), (1,2))
        self.assertEqual(t[0].span(), (1,1))
        self.assertEqual(t[1].span(), (1,1))

        t.merge(0,1, unify_children=True)
        self.assertEqual(t[0].label(), 'DT+NN')
        self.assertEqual(t[0].span(), (1,1))
        self.assertEqual(t.span(), (1,2))
예제 #14
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def test_merge_interior_nodes(self):
        t = self.t.copy()

        t[0].merge(0, 1, unify_children=False)

        self.assertNotEqual(t, self.t)

        t2 = IdTree.fromstring('''(ROOT (SBARQ (WHNP+SQ
                                                (WP Who)
                                                (VBP do)
                                                (NP (PRP you))
                                                (VP (VB believe)
                                                    (VP (VBN called))
                                                ))
                                        ))''')
        self.assertTrue(t2.similar(t))
        self.assertEqual(t2[0,0].label(), 'WHNP+SQ')

        t[(0,0)].merge(0,1, unify_children=False)
        self.assertEquals(t[(0,0,0)].span(), (1,2))
예제 #15
0
파일: treetests.py 프로젝트: rgeorgi/intent
    def internal_merge_test(self):
        t = IdTree.fromstring('''(ROOT
                                  (UCP
                                    (S
                                      (NP (PRP u-tus-u-kV-nɨŋ))
                                      (VP
                                        (RB u-tus-u-kV-nɨŋ)
                                        (ADJP
                                          (RB loĩs-ma)
                                          (JJ loĩs-ma)
                                          (S (VP (VP (VB loĩs-ma) (NP (PRP kat-a-ŋs-e)) (ADVP (RB loĩs-ma))))))))
                                    (SBAR
                                      (IN loĩs-ma)
                                      (S
                                        (NP (PRP u-tus-u-kV-nɨŋ))
                                        (VP (VBP u-tus-u-kV-nɨŋ) (RB u-tus-u-kV-nɨŋ) (VP (VB loĩs-ma) (NP (NN loĩs-ma))))))))''')

        UCP = t[0]
        self.assertEqual(len(UCP), 2)
        UCP.merge(0,1)


        self.assertEqual(len(UCP), 1)
        self.assertEqual(len(UCP[0]), 4)
예제 #16
0
파일: treetests.py 프로젝트: rgeorgi/intent
 def setUp(self):
     self.t = IdTree.fromstring('''(S (NP (DT The) (NN Boy)) (VP (VB Ran) ))''')
     self.t2 = IdTree.fromstring('''(NP (DT The) (ADJ quick) (NN Fox))''')
예제 #17
0
파일: treetests.py 프로젝트: rgeorgi/intent
 def setUp(self):
     self.t = IdTree.fromstring('''(ROOT (NP (DT The) (NP (NN Boy))))''')
예제 #18
0
파일: treetests.py 프로젝트: rgeorgi/intent
 def setUp(self):
     self.t = IdTree.fromstring('(S (NP (DT the) (NN boy)) (VP (VBD ran) (IN away)))')